ftr*_*ter 5 javascript php acl rbac node.js
我有兴趣为用户执行高级访问控制以访问软件系统中的资源.我在医疗保健IT领域工作,年轻的我经常低估医疗保健中基于角色的访问控制的复杂性.但是这个问题应该适用于具有复杂ACL要求的任何人.
很长一段时间以来,php gacl一直是我的首选库,用于处理Health IT系统内部非常复杂的ACL控制问题.但我现在正在更多地使用javascript和节点.我已经在npm中搜索了库以便以通用的方式进行访问控制.
我想支持定义操作而不仅仅是用户和资源(3层而不是2),我想拥有用户,操作和资源组,并且暗示我希望拥有ACL继承.
从星球大战主题手册到该库的经典示例是以下规则:
这里的基本概念包括您可以制定适用于任意一组用户(即机组人员,乘客或机器人)或个人(Han和Chewie)的规则,您可以拥有不同类型的访问权限(访问,配置,使用) )或访问组(维护访问=配置+修复+使用)到不同的资源(引擎和驾驶舱),也可以分组,(战斗站=驾驶舱+枪支).
这允许配置极其复杂的访问控制规则,具有相对简单的基于组的管理.
到目前为止,我在php-gacl之外没有看到这样的东西.我已经看了一下基于javascript的精彩ACL项目,所有这些项目都宣传简单易用,而不是全面.对于其他典型的php ACL库(即Zend ACL)也是如此
有人在为节点工作"高级ACL"项目吗?是否有一个更好的方法,我应该寻找某个地方?
php-gacl有三个部分,一个是基于php的管理GUI(这无疑是过于复杂的),以及一个关于规则的CRUD的API(我认为可以很容易地转换为REST接口)和一个非常小的部分提供ACL检查功能的文件.
从技术上讲,只有最后一种类型需要完全移植到节点才能使该软件模型工作?
在更深层次上,我想了解哪些方法已成功用于处理此问题.这个问题通常如何解决?对于那些根据节点/ javascript甚至特定数据库方法(关系与非关系)有效讨论此问题的人的奖励积分.我理解有很多理论基础可以做这个对/错(即对RBAC和ACL有很多意见).我想要的是理论上坚实的,或几乎坚实的东西,从图书馆的角度来看仍然"正常".我专注于Javascript,但是理解其他语言如何实际解决这个问题会很好.
如果您可以避免使用任何类型的 ACL,通常情况会更好。它们管理起来很复杂。您最好对三个级别的安全检查进行建模:
这可以使用 RBAC 来完成。您的组织/站点的每个角色都分配有一组访问/修改/操作权限。用户被分配一个角色,但三个级别的检查检查权限,而不是角色。
我会将 Spring Security 和 RBAC 视为谷歌搜索,并以此为基础进行建模。以下是我发现有用的一些链接:
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 中的所有“原始”示例和疯狂命名检查,建议您阅读提供替代名称的使用以及 Spring 权限“hasRole()”检查的用途的文章。以下文章在RBAC 的设计)
(关于 Spring Security 灵活使用的精彩演示,包括 RBAC)
http://www.infoq.com/presentations/Spring-Security-3
(下面很好地描述了RBAC问题和解决方案,并且是为PHP设计的)
http://www.tonymarston.net/php-mysql/role-based-access-control.html
具有 RBAC 实现的 PHP 框架:
http://trac.symfony-project.org/wiki/UserRbac
最后是 Spring Security 的类图。您会注意到,它允许将安全信息放入受保护实体的并行表中。这是设计使然,以便以后可以轻松添加、删除或替换 Spring Security。但这也意味着更多的桌子。
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |