基于角色和基于用户的XACML策略

时间:2016-06-17 13:34:14

标签: authorization wso2is xacml xacml3 abac

让我用一个例子来解释我的问题 -

假设,我有根位置孟买(位置层次结构的根元素)和两个孩子Andheri和Bandra。

我有两个角色 - 经理和工厂工程师。经理可以访问孟买的所有位置,工厂工程师可以访问根元素(孟买)。

我有四名员工,员工和#34; A"作为经理,员工" B"," C"和" D"作为一名工厂工程师。

从" B"," C"和" D"是工厂工程师,所以这三个人都可以访问Andheri和Bandra级别的位置,但我想通过我的XACML政策来应用条件,工厂工程师" B"和" D"应该有权只访问Andheri的位置和工厂工程师" C"应该有权访问Andheri和Bandra的位置。

我没有得到如何编写XACML策略,这可以满足我上面给出的条件。

1 个答案:

答案 0 :(得分:0)

据我了解,看起来您已经拥有基于角色的XACML策略,该策略适用于" Manager"和#34;工厂工程师"角色,但您需要进行额外检查,以允许按用户限制访问位置。

现在您不应该基于用户名创建策略,因为当用户不断更改和从系统中删除/停用时,难以维护,尤其是在员工的情况下。 我建议更好的方法是在用户个人资料中添加其他属性,例如" allowedLocation"其价值可能是" Andheri"或者" Bandra"并且你可以有一个XACML策略来检查被访问的资源(即工厂是" Andheri"或者#34; Bandra")是否等于用户属性值" allowedLocation"然后允许访问。

在这种情况下,您可以为每个工厂制定一个策略,也可以创建一个包含两个规则的通用策略,即

  • 规则1:如果访问资源=用户属性的值 " allowedLocation"然后"允许"
  • 规则2:其他"拒绝"