Many to many 如何在具有权限传输的关系数据库中建模用户-用户组?
我在设计简单的ACL系统时遇到以下问题:Many to many 如何在具有权限传输的关系数据库中建模用户-用户组?,many-to-many,relational-database,acl,rdbms,foreign-key-relationship,Many To Many,Relational Database,Acl,Rdbms,Foreign Key Relationship,我在设计简单的ACL系统时遇到以下问题: 来自团队A的人员1可以编辑项目X Person 1从团队A转移到团队B 团队B无法编辑项目X 由于历史原因,我们仍然允许人员1编辑项目X 以下是RDBMS中的典型模型: Person表与表Team 有一个ACL表,如下所示: 对象类型|对象id |项目类型|项目id |拒绝或允许 像我描述的那样处理团队间的调动 我是否应该为人员1添加额外的规则 如果有一天我们拒绝整个团队A(包括前成员)编辑ItemX,会发生什么 我们是否也应该保留一张人员调动
来自
团队A的
可以编辑人员1
项目X
从Person 1
转移到团队A
团队B
无法编辑团队B
项目X
- 由于历史原因,我们仍然允许
编辑人员1
项目X
表与表Person
Team
- 有一个ACL表,如下所示:
对象类型|对象id |项目类型|项目id |拒绝或允许
- 我是否应该为
添加额外的规则人员1
- 如果有一天我们拒绝整个
(包括前成员)编辑团队A
,会发生什么李>ItemX
- 我们是否也应该保留一张人员调动历史记录表
- 所以要决定ACL规则,我们必须遍历大量的东西,也许我甚至错过了一些
这个问题的复杂性随着ACL和人员转移的不断发生而增加。在关系数据库中为此设计模型的最佳实践是什么?这类事情是否有一个通用术语或主题?典型的表驱动安全性使用一种模式
如果要保留已离开角色的人员的访问权限,则需要在角色成员和角色权限上添加生效日期和到期日期/时间。这将允许您在“项目X”存在之前说“人员2”离开了“团队A”,这样他们就看不到了。有什么理由不添加一个名为“前团队A”的组吗,当他们从团队A过渡到另一个团队时,是否会向团队中添加人员?@SteveJorgensen假设另一个
人员2
可能在项目X
存在之前加入并离开团队A
。这可能会让无关人员触摸项目X
?我想做的是模仿现实世界中特权的工作方式。如果您参与了项目X
,您将始终参与其中,除非您的旧团队一起被拒绝。