具有多级角色的RBAC的数据库架构

bla*_*e24 6 mysql database rbac

我正在尝试为RBAC提出数据库架构,我希望能够创建"部门"和"职位".职位将扩展部门的通用特权.我应该只创建一个"角色"表,同时持有职位和部门吗?或者我应该创建3个表:职位,部门和角色,职位和部门表具有角色表的外键?Thx提前为大家提供帮助!干杯.

Jea*_*ach 18

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

  1. 您阅读了很多RBAC文献,并认为您理解它.然后你继续尝试实现它,只是为了意识到你根本不理解它.最终,当你在项目中移动时它会有意义.

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

一旦你有了这个RBAC实现,它就可以建模到几乎任何业务领域,比如你提到的'Deparment'.

请记住它并非完美......我已经从实际的RBAC文献中增强/修改/派生,以便添加自定义功能,增强性能等.

我有一段时间没有这方面的工作,所以我希望我在以下方面是正确的:

  • 用户:创建实例并将其保存到其后备表中.
  • 角色:创建实例并将其保存到其支持表中.角色将分配给用户.

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

  • 操作:操作就是您想要的任何操作.它可以是CRUD(创建,读取,更新,删除),也可以是"打印","搜索"或人(或系统)可以对对象(或对象组)执行的任何操作.

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

为了获得更大的功能,您可以实施约束以应用大量的各种限制.

使用此框架,您应该能够映射:

  • 谁可以将用户分配给部门
  • 谁可以从部门中删除它们
  • 一个部门中有多少用户
  • 什么类型的用户(基于他们指定的角色)可以在部门中
  • 哪些卷可以对部门执行哪些操作(创建,读取,更新,删除它们)
  • 等等.

  • 很想看到这个设计的架构. (5认同)
  • @RobertPitt 这是我的 EER 模型:http://i.stack.imgur.com/X2OJC.png(请忽略 act_session、act_provider 和 act_user_provider,这些表用于会话和社交登录)。 (2认同)