我正在查看XACMLv3 specs,如果其中一个组合算法允许基础规则或策略对请求中的不同属性集起作用,则会对策略和策略集的适用性提出疑问,返回有效的回复。 例如,策略将定义两个规则,第一个规则作用于属性[A,B,C],第二个规则将作用于属性[A,B,D],规则组合算法为First-applicable 。我的问题是该策略适用于哪些属性:它是否仅适用于完整的属性集[A,B,C,D],还适用于子集[A,B,C]和[A,B, D]:即如果属性集是完整集,或者是否也对子集进行了评估,那么是否选择此策略进行评估? 2.2和2.3部分未提及此事。
答案 0 :(得分:1)
PDP将尝试匹配rule 1
的传入请求;如果匹配,PDP将回复Permit
或Deny
,评估将停止。如果rule 1
不匹配,则PDP会尝试与rule 2
匹配。如果匹配,则PDP会回复Permit
或Deny
。如果rule 1
或rule 2
都不匹配,则PDP返回NotApplicable
。
答案 1 :(得分:0)
请查看C.8节以获取完整的伪代码
Decision firstApplicableEffectRuleCombiningAlgorithm(Rule[] rules)
{
for( i = 0 ; i < lengthOf(rules) ; i++ )
{
Decision decision = evaluate(rules[i]);
if (decision == Deny)
{
return Deny;
}
if (decision == Permit)
{
return Permit;
}
if (decision == NotApplicable)
{
continue;
}
if (decision == Indeterminate)
{
return Indeterminate;
}
}
return NotApplicable;
}
这意味着在您的情况下评估第一个规则(这意味着属性[A,B,C]将适用)
- 如果有&#34; Permit&#34;或者&#34;拒绝&#34;然后它不会进一步评估第二条规则(这意味着[A,B,D]属性不会被评估)。
- 如果有&#34; NotApplicable&#34;那么它将进一步评估第二个规则(这意味着属性[A,B,D]将适用)
我实际上自己使用这个免费的Xacml Editor。它是一个非常好的,易于使用的基于gui和语法指导的编辑器,可以非常方便地创建XACML文档。您需要做的就是在他们的网站上创建一个帐户,然后您可以下载它。
P.S。我为提供此XACML编辑器的公司工作。
答案 2 :(得分:0)
当且仅当其<Target>
与请求匹配时,选择策略(集)进行评估,而不管内部是否有任何子规则,策略等。
在您的情况下,如果请求属性是:
...但是策略的目标是:subject-organization = 'Wayne'
和subject-role = 'role2'
(使用AND的XACML AllOf),即使策略有规则,也不会选择策略进行评估rule1
使用Target匹配请求的所有最后3个属性:
subject-auth-method = 'basic'
和resource-id = 'res1'
以及action-id = 'read'
不会评估政策中的任何规则。