首页 文章

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

提问于
浏览
5

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

The New RBAC: Resource-Based Access Control

作者说:

.......如果需要,您可以直接将行为(权限)分配给角色 . 从这个意义上讲,您仍然可以使用基于角色的访问控制安全策略 - 只是您将拥有显式RBAC策略而不是传统的隐式策略 . 但这引出了一个问题 - 为什么要停止角色?您可以将行为直接分配给用户,组,或安全策略可能允许的任何其他内容 .

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

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

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

  • 数据库架构 .

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

user
role
user_role

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

1 回答

  • 8

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

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

    • 基于角色的访问控制(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 .

相关问题