【问题标题】:Resource Based Access Control vs Role Based Access Control基于资源的访问控制与基于角色的访问控制
【发布时间】:2013-08-28 10:00:25
【问题描述】:

我正在学习 Apache Shiro,发现这篇文章:

The New RBAC: Resource-Based Access Control

而作者说:

.......您可以将行为(权限)直接分配给角色,如果您 想。从这个意义上说,您仍然拥有基于角色的访问控制 安全策略——只是你有一个明确的 RBAC 策略 而不是传统的隐式策略。

但这引出了一个问题——为什么要停留在角色上?你可以分配 直接针对用户、群组或您的其他任何事物的行为 安全策略可能允许。

看来作者更喜欢直接存储User和Permission的关系,而不是通过Role。

虽然这看起来简单明了,但我有一些问题:

  1. 两者有本质区别吗?

  2. 数据库架构。

在基于角色的访问控制中,通常我们使用三个表来描述关系:

user
role
user_role

不,如果我使用基于资源的访问控制,构建表的正常做法是什么?

【问题讨论】:

标签: authentication access-control rbac


【解决方案1】:

这是我第一次听说基于资源的访问控制。

我会非常小心地走这条路。在授权领域,基本上有 2 个标准:

  • 基于角色的访问控制 (RBAC),由 NIST 标准化,并在主要供应商(CA、Oracle、IBM...)的支持下在数千个应用和框架中实施
  • 基于属性的访问控制 (ABAC) 已由 NIST(也称为 here)标准化,并且由 IBM、Oracle 和我工作的 Axiomatics 等供应商很好地实施。

基于资源的访问控制似乎是 Stormpath 发明的一种模型,并且只有他们支持。这可能很好,但它只适用于他们的环境。

基于角色和基于属性的访问控制是广为接受的范式,受到 NIST 和其他标准化机构(如 OASIS)的支持(SAML 和 XACML 是 10 年前定义的,今天仍然受到支持)。

您的问题是:为什么基于角色的访问控制对您来说还不够?你有角色爆炸的问题吗?表达力还不够吗?您是否需要实现用户、资源和上下文之间的关系?

ABAC 和 XACML 可以让您做到这一点。不久前,我在 YouTube 上发布了一个简单的视频,该视频处理基于属性的访问控制。有一个look

归根结底,RBAC 和 ABAC 是适用于多个应用程序和层的标准。基于资源的访问控制仅适用于 Apache Shiro。

【讨论】:

  • 当参数在路由中演进时如何工作?如果在我们处理请求之前,我们现在可能无法访问资源,对吧?
  • 在这种情况下什么是最佳实践?
  • @DavidBrossard,您能否建议如何获得 XACML 的 Axiomatic APS 试用版?您建议的链接 (axiomatics.com/get-aps-express-edition-now.html) 没有给我任何确认电子邮件。谢谢。
  • 请发送电子邮件至 info@axiomatics.com,他们应该能够为您提供帮助
猜你喜欢
  • 2010-09-11
  • 2013-05-08
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多