Webアプリケーションのロールベースのアクセス制御を追跡するのに最適なデータベーススキーマは何ですか?
私はRailsを使用していますが、GoogleによってリンクされたRBACプラグインはメンテナンスされていないようです(SVNへのコミットは300のみ。最新はほぼ1年前です)。
コンセプトはゼロから実装するのに十分単純ですが、複雑で重要なので、正しく理解する価値があります。
では、他の人はどのようにしてRBACモデルを設計および実装するのでしょうか。
その分野での私の基本的な知識として、RBACの基本的なアクターは次のとおりです。
Resources <-require->(one or many)Permissions。
役割 <-は->のコレクションです(1つまたは複数)権限。
ユーザー <-は->(1つまたは複数)を持つことができますロール。
このようなモデルのテーブルは次のようになります。
アプリケーションのユーザーがリソースに必要なアクセス許可を構成できるようにする場合は、ここにリソースを含めることもできます。しかし、私はそれを必要としませんでした。お役に立てば幸いです。
以下に、簡単な図を示します モスタファ氏の優れた答え
私はたまたま、ここでRBACサブシステムに取り組んでいます...偶然ですね。
私のモデルは、表示/更新する属性や実行するアクションなど、権限を必要とするシステム内のさまざまなエンティティのビルディングブロックに基づいています。もちろん、システムにはさまざまなroles(ユーザーに与えることができます)もあり、すべてをまとめる接着剤はaccess ruleです。特定の役割、特定の権限が必要なエンティティ、およびpermissionが付与されたものを接続します。アクセスルールは次のようになります。
rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission
等々。 ERDは演習として読者に残します;-)質問がある場合はコメントを残してください。
Yuval = 8-)
Restful ACL Rails plugin を使用できます。
あなたの質問に対する答えは、あなたが行きたいと思うほど深くなると思います。ロールをグループに入れ、グループをユーザーに関連付けることを考えた場合、それだけでは不十分です。最終的には、特定のオブジェクト(フォーラム、ビデオなど)に対する特定の権限をユーザーに付与する必要があります。
私はYuvalの答えにより近いです。必要なのは、プロジェクト全体のオブジェクト+アクション+ユーザーを関連付けることだけです。これを提供するには;基本オブジェクト(Entity)は完全に理にかなっています。 Entityから継承するオブジェクトはすべて、この方法でユーザー+アクションに簡単に関連付けることができます。
あなたも物事をシンプルに保ちたいので;私の提案は次のようになります。
物事をさらに一歩進めるために、以下もお勧めします(自動rbacの場合)。
しかし、悲しいかな、私が知る限り、これは.NETでのみ使用できますJavaにはカスタム属性がないため、Javaでまだ使用できる可能性は高くありません。
いくつかのコード例を考えたいのですが、それを行うのが面倒です。それでも、私のrbacのやり方について質問があれば、あなたはここに尋ねることができ、私はきっと返信します。
ロール要件 は、Restful Authenticationと非常にうまく連携して、ロールベースの認証機能を提供し、十分に維持されます。