如何在 XACML 策略中实施这些规则?
How to implement these rules in XACML policies?
为了学习目的,我试图通过 XACML/ABAC 实现以下要求:
信息模型
资源:建筑、单位
- 有很多建筑物(例如 B1、B2、B3、... Bn)
- 每个建筑都有许多单元(即单元是建筑的子单元)(例如 B1U1、B1U2、B1U3、...)
主题:家政人员
规则
- 管家可以 "open" "unit" 如果
- 他们有 "open" 权限 "unit" 或
- 如果他们对 "unit" 所在的 "building" 具有 "open" 权限。
有什么指点吗?
更新
基本上这是我的担忧:如果要求是这样的,管家可以 "open" "unitX" 如果 s/he 对 "unitX" 具有 "open" 权限.在这里我只写了一个简单的规则。
但是根据我的实际需求,顾虑是:
既然没有一个特定的资源而是许多相同类型的资源,我是否应该为每个资源编写单独的策略?前任。 "B1" 的单独政策,"B2" 的另一个政策等等?
关于建筑物和单元之间的等级关系的政策"know"如何。
现在我进一步考虑这个问题,我认为以下方法应该可行(?)
- 请求将包括以下内容
resource: /{buildingId}/{unitId} //这是策略了解父子关系的方式
操作:打开
subject: subjectId 以及该主题可能拥有的所有权限(还在考虑如何表示权限,有什么建议吗?)
- 用规则定义一个策略:
// 伪代码
如果(subject.permissions 包括在 {buildingId} 上打开或在 {unitId} 上打开)则允许否则拒绝。
有什么建议吗?
谢谢,
怡保
您需要在 ABAC 模型上定义如下属性:
资源属性
属性 - 建筑物,属性值 - B1、B2、B3
属性 - 单位,属性值 - B1U1、B1U2、B1U3、B2U1、B2U2、B2U3、B3U1、B3U2、B3U3
动作属性
属性 - 构建操作,属性值 - 打开
主题属性
属性 - 建筑居民,属性值 - Resident1、Resident2
建筑与建筑单元之间的层级关系需要在资源继承关系上定义。
资源继承
受益人 - Building:B1,继承值 - 单位:B1U1,单位:B1U2,单位:B1U3
受益人 - Building:B2,继承值 - 单位:B2U1,单位:B2U2,单位:B2U3
受益人 - Building:B3,继承值 - 单位:B3U1,单位:B3U2,单位:B3U3
现在您需要在 ABAC 策略上定义规则。现在您可以使用策略自动化工具,这样您就不需要在规则 creation.You 期间考虑继承关系 一旦定义了这些关系,稍后当您创建规则时,自动化工具会自动记住这些关系并自动为您创建规则.你可以下载这样一个工具名称"Security Policy Tool"。这是一个商业工具,但您可以下载免费的演示,其中还包括一个完整的 xacml 编辑器。请在下方查看您的模型在 SPT 中的屏幕截图:
然后通过此工具,您可以自动将 ABAC 策略转换为 XACML,并在内置的 xacml 编辑器中进一步编辑以进行微调。
为了学习目的,我试图通过 XACML/ABAC 实现以下要求:
信息模型
资源:建筑、单位
- 有很多建筑物(例如 B1、B2、B3、... Bn)
- 每个建筑都有许多单元(即单元是建筑的子单元)(例如 B1U1、B1U2、B1U3、...)
主题:家政人员
规则
- 管家可以 "open" "unit" 如果
- 他们有 "open" 权限 "unit" 或
- 如果他们对 "unit" 所在的 "building" 具有 "open" 权限。
有什么指点吗?
更新
基本上这是我的担忧:如果要求是这样的,管家可以 "open" "unitX" 如果 s/he 对 "unitX" 具有 "open" 权限.在这里我只写了一个简单的规则。
但是根据我的实际需求,顾虑是:
既然没有一个特定的资源而是许多相同类型的资源,我是否应该为每个资源编写单独的策略?前任。 "B1" 的单独政策,"B2" 的另一个政策等等?
关于建筑物和单元之间的等级关系的政策"know"如何。
现在我进一步考虑这个问题,我认为以下方法应该可行(?)
- 请求将包括以下内容
resource: /{buildingId}/{unitId} //这是策略了解父子关系的方式
操作:打开
subject: subjectId 以及该主题可能拥有的所有权限(还在考虑如何表示权限,有什么建议吗?)
- 用规则定义一个策略: // 伪代码 如果(subject.permissions 包括在 {buildingId} 上打开或在 {unitId} 上打开)则允许否则拒绝。
有什么建议吗?
谢谢,
怡保
您需要在 ABAC 模型上定义如下属性:
资源属性
属性 - 建筑物,属性值 - B1、B2、B3
属性 - 单位,属性值 - B1U1、B1U2、B1U3、B2U1、B2U2、B2U3、B3U1、B3U2、B3U3
动作属性
属性 - 构建操作,属性值 - 打开
主题属性
属性 - 建筑居民,属性值 - Resident1、Resident2
建筑与建筑单元之间的层级关系需要在资源继承关系上定义。
资源继承
受益人 - Building:B1,继承值 - 单位:B1U1,单位:B1U2,单位:B1U3
受益人 - Building:B2,继承值 - 单位:B2U1,单位:B2U2,单位:B2U3
受益人 - Building:B3,继承值 - 单位:B3U1,单位:B3U2,单位:B3U3
现在您需要在 ABAC 策略上定义规则。现在您可以使用策略自动化工具,这样您就不需要在规则 creation.You 期间考虑继承关系 一旦定义了这些关系,稍后当您创建规则时,自动化工具会自动记住这些关系并自动为您创建规则.你可以下载这样一个工具名称"Security Policy Tool"。这是一个商业工具,但您可以下载免费的演示,其中还包括一个完整的 xacml 编辑器。请在下方查看您的模型在 SPT 中的屏幕截图:
然后通过此工具,您可以自动将 ABAC 策略转换为 XACML,并在内置的 xacml 编辑器中进一步编辑以进行微调。