crud - 使用 RBAC 指定 CRUD 操作的权限

标签 crud nested-sets rbac

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

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

作为替代方案,我考虑使用单个权限树,哪些节点对应于操作“读取”,每个节点都有子元素“创建”、“更新”和“删除”,但我不确定该模型可以使用 PHP RBAC 实现。

欢迎任何建议或引用 Material 。我确信在这个主题上我还没有找到一些 Material 。

最佳答案

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

  • 资源的层次结构
  • 不同的操作
  • 用户和资源之间的潜在关系。

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

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

您可以在ABAC中表达以下场景:

  • 如果 document.location==user.location,则具有角色 ==manager 的用户可以对文档执行操作==edit

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

关于crud - 使用 RBAC 指定 CRUD 操作的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854302/

相关文章:

mysql - 全选在 golaong gorm 中不起作用

java - 我可以在简单的 java CRUD 操作中使用 Firebase 吗?

synchronization - 离线同步和事件溯源

用于处理 MySQL 中的嵌套集的 PHP 库

REST 风格的 API : How to organize nested resources

sql - 如何在同一个查询中选择直系子女和祖先

sql - 查询数据库中的搜索树

kubernetes - ServiceAccount 无法在命名空间中列出资源 "pods",尽管它具有具有适当资源的角色

azure - 网站贡献者无法根据 Azure RBAC 管理 SSL 证书 : Built-in roles

kubernetes - 限制 EKS 用户访问