概要
- GROWI の Access Token を拡張し、すべての API にアクセスできるようになる
- だが現状の権限は「管理者」「ユーザー」「ROMユーザー」のみで使い勝手が少し悪い
- よって部分的に管理者権限を扱えるようにする
現状
-
権限の種類は以下の3つ
- 管理者
- 通常のユーザー
- ROMユーザー
-
一方で、ユーザーグループというものは存在する
- 特定のページへの閲覧、編集権限
-
AccessToken には、部分的な権限を保存できる文字列の配列「スコープ」が存在する
- GitHub や GitLab のものに近い
理想
- ユーザーの編集可能な設定項目を細かく制御できるようにする
- とあるユーザーは管理者ではないが、管理者ページのユーザー設定を閲覧できる(編集はできない)
- とあるユーザーは管理者ではないが、管理者ページのセキュリティ設定を編集できる
- とあるユーザーは通常のユーザーだが、共有リンクの作成ができない
実現方法案
ロールベース(RBAC)
- 現状の管理者・通常のユーザー・ROMユーザーと同じように役職で権限を管理する
- わかりやすい拡張方法は例えばユーザーグループにスコープを付与していく
- ユーザーのステータスにグループ名が来るようにできる…?
-
現状特定のグループしか閲覧・編集できないところを、特定のグループは閲覧のみ、別のグループは編集も可能、そうでないユーザーは閲覧しかできない、も可能かもしれない
- 複雑
-
欠点は、ユーザーが複数グループに所属できる関係上、意図しない権限の昇格が発生する可能性がある。
- 権限が最高になるようにそのユーザーの権限を設定する
- グループやそのグループに認められたスコープが多い場合、計算量が多くなる可能性
属性ベース(ABAC)
-
本来は少し違うが、リソースベースのようなもの
-
各設定の閲覧・編集ができるかできないかをユーザーが持つスコープに付与していく
-
その API をたたけるかどうか、スコープから判断する
-
多くのユーザーに同等の権限を設定したいときに不便
- すべてのユーザーに特定の権限を付与する場合…全ユーザーに対してそれを実行する必要あり
- ユーザーグループのような既存の機能には干渉しないスコープテンプレート?のようなあらかじめ決めていたスコープを復元できる機能で少しは緩和されるか?