Ploneのセキュリティモデル
Ploneには充実したアクセスコントロールシステムが備わっています。ログインユーザとロール(役割)をマッピングし、ロールとパーミッション(権限)をマトリックスで管理します。
この様に文字にすると非常に分かりにくく感じられるかと思います。説明会やプレゼンテーションで説明しても、うまく伝えることが出来ません。
構成要素
セキュリティをになう要素の整理すると以下のようになります。
基本要素
- ユーザ
- ロール(役割)
- パーミッション(権限)
追加要素
- グループ(ユーザを束ねるもの)
- (コンテンツそれぞれの) 状態
- 上位からの継承 及び (フォルダの) 階層
基本的な考え方
ユーザ
パスワードなどでログインをするユーザ。もしログインしていない状況の場合は匿名ユーザ(Anonymous)となる。
ユーザごとに可能なことを決める一つの単位
ロール
日本語だと役割と訳されることが多い。ユーザと結びつき、何かしらの役割を持てる。
例えば、「管理者ロール」や「編集者ロール」など
パーミッション
操作などの権限。持っているロールによって、権限を割り当てる。
例えば、「表示権限」や「編集権限」など
追加的な考え方
グループ
ユーザを束ねて管理するためのもの。グループの中にグループを作るといったことも可能。グループはユーザ同様にロールを持つことが出来る。
状態
コンテンツの状態を管理し、公開したくない物を「非表示」状態にしたり、ログインユーザだけに公開したりできる。
状態に応じて、ロールとパーミッションの関係を変更するとこ、どのロールのユーザに何が出来るかを変えられる。
例えば、ログインユーザには表示させることや、公開されたコンテンツは編集できないなど。
階層
フォルダ階層を持つことで、指定のフォルダのみ、編集可能にするユーザやグループを指定できる。これは、フォルダに対して、指定したユーザ又はグループのロールを割り当てる事ができるためです。
さらに、上位フォルダの設定を継承するかしないかを選ぶことも可能です。
Ploneの場合
ユーザとグループの管理が簡単にできるようになっています。
ロールとパーミッションの関係もデフォルトで規定されていますし、変更もWebブラウザから行うことができます。
標準的なワークフローで、各状態ごとのパーミッションマップも決められていますし、状態の追加を含む変更もWebブラウザで可能です。
フォルダによる階層の考え方が入っていますので、フォルダごとにユーザのロールを適時付け加えることが可能です。
最後に
上記の通り、Ploneでは柔軟でパワフルな設定が、Webブラウザのみで可能です。もちろん、ソースコードに書きだして使い回すこともできます。
ただ、考え方が少し難しいため、これら仕組の理解が難しい面があり、実装・変更に戸惑うシーンを良く見かけます。
正確に理解し、正確に実装できれば、管理しやすい仕組みが作り上げられることを知っていただければと思います。