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

时间:2011-09-07 05:17:28

标签: mysql database rbac

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

2 个答案:

答案 0 :(得分:18)

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

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

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

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

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

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

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

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

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

      < / LI>
    • 对象:这基本上就构成了您的业务领域的所有对象。

    为了获得更大的权力,您可以实施约束以应用大量的各种限制。

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

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

答案 1 :(得分:4)