可以将属性用于ALFA中的多个类别吗?

时间:2018-05-24 08:43:08

标签: authorization rbac xacml abac alfa

doctor可以属于subjectCat(尝试获取访问权限的用户)或resourceCat(主题正在尝试访问的体检的推荐医生)。

在我看来,要支持这两种情况,我需要为每个类别单独定义doctor

namespace subject {
     namespace doctor {
          attribute id {
                    category = subjectCat
                    id = "id"
                    type = string
          }
          attribute lastname {
                    category = subjectCat
                    id = "lastname"
                    type = string
          }
          //and 20 more attributes...
      }
}


namespace resource {
     namespace doctor {
          attribute id {
                    category = resourceCat //this line is the only difference
                    id = "id"
                    type = string
          }
          attribute lastname {
                    category = resourceCat //this line is the only difference
                    id = "lastname"
                    type = string
          }
          //and 20 more attributes...
      }
}

这非常麻烦,并且有很多冗余。我能做些什么来避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

你是对的。您将重新定义属性。在某种程度上,您使用信息模型中的相同对象(例如医生),但在一种情况下,对象(医生)充当主体。在另一个方面,它充当你正在保护的对象,例如。

  • 医生可以查看他们被分配到的患者的医疗记录。
  • 人力资源部门的工作人员可以查看医生的工资。

是的,这意味着您必须在多个类别中定义属性本身。在命名空间和名称的组合保持唯一的情况下,您仍然可以利用命名空间结构。

您可以acme.user.staff.doctor和属性name。然后,您可以acme.object.doctorname属性。

请注意,Eclipse也允许您自动完成:

Auto-completing attribute names in ALFA inside Eclipse