アクセス管理とかなんとか
自分用思いつきメモ
思いつきを忘れないうちに殴り書き。
未だ練りきれていないと言い訳をしつつ、適当すぎるのは(俺という人間の)仕様です。
前提
各アイテムは次の3層構造を基にアクセス権を定義する。
- アイテム
- アクセス権の管理対象となる個々の情報を所有するオブジェクト→ユーザとか。
- グループ
- アイテムをまとめたもの
- グループレイヤー
- グループをまとめたもの
0:デフォルト参照条件
デフォルトでは参照不可
1:グループレイヤーの定義
グループをまとめたグループのレイヤーに関する属性を定義、各属性は順序性、排他性、階層性の3種類?
- 順序性
- 同一レイヤー内の各グループ間には順序関係が存在。偉いとか偉くないとかそんな関係
- 排他性
- 同一レイヤー内の各グループは排他関係をもつ。各アイテムは同一レイヤー内の他のグループに所属できない。2股禁止。
- 階層性
- 同一レイヤー内の各グループは階層関係の構造をもつ。階層性がないレイヤーは1階層のグループ構造(並列)。
2:グループ作成
各グループレイヤー内に個々のアイテムをまとめるグループを作成。各グループ内のアイテムは相互参照可能になる。なお参照属性として読み込み、書き込み、編集を定義。(読み込みは必須にした方が良いかしら?)
- 読み込み
- 参照先グループの各アイテムの情報を読む事ができる
- 書き込み
- 参照先グループの各アイテムの情報に項目の新規追加する事ができる
- 編集
- 参照先グループの各アイテムの情報の項目を修正、削除することができる
3:グループ間関係性の定義
各グループ間の参照関係性を定義。方向性は一方行のみ(A→Bのみで、A⇔Bはない)。参照属性として読み込み、書き込み、編集を定義。
4:グループ内権限の作成
グループ内にグループ管理の権限を作成、権限は下記の通り
- モデレータ
- グループに所属するアイテム、グループ内の参照属性を変更する事ができる、グループに所属しなくても可
- メンバー
- グループに所属するアイテム
5:グループにアイテムを所属
4で作成した権限に応じて各アイテムをグループに所属させる。
6:アクセス権の取得
選択的に重ねた各グループレイヤーの射影からアクセス権を抽出。どのグループレイヤーを使用するかは、そのときに応じて任意に選択。各グループレイヤー内のグループ関係性は和で定義。
なお、アクセス権として出力されるのはアイテム対アイテムの関係性。INPUT(アイテム), OUTPUT(複数アイテム)みたいな感じ
。。。と一通り殴り書いてみて
まだまだ穴だらけなんで、じっくり考えないとなぁ。。。精進します。
各機能ごとのアクセス権の定義とかはどうしたらよかんべ。。。