在XACML义务中,为什么“fulfillOn”属性保留为许可和&只拒绝?

时间:2015-11-18 11:29:44

标签: authorization access-control xacml xacml3 abac

不知道为什么Obligations语句中的WSO2 Balana框架只接受“允许”或“拒绝”条件的fulfillOn参数,但忽略了“不适用”结果,这也可能对逻辑流程中的拦截和文档感兴趣协助策略调试过程。

在Balana ObligationExpression.java的源代码中,我们找到:

if("Permit".equals(effect)){
            fulfillOn = Result.DECISION_PERMIT;
        } else if("Deny".equals(effect)){
            fulfillOn = Result.DECISION_DENY;
        } else {
            throw new ParsingException("Invalid FulfillOn : " + effect);
        }

您对此有何看法,这种逻辑是否正常?

1 个答案:

答案 0 :(得分:0)

这是按规格。 XACML规范仅允许在Permit或Deny中返回义务和建议。在构建策略时,您必须牢记这一点。见下文和here

  

7.18义务和建议

     

规则,策略或策略集可能包含一个或多个义务或建议表达式。在评估此类规则,政策或政策集时,应将义务或建议表达式分别评估为义务或建议,并将其传递到下一级评估(附上或参考政策,政策集或授权决策)仅当被评估的规则,策略或策略集的结果与义务的FulfillOn属性或建议的AppliesTo属性的值匹配时。如果具有匹配的FulfillOn或AppliesTo属性的义务或建议表达式中的任何属性赋值表达式求值为“Indeterminate”,则整个规则,策略或策略集应为“Indeterminate”。如果FulfillOn或AppliesTo属性与组合算法或规则评估的结果不匹配,则义务或建议表达式中的任何不确定都不起作用。   作为此程序的结果,如果未对其中提取的规则,政策或政策集进行评估,或者其评估结果为“不确定”,则不应向PEP返回任何义务或建议。或者" NotApplicable",或者,如果评估规则,策略或策略集所产生的决策与评估封闭策略集所产生的决策不匹配。   如果将PDP的评估视为规则,策略集和策略树,则每个规则都会返回" Permit"或者"拒绝"然后,PDP向PEP返回的义务和建议集将仅包括与那些路径相关的义务和建议,其中每个评估级别的结果与结果相同由PDP返回。在任何缺乏确定性是不可接受的情况下,应使用确定性组合算法,例如有序拒绝覆盖。   另见第7.2节。

承担义务&关于NotApplicable的建议会很混乱。想象一下以下政策结构:

  • PolicySet 主要政策
    • 政策允许管理员在NotApplicable上查看文档 +义务A
    • 政策允许员工查看自己部门的文件 + NotApplicable的义务B
    • 政策允许发布商查看和发布文档 +许可证C on Permit

想象一下,请求是:

  • 请求:发布者是否可以发布文档#123?

在你的世界里,回应将是(可能):许可+义务A,B,C

它没有任何意义。