2

我正在设计一个用户管理系统,其中有大量用户(数百万)和少量用户组(100)和少量应用程序(100)。可以从组中添加/删除用户。每个应用程序都为用户分配了角色。例如,一个用户可能对应用程序具有 GUEST 角色,而另一个用户可能对应用程序具有管理角色。具有与应用程序关联的角色/权利的用户可以访问该应用程序。

为此类系统创建 ACL 的行业级方法是什么。

我能想到的最简单的方法是创建一个 xml 文件(或 JSON)并将其附加到每个用户配置文件中。例如,对于“用户 A”,它可能如下所示:

<USER id="user A">
<APP id="app 1"> <ROLE> GUEST </ROLE> </APP>
<APP id="app 2"> <ROLE> ROLE1 </ROLE> <ROLE> ROLE1 </ROLE></APP>
<GROUP id="group 1> <ROLE> MEMBER </ROLE> </GROUP>
</USER>

现在有一些用例需要解决,例如:

  • 提议系统应该能够为整个用户组分配特定角色。在这种情况下,我会 a) 将 User 引用到 Group ,并将 Group 引用到 App。或 b) 将组内的每个用户循环引用到一个 App。

  • 我必须能够轻松查看(查询)组的用户,或访问特定应用程序的用户。

  • 为每个用户/应用程序/组关系创建一个单独的数据库记录并存储它会更好吗?类似“影子”唱片的东西。

为此类系统设计 ACL 的行业指南或方法是什么?

总的来说,我应该能够使用系统执行以下常见任务:

  • 获取用户个人资料以及与他关联的应用程序和组
  • 获取特定组的成员及其角色(是的,组也可以有角色)
  • 获取特定应用的用户及其角色
  • 删除/编辑特定应用程序或组的每个用户的角色
  • 将新用户添加到组
  • 将应用程序添加到一组用户
  • 从一组用户中删除应用
4

0 回答 0