【发布时间】: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
标签: authorization xacml abac xacml3 alfa