4

この質問は、RBACシステム自体のデータベース設計に関するものではなく、そのWebアプリケーションでユーザーがコンテンツを送信できる場合に、このデータベースをアプリケーション固有のデータベースと組み合わせて使用​​する方法に関するものです。

現状では、私のRBACは、スタッフがレコードを追加および更新できる単純なバックエンド管理アプリケーションで簡単に機能するはずです。たとえば、オンラインストアには、通常、ユーザーが送信したコンテンツはありません。2つのデータベースは分離したままにすることができます。ただし、ユーザーがコンテンツを送信できるWebサイト/アプリケーションでRBACデザインを再利用する方法がわかりません。レコードを追加/更新するためのアクセス許可を必要とする2つのデータベースに2つのユーザーテーブルがあります。

  1. RBACデータベースをWebサイトデータベースに組み込み、ユーザーテーブルを共有しますか?

  2. 2つを別々に保ちますか?

  3. 他に何かしますか?

オプション2の場合、次のようにします。

  • (A)WebサイトデータベースからRBACユーザーテーブルにユーザーを複製します

  • (B)Webサイトデータベースのユーザーテーブルとの関係を作成します

  • (C)Webサイトユーザー用にWebサイトデータベース内に新しいRBACシステムを作成し、管理者ユーザー用に個別のRBACを用意しますか?

データを複製しているのでAは悪いようですが、実装はかなり簡単なようです。Bは、2つの別々のユーザーテーブルとの関係を作成するのが難しいようです。Cも重複していますが、「管理者」のRBACに影響を与えることなく、このRBACを大幅にカスタマイズできます。

基本的に、RBACシステムを可能な限り再利用できるようにしたいのですが、アプリケーション固有のユーザーがコンテンツを送信できるようにすることで、頭を悩ませるのが少し難しくなります。

私のこの小さなRBACシステムは、ほとんど私が学ぶための方法なので、一般的な「フレームワークx / y/zを使用する必要があります」は使用しないでください。最近発見した用語を使用すると、私はややオタクであり、興味があるときはいつでもそれらを再発明したいと思っています!:)

私は自分のサイトにMySQLとPHPを使用しますが、ここで質問しているのはデータベース設計であるため、これは問題ではありません。

私の質問が明確でない場合は、私に知らせてください。さらに説明します。いつもありがとうございました。

4

2 に答える 2

0

完全な実装がわからないため、最初のソリューションに傾倒しており、1 つのユーザー テーブルのみを使用しています。次に、オンライン アプリケーションは RBAC にクエリを実行して、ユーザーが特権を持っているかどうかを判断できます。明確でないのは、必要なアプリケーション属性の数と、それらが格納される場所です。データベースに保存する必要があるユーザー属性がある場合は、RBAC への外部キー参照を使用してアプリケーションにユーザー テーブルを作成し、そのデータを 2 か所に保存することなくアクセス権限を決定できます。これがどれほど複雑になるかは、ユーザーとその属性を追加および更新できる場所の数によって異なります。物理的なデータベース構造は、ビジネス ルールとアーキテクチャに大きく依存しますが、論理的な設計では、データを 1 つのテーブルに保持することになります。

于 2011-05-30T21:29:49.683 に答える
-1

このサイトをご覧ください 詳細な役割ベースのアクセス制御 (RBAC) システム http://sqlrecipes.com/forum/threads/fine-grained-role-based-access-control-rbac-system.3/

于 2012-02-08T17:26:49.000 に答える