1

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

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

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

我有四名员工,员工“A”作为经理,员工“B”、“C”和“D”作为工厂工程师。

由于“B”、“C”和“D”是工厂工程师,所以这三个人都可以访问 Andheri 和 Bandra 级别的位置,但我想通过我的 XACML 政策申请工厂工程师“B”和“D”应该有特权的条件仅访问 Andheri 位置和工厂工程师“C”应该有权访问 Andheri 和 Bandra 位置。

我不知道我应该如何编写 XACML 策略,它可以满足我的上述给定条件。

4

1 回答 1

0

据我了解,您似乎已经拥有基于角色的 XACML 策略,该策略适用于“经理”和“工厂工程师”角色,但您需要进行额外检查以允许根据用户对位置进行有限访问。

现在您不应该根据用户名创建策略,因为随着用户不断更改和从系统中删除/停用,特别是在员工的情况下,这将很难维护。现在我建议更好的方法是在用户配置文件中添加一个附加属性,例如“allowedLocation”,其值可以是“Andheri”或“Bandra”,您可以有一个 XACML 策略来检查是否访问了资源(即植物是“Andheri”或“Bandra”)等于用户属性值“allowedLocation”然后允许访问。

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

  • 规则 1:如果访问的资源 = 用户属性“allowedLocation”的值,则“允许”
  • 规则 2:否则“拒绝”
于 2016-07-02T01:20:52.953 回答