Architecture 作为一种实现基于角色的访问控制的方法,这有意义吗?

Architecture 作为一种实现基于角色的访问控制的方法,这有意义吗?,architecture,permissions,access-control,rbac,Architecture,Permissions,Access Control,Rbac,我一直在开发一个为用户提供基于角色的访问控制的应用程序 目前的工作方式如下: 指定授权规则,这些规则在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量 授权规则是多对一映射到我所称的“组”。因此,每个组可以有许多规则,但规则不能由多个组共享。我现在意识到,我的“团队”通常被称为“角色” 用户是映射到组的多对多用户。一个用户可以属于多个组,一个组可以有多个用户。用户继承其所属组的所有授权规则 用户还被分配到一个“主要组”,该组确定用户体验的其他各个方面,

我一直在开发一个为用户提供基于角色的访问控制的应用程序

目前的工作方式如下:
  • 指定授权规则,这些规则在代码中定义需要检查用户权限的特定检查点。此权限可以是有条件的,具体取决于用户的状态和其他变量
  • 授权规则是多对一映射到我所称的“组”。因此,每个组可以有许多规则,但规则不能由多个组共享。我现在意识到,我的“团队”通常被称为“角色”
  • 用户是映射到组的多对多用户。一个用户可以属于多个组,一个组可以有多个用户。用户继承其所属组的所有授权规则
  • 用户还被分配到一个“主要组”,该组确定用户体验的其他各个方面,如主题和布局,但也可以作为授权规则中的条件使用
  • 还可以直接为用户分配授权规则,同样是一对多(用户到规则)映射
  • “主”帐户具有不受限制的权限,自动绕过所有检查点
  • 从图形上看,这看起来像:

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

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

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


    这是实现RBAC和用户组的一种明智的方法,还是有我没有考虑过的奇怪的边缘情况?

    您应该研究现有的RBAC实现(Spring Security、Ruby中的Cancancan、PHP中的Slim…),或者基于声明的授权(.NET),或者更好的是研究基于ABAC属性的访问控制。ABAC将帮助您解决访问控制问题谢谢,是的,我基本上实现了ABAC的一种形式。然而,除了“角色”之外,我还有一个额外的难题——“组”,我正在寻找指导。您应该研究现有的RBAC实现(Spring Security、Ruby中的Cancancan、PHP中的Slim…),或者基于声明的授权(.NET),或者更好的是研究基于ABAC属性的访问控制。ABAC将帮助您解决访问控制问题谢谢,是的,我基本上实现了ABAC的一种形式。然而,除了“角色”之外,我还有一个额外的难题——“小组”,我正在寻找指导。