4

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

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

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

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

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

谢谢

4

2 回答 2

7

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

于 2014-02-25T23:25:37.773 回答
1

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

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

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

此处可能需要通过“HasRole('SomeRole')”方法检查以定义用户的确切行为。

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

1) HasPermission('permissionName')

2) HasRole('角色名')

一个好的 RBAC 解决方案应该提供这两种方法。市场上有这样的工具,您可以检查它们。

于 2015-07-30T11:26:20.367 回答