【问题标题】:DB schema for RBAC with multiple levels of roles具有多级角色的 RBAC 数据库模式
【发布时间】:2011-11-11 20:24:33
【问题描述】:

我正在尝试为 RBAC 提供数据库架构,并且我希望能够创建“部门”和“职位”。职位将扩展部门的一般特权。我应该只创建一个“角色”表,同时包含职位和部门吗?或者我应该创建 3 个表:职位、部门和角色,职位和部门表具有角色表的外键?提前谢谢大家的帮助!干杯。

【问题讨论】:

  • 我很困惑......你能解释一下你的要求吗?
  • @Starx,我只是想知道 RBAC 系统的标准数据库模式是什么。问题是我想创建一个类似于标准组织结构的层次结构,包含部门和这些部门内的职位。

标签: mysql database rbac


【解决方案1】:

【讨论】:

  • 论坛对话确实很有趣。谢谢。
  • 仅供参考,论坛链接已损坏,这就是 StackOverflow 不接受仅链接答案的原因。失望的!! :(
【解决方案2】:

我在尝试自定义 RBAC 实现时的经验如下:

  1. 您阅读了很多 RBAC 文献并认为您理解它。然后你继续尝试实现它,只是意识到你根本没有真正理解它。最终,随着您在项目中的进展,它会变得有意义。

  2. 根据您的问题,您已经知道要应用 RBAC 的业务域。但是现在忘记实际的业务对象。您的 RBAC 实现应该是通用的,这意味着您有一个由角色、用户、权限、操作等表组成的数据库模式。然后您将拥有映射到此类表的对象(一对一关系)。

一旦您拥有此 RBAC 实施,就可以将其建模到几乎任何业务领域,例如您提到的“部门”。

请记住,这并不完美...我已经从实际的 RBAC 文献中进行了增强/修改/派生,以添加自定义功能、增强性能等。

我已经有一段时间没有做这个了,所以我希望我在以下方面是正确的:

  • 用户:创建实例并将其保存到它的后备表中。
  • 角色:创建实例并将其保存到它的后备表中。角色将分配给用户。

  • 权限:权限基本上是对对象的操作的组合。权限被分配给角色。

  • 操作:操作就是您想要的任何东西。它可以是 CRUD(创建、读取、更新、删除),也可以是“打印”、“搜索”或人类(或系统)可以对一个对象(或一组对象)执行的任何操作。

  • 对象:这基本上是构成您的业务领域的所有对象。

要获得更多功能,您可以实施约束以应用大量各种限制。

有了这个框架,你应该可以映射:

  • 谁可以将用户分配给部门
  • 谁可以将他们从部门中删除
  • 一个部门可以有多少用户
  • 部门中可以有哪些类型的用户(根据他们分配的角色)
  • 哪些卷可以对部门执行哪些操作(创建、读取、更新、删除)

【讨论】:

  • 希望看到此设计的架构。
  • @RobertPitt 这是我的 EER 模型:i.stack.imgur.com/X2OJC.png(请忽略 act_session、act_provider 和 act_user_provider,这些表用于会话和社交登录)。
猜你喜欢
  • 2020-01-03
  • 2015-11-12
  • 1970-01-01
  • 2018-06-08
  • 2011-02-19
  • 2010-11-25
  • 2011-02-12
  • 2016-07-09
  • 1970-01-01
相关资源
最近更新 更多