【问题标题】:Mixed RBAC design - fine or bad?混合 RBAC 设计 - 好还是坏?
【发布时间】:2015-10-29 11:53:39
【问题描述】:

简介

我正在设计我的应用程序基于角色权限的访问系统。 在我的系统中,我有以下角色:

  • 办公室经理
  • 审计员
  • 客户
  • 工人

例如,让我们查看用户与“任务”实体的关系。

WorkerCustomer 是非常特殊的角色,他们对自己的任务几乎只有只读权限。 Workers 只会看到“任务”对象的几个属性。 根据系统业务规则,在某些情况下他们将能够更新一两个属性。

Root 用户可以做任何事情,它可以创建、更新、读取、删除“任务”。 办公室经理可以列出、更新和创建“任务”。 审核员只能列出任务。

RootAuditorOffice manager 将有权访问相同(完整)的“任务”实体属性集。 这三种用户类型将通过相同的管理界面(Web 应用程序模块)访问系统。

客户将通过单独的面向角色的模块(客户模块)访问系统,功能过于具体。 Workers - 也是(worker 模块)。

因此,使用所描述的示例,我们可以说我们可以为 Root、审核员和办公室经理创建以下权限:

  • LIST_TASKS
  • CREATE_TASKS
  • UPDATE_TASKS
  • DELETE_TASKS

这适用于他们,但不适用于 CustomerWorker。 对于 Worker,我们可以这样做:

  • LIST_WORKER_OWN_TASKS
  • UPDATE_WORKER_TASK_STATUS

...等等。

但这对我来说意义不大。 除了 Worker 之外没有其他人会使用此权限。 此外,无法使用权​​限来描述 Worker 能够编辑“任务”实体的某些属性的条件。

总结

所以,我得出一个结论,我需要一个混合访问控制系统。 客户和工人将是没有任何权限的角色。 Root、Auditor 和 Office manager 将是具有绑定到每个角色的权限集的角色。

最后,我们可以将这种机制称为基于混合权限和角色的访问系统。

问题

有这样的设计很正常吗? 我想错了吗? 或者最好使用非常详细的权限列表来描述 CustomerWorker 逻辑

【问题讨论】:

    标签: php permissions roles rbac


    【解决方案1】:

    我可能不会仅仅因为它似乎无法长期维护而做这样的事情。

    在组织内,为各种工作职能创建角色。 执行某些操作的权限分配给特定的 角色。分配成员或工作人员(或其他系统用户) 特定的角色,并通过这些角色分配获得 执行特定计算机系统功能的计算机权限。 由于用户没有直接分配权限,而只是获取 他们通过他们的角色(或角色),管理个人用户 权利变成了简单地将适当的角色分配给 用户帐户;这简化了常见操作,例如添加一个 用户,或更改用户的部门。

    参考:https://en.wikipedia.org/wiki/Role-based_access_control

    您还可以实现 ACL(访问控制列表)

    关于计算机文件系统的访问控制列表 (ACL), 是附加到对象的权限列表。 ACL 指定哪个 用户或系统进程被授予访问对象的权限,以及 允许对给定对象进行哪些操作。[1]中的每个条目 典型的 ACL 指定主题和操作。例如,如果一个 文件对象有一个 ACL,其中包含(Alice:读、写;Bob:读), 这将授予 Alice 读取和写入文件的权限,Bob 可以 只读它。

    我通常更喜欢 ACL 实现,因为它们提供了更精细的控制。

    参考:https://en.wikipedia.org/wiki/Access_control_list

    查看您的想法后,您似乎想要实际实现 ACL。通过模板加载每个用户的权限。当然,您总是可以同时实现这两种方法,但这通常太过分了,而且您之后或多或少地拥有了 Windows 操作系统的安全模型。

    【讨论】:

    • 感谢您发表意见!
    猜你喜欢
    • 2019-12-30
    • 2010-11-12
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2020-05-19
    • 2011-05-17
    • 1970-01-01
    • 2018-01-13
    相关资源
    最近更新 更多