是否有标准或首选方式在XACML和ALFA中使用义务和建议?

时间:2014-12-12 10:10:22

标签: xacml xacml3 xacml2 alfa

我写了一些义务和建议,但我想知道是否有一种广泛接受/或正式的方式来做到这一点?换句话说:ALFA中是否有使用义务和建议的标准或首选方式?

我真的希望看到一个示例,如何在一个分层策略中定义一个义务(例如记录每个请求)及其内容,该策略将始终在deny和permit上触发(在每个请求上)? 或者您是否必须为每个策略集/策略和规则定义单独的义务?

您是否必须确定此类义务的确切内容,还是这取决于PEP的功能?

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。

虽然规范(所有版本)确实定义了义务的结构甚至是XACML 3.0的建议,但规范没有提到PEP(策略执行点)如何实现义务。如果PEP未能履行义务,即决定会发生什么,那么所有规范都会提到应该发生的事情。

从PEP代码的角度来看,最佳做法是编写一个ObligationHandler接口,您可以为不同的义务实现该接口。实现ObligationHandler接口的类的构造函数将接受XACML请求和响应。

示例

obligation emailManager = "com.axiomatics.example.obligations.emailmanager"
policy documentAccess{
    apply firstApplicable
    rule allowAccessIfClearanceSufficient{
        condition user.clearance>document.classification
        permit
        on permit {
            obligation emailManager{
                email = email
                message = stringConcatenate("Employee ", 
                                            stringOneAndOnly(Attributes.subjectId),
                                            " has obtained access to ", 
                                            stringOneAndOnly(Attributes.resourceId)
                )
            }
        }
    }
}

其他资源: