0

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

问题

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

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

因此,“编辑帖子”权限应该有这个约束。

关于模型:如果约束与权限相关,我无法确定哪些约束对特定用户有效。

用户模型可以具有像“站点”这样的属性,但不是所有属于一个站点的用户都应该具有上述约束。他们中的一些人应该能够编辑所有帖子。

问题

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

任何帮助表示赞赏:)

4

1 回答 1

1

我对之前类似的问题的回答如下

您想使用与它所保护的应用程序类型无关的解决方案。这就是可扩展访问控制标记语言 XACML 的目标。

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

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

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

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

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

高温高压

于 2016-04-05T02:40:25.890 回答