我写了一些义务和建议,但我想知道是否有一种广泛接受/或正式的方式来做到这一点?换句话说:ALFA中是否有使用义务和建议的标准或首选方式?
我真的希望看到一个示例,如何在一个分层策略中定义一个义务(例如记录每个请求)及其内容,该策略将始终在deny和permit上触发(在每个请求上)? 或者您是否必须为每个策略集/策略和规则定义单独的义务?
您是否必须确定此类义务的确切内容,还是这取决于PEP的功能?
答案 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)
)
}
}
}
}
其他资源: