2010-09-10 111 views
16

我目前正在为本地协会开发一个成员管理,我正在开发数据库模式。我想与大家分享它来改进它,并给出其他基于角色的访问模型(RBAC)的示例。我会很感激任何建设性的批评,特别是关于我在表格之间使用的关系。基于角色的访问控制的DB模式

链接HIGHRES:http://i.stack.imgur.com/WG3Vz.png

继承人的模式:DB Schema

工作原理:

我映射现有客户(该协会的成员竟)从外部应用程序为我的政府应用。 (客户表)

该关联在Division,Subdivisions等(intern_structures表)中构造。每个客户都可以成为多个部门,细分部门,部门等的成员。

每个客户都可以在总统,精算师,司库等成员(部门,...)中拥有一个或多个角色,并且每个角色都有一定的角色的所有者可以在他的部门,细分部门,部门等中应用其他人的特权。

凭证连接到应用程序的某个操作。凭证的所有者可以在其范围内的其他成员上执行此操作。可以有多个“独立”应用程序,但它们都共享相同的认证/授权系统。

应用程序在模块/子模块/操作等中构造。一个示例可以是“个人详细信息”模块,此模块包含一个称为“图片”的子模块,您可以在“查看,删除,编辑”这张照片。但是你不能删除任何图片,除非你试图删除图片的人在你有足够角色的部门/部分。

内部和应用程序结构都是树,实现为邻接列表嵌套集。邻接列表确保完整性,并且嵌套集允许我快速遍历树。

一个例外是,您可以直接给某人某些凭证(client_credentials)。如果有人需要对不在分区/部分的人执行某些操作,则需要此操作。

因此,某人可以成为多个divsions/sections中的成员,并且在他所属的每个部门/部门中获得多个角色。我将通过他的多个角色合并所有凭据。证书总是正面的,意味着限制性证书是不可能的。

+0

下面是一个简单的RBAC系统的概念:http://stackoverflow.com/questions/28157798/is-my-role-based-access-control-a-feasible-solution/28159647#28159647 – sled 2015-02-05 16:03:57

回答

3

我打算举出另一个我非常喜欢的RBAC系统的例子。请查看Tony Marston的radicore框架here

我不确定它是否满足您的所有要求,但是您可以将您的工作与您的工作进行比较,这可以提供帮助。

0

我似乎没有会看到大部分的RBAC的映射,如:

Operation = Any action, such as CRUD operations 
Object  = Reference to any object instance 

Permission = Mapping of 'Operation' + 'Object' 

我不知道所有的“凭据”表是?凭证通常具有证明其身份的属性(即:用户名/密码)。为什么你有角色的证书?