0

これは、学習目的で XACML/ABAC を介して実装しようとしている要件です。

情報モデル

  • リソース: 建物、ユニット

    • 多くの建物があります (例: B1、B2、B3、... Bn)
    • 各建物には多くのユニットがあります (つまり、ユニットは建物の子です) (例: B1U1、B1U2、B1U3、...)
  • 件名: ハウスキーピング スタッフ

ルール

  • ハウスキーパーは、次の場合に「ユニット」を「開く」ことができます。
    • その「ユニット」に対する「オープン」権限を持っている、または
    • その「ユニット」がある「建物」の「オープン」権限を持っている場合。

ポインタはありますか?

アップデート

本質的にここに私の懸念があります。要件が次のようなものである場合、ハウスキーパーは「unitX」の「開く」権限を持っている場合、「unitX」を「開く」ことができます。ここでは、簡単なルールを書きます。

ただし、私の実際の要件では、懸念事項は次のとおりです。

  1. 特定のリソースは 1 つではなく、同じ種類のリソースが多数あるため、リソースごとに個別のポリシーを作成する必要がありますか? 元。「B1」を構築するための別のポリシー、「B2」のための別のポリシーなど?

  2. ポリシーは、建物とユニットの間の階層関係をどのように「認識」しますか。

これについてさらに考えてみると、次のアプローチが機能するはずだと思います(?)

  1. リクエストには以下が含まれます

resource: /{buildingId}/{unitId} //これは、ポリシーが親子関係を知る方法です

アクション: 開く

subject: subjectId と、おそらくこのサブジェクトが持つすべての権限 (権限を表す方法をまだ考えていますか、何か提案はありますか?)

  1. ルールで 1 つのポリシーを定義します: // 疑似コード if(subject.permissions include open on {buildingId} OR open on {unitId}) then permit else deny

助言がありますか?

ありがとう、

ジャティン

4

1 に答える 1