基于资源的访问控制与基于角色的访问控制

时间:2013-08-26 00:54:15

标签: authentication access-control rbac

我正在学习Apache Shiro,我找到了这篇文章:

The New RBAC: Resource-Based Access Control

作者说:

  

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

     

但这引出了一个问题 - 为何停止角色?你可以分配   直接对用户,组或其他任何行为的行为   安全政策可能允许。

似乎作者更喜欢直接存储用户和权限的关系而不是通过角色。

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

  1. 其中两个之间是否有任何本质区别?

  2. 数据库架构。

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

    user
    role
    user_role
    

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

1 个答案:

答案 0 :(得分:10)

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

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

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

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

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

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

ABAC和XACML可以让你这样做。我在YouTube上发布了一段简单的视频,处理基于属性的访问控制。有一个look

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