2

Spring 3.0(Spring MVC、Spring Security、Spring Roo、Hibernate)を使用してサービスとしてソフトウェアを作成しています

柔軟なアクセス制御リストのメカニズムを考え出す必要があります。3種類のユーザーがいます。

  • システム(システムに対して何でもできる人、管理者デーモンと内部デーモンを含む)
  • 運用(ユーザーや組織を追加および削除したり、ユーザーや組織に代わって保守作業を行ったりできる担当者)
  • エンドユーザー(1つ以上の組織に属し、組織ごとに、ユーザーは組織管理者や組織の読み取り専用メンバーなどの1つ以上の役割を持つことができます)(orgadminのような役割はその組織のユーザーを追加することもできます)

今私の質問は、ユーザーのエンティティをどのようにモデル化する必要があるかということです。

エンドユーザーだけを取り上げると、1つ以上の組織に属することができるため、各ユーザーにはその組織への一連の参照を含めることができます。しかし、各組織のユーザーの役割をどのようにモデル化するのでしょうか。

たとえば、ユーザーUXは組織og1、og2、og3に属しており、og1の場合はorgadminとorg-read-only-userの両方であり、og2の場合はorgadminのみであり、og3の場合はorg-read-onlyのみです。 -ユーザー

各ユーザーを1つの組織だけに所属させる可能性はありますが、それによってシステムが制限され、そのアイデアは好きではありません(ただし、要件は満たされます)。

より拡張可能なACLアーキテクチャを使用している場合は、それを提案してください。サービスとしてのソフトウェアであるため、同じシステムであれば、多くの異なる組織が参加することが予想されます。og1とog2のデータを同じDBに保持するのは良い考えではないという懸念が1つありました(og1がシステムに100個のレポートを生成することを決定した場合、og2は影響を受けないはずです)しかし、それは今のところ進んでいることであり、そうではありませんACLに直接関連しますが、データの物理的な配布とそれらのACLに基づくサービスのセットアップに関連します

これはコミュニティWikiの質問です。修正したいことはすべて修正してください。ありがとう

4

1 に答える 1

2

1人のユーザーが複数の組織に所属でき、1つの組織内で複数の役割を持つことができるのは問題ありません。典型的な役割ベースのアクセス制御モデルでは、グループを持つことができます。また、役割はグローバルな役割(システム管理者など)にすることも、グループ内でのみ有効にすることもできます。保護したデータ要素は、それに応じてグループに分割する必要があります。ユーザーが1つのデータグループにアクセスするときは、最初にそのユーザーがそのグループに対する権限を持っているかどうかを確認します。次に、そのグループの彼/彼女の権利をロードします。独自のaclserviceで拡張しない限り、これをSpringSecurityACLで行うのは困難です。これは、SpringACLフィルターのパフォーマンスの問題と同じです。最終的には、セキュリティの一部を何らかの方法でビジネスロジックに組み込む必要があります。

于 2010-07-30T03:21:47.387 に答える