home ホーム search 検索 -  login ログイン  | help ヘルプ

ヘルプ:ACLの設定例

[ ヘルプ ]

YakiBikiのACLはポリシーがあるため、分かりづらい事は否めません。
ここでは実際のACLの設定例をいくつか挙げ、よく使う設定パターンで困らないようにしておきます。

なお一般的なBlogやWikiで最低限必要と思われるACLが、YakiBikiのセットアップ時(setup.php)に自動的に追加されます。
個人で利用する場合は、それらデフォルトのACLだけで事足りる場合もあるでしょう。


「一般公開」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「読みのみ」
ログインに成功した全てのユーザー 「読みのみ」

普通に外部公開する場合で、データの作成者しか変更できなくて構わない場合はこの設定になります。
一般的なBlog記事を作成する場合はこれで問題ないでしょう。

「一般公開フリーWiki」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「読み書き」
ログインに成功した全てのユーザー 「読み書き」

誰でも読み書きできます。Wikiとして広く一般に編集参加を求める場合はこの設定になります。
ただし、未ログインユーザーでも書き込めてしまう点は問題となる場合が多いでしょう。

「一般公開Wiki」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「読み」
ログインに成功した全てのユーザー 「読み書き」

コミュニティから編集者を募るWiki向けのACLとしては、これがデフォルトになるでしょう。
未ログイン状態の外部ユーザーは記事を閲覧のみでき、ログインメンバーのみが編集可能です。

「プライベート(下書き)モード」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「不可視」
ログインに成功した全てのユーザー 「不可視」

記事を作成した本人のみが見ることができて、編集できます。秘密の日記を書くときや、記事を下書き状態で保存したい場合はこのACLを使うことになるでしょう。

「グループAのみ公開」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「不可視」
ログインに成功した全てのユーザー 「不可視」
グループA 「読み」

グループAのメンバーのみ表示可能です。グループや部門内、サークルメンバーなどの間でちょっとした機密性のあるドキュメントをやりとりしたいときはこのACL設定になるでしょう。

「グループAとユーザーXのみ公開」

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「不可視」
ログインに成功した全てのユーザー 「不可視」
ユーザーX 「読み」
グループA 「読み」

「グループAのみ公開」の発展系です。
この辺までは権限の衝突が発生しないケースなので、ポリシーはどちらでも良かったりします。

「グループAには公開するけど、グループAに所属するユーザーYには非表示」

仲間はずれみたいでアレですが、こういう時もあるかもしれません。

ポリシー 「厳しい権限を優先」
未ログイン状態のユーザー 「不可視」
ログインに成功した全てのユーザー 「不可視」
ユーザーY 「不可視」
グループA 「読み」

ポリシーに「厳しい権限を優先」にします。

ここで、YakiBikiによるACLの権限評価の内部動作を見てます。
まず、YakiBikiはグループに所属するユーザーを取り出してACLのユーザー権限と統合、展開します。
グループAに{ユーザーX, ユーザーY, ユーザーZ}が所属していれば、統合・展開すると以下のようになります。

ユーザーX 「読み」
ユーザーY 「不可視」、「読み」
ユーザーZ 「読み」

ユーザーYにのみ、ACL側で「不可視」が追加されています。ここでポリシーが適用されます。
ポリシーは「厳しい権限を優先」なので、「不可視」が優先されます。これにより、次のように評価されます。

ユーザーX 「読み」
ユーザーY 「不可視」
ユーザーZ 「読み」

これでユーザーYの時のみ、同じグループAであるのに「不可視」が適用されるようになります。
ちなみにグループA以外のユーザーおよび未ログイン状態は、上記のように展開されたユーザーに含まれていないため、そのまま「ログインに成功した全てのユーザー」と「未ログイン状態のユーザー」に設定した「不可視」が適用されます。

「ログインユーザーに公開、グループAは書きもできるが、グループBには非公開」

グループBがかわいそうです。このような仕打ちを受けるほどの何かをしてしまったのでしょうか。

ポリシー 「緩い権限を優先」
未ログイン状態のユーザー 「不可視」
ログインに成功した全てのユーザー 「読み」
グループA 「読み書き」
グループB 「不可視」

ポリシーがPositive Policyになっているため、グループAとグループBの両方に所属するユーザーは緩い権限の方、つまりグループAの「読み書き」権限が適用されます。
もしもグループBに所属するユーザー全員に対してとにかく不可視にしたい場合は、ポリシーを「厳しい権限を優先」に変更します。




[ ヘルプ ]