【问题标题】:Role Based Access Control (RBAC) cares about permission or roles?基于角色的访问控制 (RBAC) 关心权限或角色?
【发布时间】:2014-01-25 13:49:27
【问题描述】:

在阅读http://en.wikipedia.org/wiki/Role-based_access_control 并看到人们构建授权/访问控制的方式后,我想到了这个问题“为什么我们在检查用户是否被允许执行 X 时检查用户的角色而不是检查他们的权限?”

这就是我的理解,用户有角色,角色有权限,这就是用户如何拥有权限(用户不能明确地拥有分配给它的权限,它通过拥有角色来获得它的权限)

我认为在处理添加用户的请求时检查“AddUser”之类的权限是有意义的,但在 .Net 库中以及在 RBAC 中的许多示例中,我们看到它们检查角色。就像他们检查用户是否具有管理员角色,而不是检查他/她是否具有“AddUser”权限。

为什么?检查权限对我来说更有意义。

有人可以在这里照亮我吗?

谢谢

【问题讨论】:

    标签: security permissions rbac security-roles


    【解决方案1】:

    如果我们简化 RBAC 系统,RBAC 是一种基于组织用户的权限限制对“某些来源或应用程序或应用程序的某些功能”的访问的方法。这里的限制可以是多个权限,由管理员创建来限制访问,这些权限共同代表一个角色,将分配给用户。

    您的情况可能部分正确:)

    但是考虑一个复杂的应用程序,其中有 200 个权限,管理员需要定义几组权限来通过角色来表示特定行为,这将为该用户创建某种复杂的自定义和重新呈现形式.

    这里可能需要通过'HasRole('SomeRole')'方法检查来定义用户的确切行为。

    所以,我的回答是,这两种方法在 RBAC 中同样重要。

    1) HasPermission(‘permissionName’)

    2) HasRole(‘角色名’)

    一个好的 RBAC 解决方案应该同时提供这两种方法。市面上有这样的工具,你可以去查一下。

    【讨论】:

      【解决方案2】:

      您是正确的 - 检查应用程序中的角色而不是权限不是基于角色的访问控制。 Spring 安全性和许多其他突出的访问控制机制传播了这种安全性反模式。为了正确使用 RBAC - 在您的策略实施逻辑中执行权限检查。

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 2014-12-26
        • 2015-02-16
        • 2017-02-06
        • 2016-10-08
        • 2020-06-22
        • 2012-09-14
        • 2010-09-11
        • 2015-11-20
        相关资源
        最近更新 更多