我在 ALFA 中制定了政策,其中:
- 如果转帐金额大于转帐限额,则应拒绝该请求。
我想知道如何指定特定的传输限制。从管理员的角度来看,如果将来我想更新传输限制,应该在哪里以及如何完成?
例如,我想将当前转账限额设置为$2000。如果我愿意,我该怎么做,然后如何更新传输限制?
为了补充 David 提到的内容,您可以在数据库单元格中设置此值并离线更新其 ABA/XACML 值(使用您组织中的其他流程)。然后可以在评估时查询该值,方法是告诉您的 PDP是使用 SQL“ ”withdrawalLimit
从特定数据库查询的select limit from ....
所以,这就是 XACML 的优势,因为规则是在策略中定义的,您可以以动态的方式更新访问控制规则。您的 XACML 策略中可能已配置传输限制。您可以通过编辑 XACML 策略使用 更新它。然后必须为 PDP 运行时保留此更新,并根据它切断请求。
ALFA
插件将具有更新 XACML 策略属性的简单方法,而不仅仅是更新原始策略。希望你能找到它。但是,如果您更新 XACML 策略,它也会起作用。
很高兴看到你在进步。在您的情况下,ALFA 中的授权策略如下所示:
namespace com.axiomatics.banking{
attribute actionId{
category = actionCat
id = "actionId"
type = string
}
attribute resourceType{
category = resourceCat
id = "resourceType"
type = string
}
attribute amount{
category = resourceCat
id = "amount"
type = double
}
/**
* Policy to transfer money
*/
policy transferMoney{
target clause actionId=="transfer" and resourceType=="money"
apply firstApplicable
/**
* Deny access if amount is greater than 2000
*/
rule checkAmount{
target clause amount > 2000
deny
}
/**
* Grant access
*/
rule allow{
permit
}
}
}
请注意,在我的示例中,我使用否定规则来拒绝访问。这很好,例如,如果我想在该规则中添加Advice
或Obligation
指示拒绝的原因。
现在您的问题与政策结构没有太大关系,而是与属性的值有关。在 XACML 中,您有两种选择。任何一个:
在后一种情况下,您的规则变为:
/**
* Deny access if amount is greater than the user's withdrawal limit
*/
rule checkAmount{
condition amount > withdrawalLimit
deny
}
在 Axiomatics Policy Server 中,您可以配置 PIP / 属性连接器来检索基于用户 ID 的值。
HTH,大卫。