这是否有助于实现基于角色的访问控制?

时间:2015-10-04 19:04:23

标签: architecture permissions access-control rbac

我一直在开发user management system,为用户提供基于角色的访问控制。

目前的工作方式如下:

  1. 指定了授权规则,用于在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量。
  2. 授权规则是多对一映射到我称之为“组”的内容。因此,每个组可以有许多规则,但规则不能由多个组共享。我现在意识到我的“群体”是更常被称为“角色”的东西。
  3. 用户是多对多映射到组。用户可以属于多个组,组可以有多个用户。用户继承其所属组的所有授权规则。
  4. 用户也被分配到一个“主要群组”,该群组确定其体验的各种其他方面,如主题和布局,但可以选择用作授权规则中的条件。
  5. 用户也可以直接分配授权规则,再次作为一对多(用户到规则)映射。
  6. “主”帐户具有不受限制的权限,会自动绕过所有检查点。
  7. 从图形上看,这看起来像: Old RBAC scheme

    我的新计划:

    我的计划是使其更符合标准术语,并更清晰地区分群组成员资格的权限和用户体验方面。因此,我的新计划将是:

    1. 指定了授权规则,用于在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量。
    2. 授权规则多对一映射到角色。因此,每个角色可以有多个规则,但规则不能由多个角色共享。
    3. 用户多对一映射到。一个组可以有多个用户但用户只能属于一个组。该组确定其体验的各种其他方面,如主题和布局,但可以选择用作授权规则中的条件。
    4. 角色可以分组到多对多。用户继承了为其分配的组的所有角色。
    5. 用户也可以直接分配到角色,再次作为多对多(用户到角色)映射。
    6. “主”帐户自动拥有所有角色。但是,主帐户仍然可以属于单个组,以确定其主题和布局体验。
    7. 这看起来像是:

      New RBAC scheme

      我的新方案似乎更复杂,因为它引入了第四种类型的对象。另一方面,它可能更容易使用,因为它更清晰地将我的系统的“权限”方面与“基于组的用户体验”方面分开。

      这是实施RBAC和用户组的明智方法,还是有任何我未考虑的奇怪边缘情况?

0 个答案:

没有答案