0

我在设计一个简单的 ACL 系统时遇到了这个问题:

  • Person 1Team A可以编辑Item X
  • Person 1从 转移Team ATeam B
  • Team B无法编辑Item X
  • 由于历史原因,我们仍然允许Person 1编辑Item X

这是 RDBMS 中的典型模型:

  • Person表与表具有多对多关系Team
  • 有 ACL 表,如下所示:
    object_type | object_id | item_type | item_id | deny_or_allow

像我描述的那样处理团队间的转移

  • 我应该添加一个额外规则Person 1吗?
  • 当有一天我们拒绝整个Team A(包括前成员)编辑时会发生什么ItemX
  • 我们是否也应该保留人员转移历史记录表?
  • 所以要决定 ACL 规则,我们必须遍历很多东西,也许我什至错过了一些

这个问题的复杂性随着 ACL 和人员调动的不断发生而增加。为此在关系数据库中设计模型的最佳实践是什么?这类事情有通用术语或主题吗?

4

1 回答 1

0

典型的表驱动安全使用基于角色的安全模式。

如果您想保留已离开角色的人员的访问权限,则需要在角色成员和角色权限上添加有效和到期日期/时间。这将允许您说诸如“人员 2”在“项目 X”存在之前离开“团队 A”之类的内容,因此他们看不到它。

于 2013-02-19T14:08:11.117 回答