1

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

我真的很想看一个例子,如何在拒绝和允许时总是触发(在每个请求上)的分层策略中定义义务(例如记录每个请求)及其内容?或者您是否必须为每个策略集/策略和规则定义单独的义务?

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

4

1 回答 1

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)
                )
            }
        }
    }
}

其他资源:

于 2014-12-15T10:25:59.363 回答