如何在XACML策略中实现这些规则?

时间:2017-07-07 02:44:50

标签: authorization xacml abac xacml3 alfa

以下是我尝试通过XACML / ABAC实现学习目的的要求:

信息模型

  • 资源:建筑,单位

    • 有许多建筑物(例如B1,​​B2,B3,...... Bn)
    • 每栋建筑都有很多单位(即单位是建筑的孩子)(例如B1U1,B1U2,B1U3,......)
  • 主题:客房服务人员

规则

  • 如果管家可以“打开”“单位”
    • 他们对该“单位”或“
    • 有”开放“许可
    • 如果他们对“单位”所在的“建筑物”有“开放”许可。

任何指针?

更新

基本上我的担心是:如果要求是这样的话,如果他/她对“unitX”有“开放”许可,管家可以“打开”“unitX”。在这里,我只想写一个简单的规则。

但是,根据我的实际要求,问题是:

  1. 由于没有一个特定的资源,但是同一类型的资源很多,我应该为每个资源编写一个单独的策略吗?防爆。建立“B1”的单独政策,“B2”的另一个政策等等?

  2. 政策如何“了解”建筑与单位之间的等级关系。

  3. 现在我对此进一步考虑,我认为以下方法应该有效(?)

    1. 请求将包含以下内容
    2. resource:/ {buildingId} / {unitId} //这就是策略将如何知道父子关系

      行动:开启

      主题:subjectId以及该主题可能具有的所有权限(仍然在考虑如何表示权限,任何建议?)

      1. 使用规则定义一个策略: //伪代码 if(subject.permissions包括在{buildingId}上打开或在{unitId}上打开)然后允许其他拒绝。
      2. 有什么建议吗?

        谢谢,

        Jatin

1 个答案:

答案 0 :(得分:1)

您需要在ABAC模型上定义以下属性:

资源属性

属性 - 构建,属性值 - B1,B2,B3

属性 - 单位,属性值 - B1U1,B1U2,B1U3,B2U1,B2U2,B2U3,B3U1,B3U2,B3U3

操作属性

属性 - 构建动作,属性值 - 打开

主题属性

属性 - 构建居民,属性值 - Resident1,Resident2

建筑单元和建筑单元之间的层次关系需要在资源继承关系上定义。

资源继承

受益人 - 建筑物:B1,继承值 - 单位:B1U1,单位:B1U2,单位:B1U3

受益人 - 建筑:B2,继承值 - 单位:B2U1,单位:B2U2,单位:B2U3

受益人 - 建筑:B3,继承值 - 单位:B3U1,单位:B3U2,单位:B3U3

现在您需要在ABAC策略上定义规则。现在,您可以使用策略自动化工具,这样您就不需要在规则创建期间考虑继承关系。您曾经定义这些关系,稍后在创建规则时,自动化工具将自动记住这些关系并自动为您创建规则。您可以下载此类工具名称“安全策略工具”。这是一个商业工具,但您可以下载免费的演示,其中还包括一个完整的xacml编辑器。请在下面查看SPT​​中模型的屏幕截图:

Screenshot of your model defined in Security Policy Tool

然后,通过此工具,您可以自动将ABAC策略转换为XACML,并在内置的xacml编辑器中进一步编辑以进行微调。

XACML policy automatically converted by Security Policy Tool