gpt4 book ai didi

sql - ACL/角色管理 : Managing users with multiple roles & Conflicting Permisisons

转载 作者:行者123 更新时间:2023-12-04 20:56:42 24 4
gpt4 key购买 nike

一个合乎逻辑的阻滞点。我正在构建一个简单的 ACL,但我很困惑。我只是想以正确的方式做到这一点。

以基于简单模型的 ACL 为例。

管理用户表tbl_user

id | userid |
-------------
1 | nabin |
2 | suman |

另一个用于管理组的表 tbl_group
id | groupname |
-----------------
1 | admin |
2 | member |
3 | editor |
4 | moderator |

另一个用于维护组和用户的表。 tbl_roles
id | userid | groupid
-----------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
5 | 2 | 4

现在是用于管理访问 tbl_acl 的表
id | groupid | appresourceid
----------------------------
1 | 3 | 1

在这张表上,我将存储拒绝列表,因为拒绝列表肯定会比访问列表短。

现在,根据示例 groupid:3 (editor) , 已拒绝资源 1(假设这是管理区域)。

但是,如果你拿 userid: 2(suman) ,那么他就是一个 editormoderator .按照 tbl_acl的规则, editor应该被拒绝,如 moderator应该被允许。

他应该被允许访问资源还是应该被拒绝? 允许 第一个或 拒绝 第一的。应该优先考虑哪些?

调查此问题的一些方法
  • 尽管用户被拒绝作为编辑,但允许他作为主持人访问该区域。
  • 尽管允许版主访问资源,但所有编辑者都受到限制。
  • 不要忘记用户是member也。因此,如果我们优先考虑允许而不是拒绝。成员(member)可以作为主持人访问。除非,成员(member)也被封锁

  • 附注
    我很清楚这个话题值得商榷。所以,事实将不胜感激 (不是说不要)超过意见和猜测。

    最佳答案

    您遇到这种困境是因为您采用了默认允许访问资源的相当非标准的方法。更标准的方法是默认阻止访问,通过一个或多个“允许”ACL 条目授予访问权限,并通过甚至单个“拒绝”条目覆盖任何“允许”条目。在这种方法下,任何给定的“拒绝”条目都胜过所有“允许”条目。 (即:应用程序应该首先查找拒绝,如果找到,它甚至不需要检查允许。)

    如果您需要说服“默认阻止”是比“默认允许”更好的模型,这里有一些主要区别:

  • 它通常更适合权限的心理模型
    大多数权限管理员持有的管理,无论他们是
    IT 员工或业务角色应用程序管理员。 (的确,
    这至少部分是由于大多数其他系统他们
    将管理使用这个模型,但这并没有使它任何
    不太相关。)
  • 人为错误不太可能导致不当授予
    允许。 (即:如果管理员忘记添加“允许”
    在默认阻止下的条目,最终没有用户能够访问
    他不应该接触的资源。)
  • 当一个新的权限被添加到系统中时,没有特殊的人
    管理员权限可以访问目标资源,直到明确
    添加了“允许”条目。

  • #3 特别引人注目。想象一下,您使用新的“查看薪水”权限部署了一个新版本的 HR 应用程序。在有人开始向您的 ACL 添加“拒绝”条目之前,您认为允许所有用户获得此权限是否可以接受?

    关于sql - ACL/角色管理 : Managing users with multiple roles & Conflicting Permisisons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698810/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com