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

hgu*_*ser 7 authentication access-control rbac

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

新RBAC:基于资源的访问控制

作者说:

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

但这引出了一个问题 - 为什么要停止角色?您可以将行为直接分配给用户,组,或安全策略可能允许的任何其他内容.

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

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

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

  2. 数据库架构.

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

user
role
user_role
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ard 10

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

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

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

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

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

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

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

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