基于角色的访问控制DB设计

时间:2009-08-26 19:29:56

标签: database-design web role rbac

这个问题不是关于RBAC系统本身的数据库设计,而是关于当该Web应用程序允许其用户提交内容时如何将该数据库与特定于应用程序的数据库结合使用。

目前我的RBAC应该可以轻松地用于简单的后端管理应用程序,员工可以在其中添加和更新记录 - 例如,在线商店通常没有用户提交的内容。这两个数据库可以保持独立。但是,我不确定如何将我的RBAC设计重用于允许其用户提交内容的网站/应用程序。我在两个数据库中有两个用户表,需要添加/更新记录的权限。

  1. 我是否将RBAC数据库合并到网站数据库并共享用户表?

  2. 我是否将两者分开?

  3. 做点什么?

  4. 如果选项2我:

    • (A)将用户从网站数据库复制到RBAC用户表中

    • (B)创建与网站数据库中用户表的关系

    • (C)在网站数据库中为网站用户创建一个新的RBAC系统,并为管理员用户提供单独的RBAC?

    A似乎很糟糕,因为我正在复制数据,但实现起来似乎很简单。 B似乎很难与两个单独的用户表建立关系。 C也是重复,但我可以大量自定义此RBAC而不会影响“admin”RBAC。

    我基本上想要让我的RBAC系统尽可能重用,并且让特定于应用程序的用户能够提交内容会让事情变得有点难以理解。

    我的这个小RBAC系统主要是我学习的一种方式所以请不要使用通用的“你应该使用框架x / y / z”。使用我最近发现的一个术语,我有点像轮子书呆子,每当我好奇时都喜欢重新发明它们! :)

    我将在我的网站上使用MySQL和PHP,但这应该不重要,因为这是我在这里询问的数据库设计。

    如果我的问题不明确,请告诉我,我会进一步解释。谢谢大家的时间。

2 个答案:

答案 0 :(得分:0)

不知道您的完整实施,我倾向于您的第一个解决方案,只使用一个用户表。然后,在线应用程序可以查询RBAC以确定用户是否有权利。我不清楚的是需要多少申请表以及存放地点。如果您确实拥有需要存储在数据库中的用户属性,那么您可以在应用程序中创建一个用户表,其中包含对RBAC的外键引用,以确定访问权限,而无需将该数据存储在2个位置。这有多复杂取决于您可以添加多少个不同的位置以及更新用户及其属性。物理数据库结构非常依赖于您的业务规则和体系结构,但您的逻辑设计是将数据保存在一个表中。

答案 1 :(得分:0)

请看一下这个网站基于细粒度角色的访问控制(RBAC)系统http://sqlrecipes.com/forum/threads/fine-grained-role-based-access-control-rbac-system.3/