現在、Web アプリケーション (ASP.NET) でユーザー ロールとアクセス許可システムを設計していますが、従来のロール ベースのアクセス制御 (RBAC)に収まらないケースがいくつかあるようです。いくつかの質問を投稿します。それぞれが特定のケースに当てはまります。これは私の 2 番目の質問です (最初の質問はここにあります: Non RBAC User Roles and Permissions System:ching the user's City )。
次のケースがあります: Web アプリケーションにManager ロールを実装する必要があります。ただし、マネージャーは1 つまたは複数の会社(この Web アプリを作成している大きな会社グループ内) に属することができます。たとえば、「A社とB社のマネージャー」、「C社のマネージャー」などがあります。
マネージャーが所属する会社に応じて、マネージャーは特定の操作にアクセスできます。たとえば、マネージャーは自分が所属する会社のクライアントとのみ通信できます。つまり、「A社とB社のマネージャー」は、A社とB社のクライアントとのみ連絡を取ることができ、C社のクライアントとは連絡を取ることができません。また、C社ではなくA社とB社のクライアントの詳細ページを表示することもできます。 .
このケースは RBAC に該当するようです。しかし、実際にはそうではありません。Companies プロパティを持つManagerRole クラスを作成する必要があります。つまり、これは (従来の RBAC のように) アクセス許可のコレクションとしての単なるロールではなく、プロパティを持つロールになります!
これは、プロパティを持つロールの一例にすぎません。他にもあります。たとえば、多くの会社にも属し、他のカスタム プロパティも持つ管理者ロールなどです。
これは、階層またはロール クラスを作成することを意味します。
class Role – base class
class ManagerRole : Role
List Companies
class AdministratorRole : Role
List Companies
Other properties
いくつかのシステムで純粋な RBAC とその実装を調査しましたが、それぞれがカスタム プロパティを持つ階層またはロールを特徴とするシステムは見つかりませんでした。RBAC では、ロールは単なるアクセス許可のコレクションです。
ManagerPermission、AdministratorPermission などのプロパティを持つパーミッションを使用してケースをモデル化できますが、これには多くの欠点があります。主な理由は、「A 社と B 社のマネージャー」のような役割をユーザーに直接割り当てることができないことです。ただし、A社とB社のManagerPermissionを含むロールを作成する必要があります...さらに、「マネージャー」は、言語の観点からは「許可」というよりもむしろ「役割」(社内での地位) のようです。
このテーマに関するアイデアや、この分野での経験に感謝します!
ありがとうございました。