2013-08-26 36 views
3

我学习的Apache四郎,我发现这篇文章:资源的访问控制VS基于角色的访问控制

The New RBAC: Resource-Based Access Control

而笔者说:

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

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

看来作者宁愿直接存储用户和权限的关系而不是通过角色。

虽然它似乎这是简单明了的,我有一些问题:

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

  2. 数据库模式。

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

user 
role 
user_role 

没有,如果我使用基于资源访问控制,什么是建设中的表通常的做法?

+0

ABAC XACML是最好的已经存在的系统,我知道了。 阅读这篇也许有助于了解的话题更好:http://stackoverflow.com/questions/18622678/rest-api-use-endpoint-properties-in-authorization-model/18640223#18640223 – inf3rno

+0

有关详细信息,请阅读本文章:https://stormpath.com/blog/new-rbac-resource-based-access-control –

回答

6

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

我会非常小心地沿着这条路走下去。在授权的世界上有本质上2个标准:

  • 基于角色的访问控制(RBAC),如通过NIST标准化和数以千计的应用程序和框架的与从主供应商(CA,甲骨文,IBM支持实现。 ..)
  • 基于属性的访问控制(ABAC)被标准化为NIST(也是​​),同样也很好地由IBM,Oracle和Axiomatics等供应商实现。

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

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

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

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

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

+0

怎么做时参数的路线是发展这项工作?如果在我们处理请求之前我们可能不能访问资源,对吧? –

+0

是的,这是正确的 –

+0

在这种情况下什么被认为是最佳实践? –