これは仕様によるものです。XACML 仕様では、Permit または Deny のいずれかで返される義務とアドバイスのみが許可されています。ポリシーを作成するときは、このことを念頭に置いておく必要があります。以下とここを参照してください。
7.18 義務とアドバイス
ルール、ポリシー、またはポリシー セットには、1 つ以上の義務またはアドバイスの式が含まれる場合があります。そのようなルール、ポリシー、またはポリシー セットが評価される場合、義務またはアドバイスの式は、それぞれ義務またはアドバイスに評価されなければならず、評価の次のレベルに渡されます (包含または参照ポリシー、ポリシー セット、または承認決定) は、評価されるルール、ポリシー、またはポリシー セットの結果が義務の FulfillOn 属性またはアドバイスの AppliesTo 属性の値と一致する場合にのみ使用されます。一致する FulfillOn または AppliesTo 属性を持つ義務またはアドバイス式の属性割り当て式のいずれかが「不確定」と評価される場合、ルール、ポリシー、またはポリシー セット全体が「不確定」である必要があります。FulfillOn または AppliesTo 属性が結合アルゴリズムまたはルール評価の結果と一致しない場合、責務またはアドバイス式の不確定要素は無効になります。この手順の結果として、引き出されたルール、ポリシー、またはポリシー セットが評価されない場合、またはそれらの評価結果が「不確定」または「適用不可」である場合、義務またはアドバイスは PEP に返されないものとします。ルール、ポリシー、またはポリシー セットを評価した結果の決定が、含まれているポリシー セットを評価した結果の決定と一致しない場合。PDP の評価がルール、ポリシー セット、およびポリシーのツリーとして表示され、それぞれが「許可」または「拒否」を返す場合、その場合、PDP から PEP に返される義務とアドバイスのセットには、評価の各レベルでの結果が PDP によって返される結果と同じであるパスに関連付けられた義務とアドバイスのみが含まれます。決定論の欠如が受け入れられない状況では、ordered-deny-overrides などの決定論的な結合アルゴリズムを使用する必要があります。セクション 7.2 も参照してください。
NotApplicable に関する義務とアドバイスを考慮するのは面倒です。次のポリシー構造を想像してください。
- PolicySetメイン ポリシー
- ポリシー管理者がドキュメントを表示できるようにする+ NotApplicable の義務 A
- ポリシー従業員が自分の部門でドキュメントを表示できるようにする+ NotApplicable の義務 B
- ポリシー発行者にドキュメントの閲覧と発行を許可 + 許可の義務 C
入ってくるリクエストが次のようなものだと想像してください:
- リクエスト: 発行者の Alice は doc #123 を発行できますか?
あなたの世界では、応答は次のようになります (可能性があります): 許可 + 義務 A、B、C
本当に意味がありません。