関連:EnhancedAccessToken

概要

  • GROWI の Access Token を拡張し、すべての API にアクセスできるようになる
  • だが現状の権限は「管理者」「ユーザー」「ROMユーザー」のみで使い勝手が少し悪い
  • よって部分的に管理者権限を扱えるようにする

現状

  • 権限の種類は以下の3つ

    • 管理者
    • 通常のユーザー
    • ROMユーザー
  • 一方で、ユーザーグループというものは存在する

    • 特定のページへの閲覧、編集権限
  • AccessToken には、部分的な権限を保存できる文字列の配列「スコープ」が存在する

    • GitHub や GitLab のものに近い

理想

  • ユーザーの編集可能な設定項目を細かく制御できるようにする
    • とあるユーザーは管理者ではないが、管理者ページのユーザー設定を閲覧できる(編集はできない)
    • とあるユーザーは管理者ではないが、管理者ページのセキュリティ設定を編集できる
    • とあるユーザーは通常のユーザーだが、共有リンクの作成ができない

実現方法案

ロールベース(RBAC)

  • 現状の管理者・通常のユーザー・ROMユーザーと同じように役職で権限を管理する
  • わかりやすい拡張方法は例えばユーザーグループにスコープを付与していく
  • ユーザーのステータスにグループ名が来るようにできる…?

image.png

  • 現状特定のグループしか閲覧・編集できないところを、特定のグループは閲覧のみ、別のグループは編集も可能、そうでないユーザーは閲覧しかできない、も可能かもしれない

    • 複雑
  • 欠点は、ユーザーが複数グループに所属できる関係上、意図しない権限の昇格が発生する可能性がある。

    • 権限が最高になるようにそのユーザーの権限を設定する
    • グループやそのグループに認められたスコープが多い場合、計算量が多くなる可能性

属性ベース(ABAC)

  • 本来は少し違うが、リソースベースのようなもの

  • 各設定の閲覧・編集ができるかできないかをユーザーが持つスコープに付与していく

  • その API をたたけるかどうか、スコープから判断する

  • 多くのユーザーに同等の権限を設定したいときに不便

    • すべてのユーザーに特定の権限を付与する場合…全ユーザーに対してそれを実行する必要あり
    • ユーザーグループのような既存の機能には干渉しないスコープテンプレート?のようなあらかじめ決めていたスコープを復元できる機能で少しは緩和されるか?