代码之家  ›  专栏  ›  技术社区  ›  Etzeitet

基于角色的访问控制数据库设计

  •  4
  • Etzeitet  · 技术社区  · 15 年前

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

    现在看来,我的RBAC应该可以很容易地为一个简单的后端管理应用程序工作,在这个应用程序中,工作人员可以添加和更新记录——例如,一个在线商店通常没有用户提交的内容。这两个数据库可以保持分离。但是,我不确定如何将我的RBAC设计与允许其用户提交内容的网站/应用程序一起重用。我将在两个数据库中拥有两个用户表,它们需要添加/更新记录的权限。

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

    2. 我要分开吗?

    3. 做点别的吗?

    如果选项2是:

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

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

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

    A看起来很糟糕,因为我正在复制数据,但似乎很容易实现。B似乎很难与两个单独的用户表建立关系。C也是重复的,但是我可以在不影响“管理”RBAC的情况下大量定制这个RBAC。

    我基本上想让我的RBAC系统尽可能地可重用,让特定于应用程序的用户能够提交内容,这让我有点难以理解。

    我的这个小RBAC系统主要是我学习的一种方法,所以请不要使用通用的“您应该使用框架X/Y/Z”。使用我最近发现的一个术语,我有点像一个车轮呆子,每当我好奇的时候,我都想重新发明它们!:)

    我将在我的站点上使用mysql和php,但这并不重要,因为我在这里询问的是数据库设计。

    如果我的问题不清楚,请告诉我,我会进一步解释。谢谢大家抽出时间来。

    2 回复  |  直到 13 年前
        1
  •  0
  •   JohnL    13 年前

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

        2
  •  0
  •   haohello    13 年前

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

    推荐文章