【发布时间】:2012-12-15 23:12:33
【问题描述】:
我有兴趣为用户执行高级访问控制以访问软件系统中的资源。我在医疗保健 IT 部门工作,年轻的我经常低估role-based access control in healthcare 的复杂性。但是这个问题应该适用于任何有复杂 ACL 要求的人。
很长一段时间以来,php gacl 一直是我的首选库,用于处理 Health IT 系统中非常复杂的 ACL 控制问题。但我现在更多地使用一般的 javascript 和专门的节点。我已经在 npm 中搜索了库,以便以可概括的方式进行访问控制。
我希望支持定义操作,而不仅仅是用户和资源(3 层而不是 2 层),并且我希望拥有用户、操作和资源组,并且暗示我希望拥有 ACL 继承。
从the Star Wars themed manual 到该库的经典示例如下:
- 所有机组成员都可以(访问、配置和使用)访问 枪、引擎、驾驶舱和休息室,期待着咀嚼。
- 所有机器人都可以(访问和使用)驾驶舱,但只有 R2D2 可以 配置对引擎的访问。
- Han 拥有所有类型的访问权限 资源类型。
这里的基本概念包括您可以制定适用于用户组(即机组人员、乘客或机器人)或个人(Han 和 Chewie)的规则,您可以拥有不同类型的访问权限(访问、配置、使用)或访问组(维护访问 = 配置 + 维修 + 使用)对不同资源(发动机和驾驶舱)的访问也可以分组,(战斗站 = 驾驶舱 + 枪支)。
这允许通过相对简单的基于组的管理来配置非常复杂的访问控制规则。
到目前为止,我在 php-gacl 之外还没有看到类似的东西。我查看了基于 javascript 的精彩 ACL 项目,所有这些项目都宣传简单易用,而不是全面。其他典型的 php ACL 库也是如此(即Zend ACL)
有人在为节点开发“高级 ACL”项目吗?有没有更好的方法我应该在某个地方寻找?
php-gacl 包含三个部分,一个是基于 php 的管理 GUI(诚然过于复杂),以及一个用于 CRUD 规则的 API(我认为可以很容易地转换为 REST 接口)和一个提供 ACL 检查功能的非常小的文件。
从技术上讲,只有最后一种类型需要完全移植到节点才能使该软件模型工作?
在更深层次上,我想了解成功使用了哪些方法来处理此问题。这个问题通常是如何解决的?对于那些根据节点/javascript甚至可能甚至是特定的数据库方法(关系与非关系)有效讨论此问题的人的奖励积分。我知道做这个正确/错误有很多理论基础(即对 RBAC 和 ACL 有很多意见)。我想要的是理论上可靠的东西,或者从图书馆的角度来看仍然“正常工作”的几乎可靠的东西。我专注于 Javascript,但很高兴了解其他语言实际上是如何解决这个问题的。
【问题讨论】:
-
这与堆栈溢出无关。
标签: php javascript node.js acl rbac