基于角色的访问控制通过特定属性的权限约束

时间:2016-04-04 09:52:51

标签: permissions authorization rbac xacml abac

每个用户都有一个或多个角色,每个角色都有一个或多个权限。到目前为止,我可以通过角色收集与用户关联的所有权限。

问题

某些权限有一些限制。例如:

  

用户可以编辑属于其网站的所有帖子,但不能编辑其他帖子。

因此,许可"编辑帖子"应该有这个约束。

关于模型:如果约束与权限相关,我无法解析特定用户的哪些约束是活动的。

用户模型可以具有类似于" site"的属性,但不是属于一个站点的所有用户都应具有上述约束。其中一些应该能够编辑所有帖子。

问题

确定哪个约束对特定用户有效的最佳方法是什么。我是否必须将其拆分为单独的权限并将约束集成到权限模型中,还是有更好的解决方案?我偶然发现了基于属性的访问控制,但我不确定是否应该切换到完全不同的访问

感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

我将以下内容回复给之前的类似问题

您希望使用与其保护的应用程序类型不可知的解决方案。这就是可扩展访问控制标记语言XACML的目标。

XACML提供基于属性的,基于策略的访问控制(ABAC和PBAC)。这使您能够编写极具表现力的授权策略,并在单个存储库中集中管理它们。然后,中央授权引擎(称为策略决策点或PDP)将为您的不同应用程序提供决策。

您需要的最小属性集通常是关于用户(主题),资源和操作的属性。 XACML还允许您添加环境属性。这意味着您可以编写以下类型的策略:

  

医生可以查看他们被分配到的患者的医疗记录。

  • 医生描述用户/主题
  • view 描述了操作
  • 医疗记录描述了目标资源
  • 患者也描述了目标资源。它是关于资源的元数据
  • 他们被分配到是一个有趣的案例。这是一个定义医生和患者之间关系的属性。在ABAC中,这实现为doctor.id == patient.assignedDoctorId。这是使用XACML的主要好处之一。

XACML的好处包括:   - 贝尔提到的授权逻辑外部化的能力   - 无需经历开发/部署生命周期即可更新授权逻辑的能力   - 对许多不同的应用程序以相同的方式实现细粒度授权的能力   - 能够对授权逻辑进行可见性和审计

HTH