如何在 XACML 策略中实现这些规则?
Posted
技术标签:
【中文标题】如何在 XACML 策略中实现这些规则?【英文标题】:How to implement these rules in XACML policies? 【发布时间】:2017-07-07 02:44:49 【问题描述】:为了学习目的,我尝试通过 XACML/ABAC 实现以下要求:
信息模型
资源:建筑、单位
有许多建筑物(例如 B1、B2、B3、... Bn) 每个建筑物都有许多单元(即单元是建筑物的子级)(例如 B1U1、B1U2、B1U3...)主题:家政人员
规则
如果满足以下条件,管家可以“打开”一个“单元” 他们对该“单元”拥有“开放”权限或 如果他们对该“单元”所在的“建筑物”拥有“开放”权限。任何指针?
更新
基本上这是我关心的问题:如果要求类似于,如果她/他对“unitX”具有“打开”权限,则管家可以“打开”“unitX”。在这里我只写一个简单的规则。
但是,根据我的实际需求,关注点是:
既然没有一个特定的资源,而是有许多相同类型的资源,我是否应该为每个资源编写单独的策略?前任。构建“B1”的单独策略,“B2”的另一个策略等等?
策略将如何“了解”建筑物和单元之间的层级关系。
现在我进一步考虑了这一点,我认为以下方法应该可行(?)
-
请求将包括以下内容
resource: /buildingId/unitId //这是策略将如何知道父子关系的方式
动作:打开
subject:subjectId,可能还有这个主题拥有的所有权限(还在思考如何表示权限,有什么建议吗?)
-
使用规则定义一个策略:
// 伪代码
if(subject.permissions include open on buildingId OR open on unitId) then permit else denied.
有什么建议吗?
谢谢,
贾丁
【问题讨论】:
有什么建议吗? 展示你到目前为止所拥有的,或者至少解释一下导致你遇到困难的部分。 谢谢,当然,稍后会更新问题。 感谢@DavidBrossard 【参考方案1】:您需要在 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
受益人 - 建筑物:B3,继承值 - 单位:B3U1,单位:B3U2,单位:B3U3
现在您需要在 ABAC 策略上定义规则。现在您可以使用策略自动化工具,这样您就无需在创建规则时考虑继承关系。您一旦定义了这些关系,稍后在您创建规则时,自动化工具将自动记住这些关系并自动为您创建规则。您可以下载这样的工具名称“安全策略工具”。这是一个商业工具,但您可以下载免费演示,其中还包括一个完整的 xacml 编辑器。请在下面查看您的模型在 SPT 中的屏幕截图:
然后通过这个工具,您可以自动将您的 ABAC 策略转换为 XACML,并在内置的 xacml 编辑器上进一步编辑以进行微调。
【讨论】:
以上是关于如何在 XACML 策略中实现这些规则?的主要内容,如果未能解决你的问题,请参考以下文章