最近、アプリケーションで使用するのに最適なアクセス制御モデルを検討しています。私はRBACについて読んでいますが、役割の概念は優れています(特に、さまざまな権限が大量にある場合)。ただし、次のような階層型ユーザー管理にどの程度適用できるかはわかりません。
すべてのユーザーは1つ以上のグループに属しています。グループはツリーに編成されます(ディレクトリ構造のように)。グループとユーザーの両方にアクセス許可(またはRBACについて話している場合はロール)を割り当てることができ、おそらく何らかの継承(つまり、ユーザーとグループが属するグループのアクセス許可を継承する)とオーバーライド機能が必要です。グループ自体の目的は、権限の管理だけではありません。アプリ内で他の用途もあります。
パーミッションは非常に細かく、ロールはよりモノリシックであるため、パーミッションがロールなしで使用された場合(「ロール」はRBAC用語でのパーミッションのコレクション)、上記のすべてをさらに設計して実装するのにそれほど問題はないと思います。グループ/ユーザーレベルでのアクセス許可の継承/オーバーライドの実装はそれほど難しくありません。ロールで同じことを行うのはおそらくもっと難しいでしょうが、一方で、ロールは平均的なユーザーにとってより簡単に理解できます。
現在、私自身、「許可のみ」のモデルに傾倒しています。理由は次のとおりです。
- アプリにはおそらく30を超える異なる権限はありません。
- グループ自体を使用して権限を設定できます。これにより、ロールの利点の1つである複数のユーザーの権限管理が容易になります。
- コンセプトは明確で、実装が簡単なようです
ただし、「許可のみ」のモデルよりも優れた、論理的で理解しやすい役割ベースのモデルが提示された場合は、それを真剣に検討します。上記の要件に適用/適応できる、明確に定義されたRBACモデル(ペーパー、実装など)がすでに利用可能ですか(私はしばらくの間それらを探していましたが、私が見つけたものは制限が多すぎるか、しませんでした階層的なユーザー管理を取り入れないでください)?この問題についてのあなたの全体的な意見は何ですか?この場合、RBACはそれだけの価値がありますか?