解决 XACML 策略冲突
Resolving XACML policy conflicts
XACML 如何处理策略冲突?如果 PAP(策略管理点)在包含的两个 policy.xml
文件中有两个不同的 <policy>
元素,其中两个策略具有相同的 Target
,将评估哪一个?这两项政策都包含在 <policy>
不同的文件中。
如果两个 <policy>
元素都在 <PolicySet>
内,它将使用 PolicyCombiningAlgId
。但是,由于它们存在隔离,XACML 引擎如何处理这个问题?
(注意:我清理了你的问题,因为你有很多 XACML 错误)。
有两种方法可以解决 XACML 中的冲突。它们是:
- 策略组合算法。这些设置在 PolicySet 元素内部,用于组合 PolicySet 子元素(Policy 和 PolicySet 元素的混合)的结果。
- 规则组合算法。这些设置在内部 Policy 元素用于组合 Rule children 的结果。
您的问题最具体地与您配置了具有多个策略的策略决策点 (PDP)(而不是您编写的 PAP)的情况有关。哪一个赢了?由于其中 none 被包装,因此没有任何组合算法可供选择。此行为未在 XACML 标准中定义,将取决于您使用的 XACML 引擎。
例如,Axiomatics XACML 引擎强制您始终选择根策略(集),即引擎将其视为其入口点的策略(集)。仅当根策略引用它们时,才会使用传递给 PDP 的任何其他策略。
如果您想了解有关组合算法的更多信息,请查看我最近写的 blog post。
XACML 如何处理策略冲突?如果 PAP(策略管理点)在包含的两个 policy.xml
文件中有两个不同的 <policy>
元素,其中两个策略具有相同的 Target
,将评估哪一个?这两项政策都包含在 <policy>
不同的文件中。
如果两个 <policy>
元素都在 <PolicySet>
内,它将使用 PolicyCombiningAlgId
。但是,由于它们存在隔离,XACML 引擎如何处理这个问题?
(注意:我清理了你的问题,因为你有很多 XACML 错误)。
有两种方法可以解决 XACML 中的冲突。它们是:
- 策略组合算法。这些设置在 PolicySet 元素内部,用于组合 PolicySet 子元素(Policy 和 PolicySet 元素的混合)的结果。
- 规则组合算法。这些设置在内部 Policy 元素用于组合 Rule children 的结果。
您的问题最具体地与您配置了具有多个策略的策略决策点 (PDP)(而不是您编写的 PAP)的情况有关。哪一个赢了?由于其中 none 被包装,因此没有任何组合算法可供选择。此行为未在 XACML 标准中定义,将取决于您使用的 XACML 引擎。
例如,Axiomatics XACML 引擎强制您始终选择根策略(集),即引擎将其视为其入口点的策略(集)。仅当根策略引用它们时,才会使用传递给 PDP 的任何其他策略。
如果您想了解有关组合算法的更多信息,请查看我最近写的 blog post。