0

这是我试图通过 XACML/ABAC 实现的一个要求,用于学习目的:

信息模型

  • 资源:建筑、单元

    • 有许多建筑物(例如 B1、B2、B3、... Bn)
    • 每个建筑物都有许多单元(即单元是建筑物的子单元)(例如 B1U1、B1U2、B1U3...)
  • 主题:家政人员

规则

  • 管家可以“打开”一个“单元”,如果
    • 他们对该“单元”具有“开放”权限或
    • 如果他们对该“单元”所在的“建筑物”拥有“开放”许可。

任何指针?

更新

基本上这是我关心的问题:如果要求类似于,如果她/他对“unitX”具有“打开”权限,则管家可以“打开”“unitX”。在这里,我只写了一个简单的规则。

但是,根据我的实际要求,担心的是:

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

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

现在我进一步考虑了这一点,我认为以下方法应该可行(?)

  1. 请求将包括以下内容

资源:/{buildingId}/{unitId} //这是策略将如何知道父子关系

动作:打开

主题:subjectId,可能还有该主题拥有的所有权限(仍在考虑如何表示权限,有什么建议吗?)

  1. 使用规则定义一个策略: // 伪代码 if(subject.permissions include open on {buildingId} OR open on {unitId}) then permit else deny。

有什么建议么?

谢谢,

贾廷

4

1 回答 1

1

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

资源属性

属性 - 建筑,属性值 - B1、B2、B3

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

动作属性

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

主题属性

属性 - 建筑物居民,属性值 - 居民 1,居民 2

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

资源继承

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

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

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

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

安全策略工具中定义的模型的屏幕截图

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

安全策略工具自动转换的 XACML 策略

于 2017-09-19T14:16:19.133 回答