我在ALFA写了政策,其中:
我想知道如何指定特定的转移限制。从管理员的角度来看,如果将来我想更新转移限制,应该在哪里以及如何完成?
例如。我想将当前转移限额设置为 $ 2000 。如果我愿意,我该如何做,然后如何更新转移限制?
答案 0 :(得分:1)
要添加David提到的内容,您可以在数据库单元格中设置此值,并将其值更新为ABA / XACML离线值(使用您组织中的其他进程)。然后,可以在评估时通过告知您的PDP使用SQL" withdrawalLimit
"
select limit from ....
来查询该值。
答案 1 :(得分:0)
因此,这是XACML的优势,因为规则在策略中定义,您可以动态更新访问控制规则。可能已在XACML策略中配置了传输限制。您可以使用编辑XACML策略来更新它。然后,此更新必须受到PDP运行时的影响,并且会根据它切断请求。
ALFA
插件可以轻松更新XACML策略属性,而不仅仅是更新原始策略。希望你能找到它。但是,如果您更新XACML策略,它也可以工作。
答案 2 :(得分:0)
很高兴看到你正在取得进步。在您的情况下,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策略服务器中,您可以配置PIP /属性连接器以根据用户ID检索值。
HTH, 大卫。