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

ヘルプ:ACL(アクセス制御リスト)とは

[ ヘルプ ]


YakiBikiのACL(アクセス制御リスト)とは?

YakiBikiのACLとは、記事の読み・書き権限をユーザーやグループ毎に設定した一覧の事です。
記事毎に権限を設定してしまうと、記事を作成する都度「誰に見せて、誰からは隠して・・・」を考えなければなりません。
YakiBikiでは、権限のセットをあらかじめACLとして登録しておき、記事を作成するときはどのACLを設定するかだけを考えれば良いようにしています。

権限について

YakiBikiでは「権限」と呼ばれる概念が大別して二種類存在します。

管理機能に対する「権限」
ユーザー管理権限、グループ管理権限、ACL管理権限・・・というふうに、個別のシステム管理機能の使用許可フラグです。
管理権限はユーザー毎に個別に設定可能です。システム管理権限を与えられたユーザーだけが、自他含めたユーザーの管理権限を変更できます。
データアクセスに対する「権限」
ACLを構成する情報で、ユーザーまたはグループと関連づけられます。

以降の説明は、YakiBikiのACLを構成する「データアクセスに対する権限」の話題になります。

YakiBikiには次の3種類の権限があります。

  • 不可視(アクセス不可)
  • 読みのみ
  • 読み書き両方

「読みは出来ないが、書きは出来る」という権限はありません。また「削除」権限は存在しません。
YakiBikiでは、記事の作成者およびシステム管理者のみがその記事を削除できます。
とはいえ、本当にデータを削除するのは勿体ないです。
"プライベート"モードのACLがあれば、ACLをそれに付け替えることで他の全ユーザーから「削除された」ことに出来ますので、それで済ませても良いでしょう。

なお、 システム管理者はACLを無視して全ての記事の読み書き・削除が可能 という点に注意してください。

ACLと権限の設定

ACLはACL管理権限およびシステム管理権限を持つユーザーのみが編集可能です。
ACLの主な構成要素は以下の3つになります。

  • ポリシー
  • ユーザー毎の権限リスト
  • グループ毎の権限リスト

権限リストではユーザー/グループ毎に、前述の3種類の権限を設定可能です。
権限を設定するユーザー/グループはACLに明示的に追加していきます。
ACLに追加されていないユーザー/グループに対しては、後述の特殊ユーザーに対する権限が適用されます。

権限の衝突とYakiBikiのACLの"ポリシー"について

ユーザーおよびグループ毎に権限を設定できるとなると、どうしても衝突の可能性が生じます。
例えばグループAには読みのみ、グループBには読み書き権限を設定しているとして、AとB両方に所属しているユーザーはではどちらの権限になるのでしょうか?

YakiBikiではACLに"ポリシー"という設定を設けることで、衝突の解決を試みます。
ポリシーには次の2種類があります。

  • 緩い権限を優先 (Positive Policy)
  • 厳しい権限を優先 (Negative Policy)

「緩い」「厳しい」というのは、上述の3種類の権限についての表現です。もちろん「不可視」が一番厳しく、「読み書き」が一番緩い権限になります。

「緩い権限を優先」(Positive Policy)
ユーザーが要求した操作(読み or 書き)より緩い権限が一つでもあればその操作を許可します。
「厳しい権限を優先」(Negative Policy)
ユーザーが要求した操作(読み or 書き)より厳しい権限が一つでもあればその操作を拒否します。

特殊なユーザー「未ログイン状態のユーザー」と「ログインに成功した全てのユーザー」

権限を設定する画面で、「未ログイン状態のユーザー」と「ログインに成功した全てのユーザー」という二つのユーザーがあります。
これは文字通りの意味ですが、この2ユーザーの権限は他のユーザーやグループとは異なる判断をされます。
あるACLに、ACLをチェックするユーザーの権限が設定されていないときに、この特殊ユーザーの権限がチェックされるようになります。
従って以下のような例では、ユーザーAとグループX, グループYに所属するユーザー「以外」のログインユーザーがアクセスしたときに、初めて「読み」が許可されます。

未ログイン状態のユーザー 不可視
ログインに成功した全てのユーザー 読み
ユーザーA 不可視
グループX 不可視
グループY 不可視

実際の設定例

実際のACLの設定例によく使うであろうACLの設定パターンを載せました。下記リンクをご参照下さい。
ヘルプ:ACLの設定例




[ ヘルプ ]