使用RBAC指定CRUD操作的权限

时间:2015-03-04 12:16:54

标签: crud nested-sets rbac

我使用Nested Sets model处理对象层次结构。我想为单个对象设置CRUD操作的权限。作为管理访问权限的系统,我使用PHP RBAC。我怎么能解决这个问题?

在对问题进行一些分析后,我决定可以为对象上的每个CRUD操作创建四个权限树,并单独获得每个权限,但我认为这不是最佳解决方案。

作为替代方案,我考虑使用单个预置树,这些节点对应于操作" read",并且每个节点都有子元素"创建","更新"和"删除",但我不确定是否可以使用PHP RBAC实现此模型。

欢迎任何有关材料的建议或参考。我确信在这个问题上有一些我还没有找到的材料。

1 个答案:

答案 0 :(得分:1)

RBAC在这里可能还不够,因为你有:

  • 资源层次结构
  • 不同的行动
  • 用户与资源之间的潜在关系。

要实现您的方案,您可以使用RBAC并使用ABAC(基于属性的访问控制)对其进行扩展。使用ABAC,您可以获得以下好处:

  • 您将授权逻辑外部化为中央策略决策点
  • 您将授权逻辑表示为策略而非角色
  • 策略可以使用用户,资源,操作和上下文的任何属性

您可以在ABAC中表达以下方案:

  • 如果document.location == user.location
  • ,具有role == manager的用户可以对文档执行操作==编辑

XACML,可扩展访问控制标记语言实现了ABAC。您可以在此处阅读有关XACML和ABAC的更多信息: