我有一个项目,要求ABAC对其项目资源进行访问控制。我一直在看OPA和authzforce作为实现ABAC的选项,而OPA看起来可能比authzforce复杂。我看到OPA可以将自己与其他系统和范式进行比较,但是它为ABAC给出的示例仍然有很多不足之处。主要是因为ABAC要求使用执行策略,围绕策略进行决策,获取策略决策的主题属性的对象。我觉得OPA涵盖了所有内容,但最后一部分没有涉及,但是由于ABAC的示例只是一次,所以很难说这是真的。

我一直在互联网上寻找OPA用作ABAC的实现的示例,但我没有发现任何东西。

我的项目是一个Web应用程序,允许最终用户创建资源并为其资源创建策略。我计划为最终用户创建一个UI,以创建其策略。我的计划是抽象化其编码方面,而是为它们提供下拉菜单和按钮,此UI将在幕后使用自定义语法,然后将其解释为OPA策略。

我遇到的主要问题是如何将其实现为ABAC,这与构建将获取主题,对象和环境的属性并在其与OPA之间创建胶水(本质上是创建PIP)的部分一样直接),因为OPA本身似乎是事实上的PEP和PDP?

我觉得自己沉迷于文档中,而OPA自己的文档中似乎缺少很多东西来解释如何做到这一点。

最佳答案

OPA看起来可能比authzforce复杂一些


两种方法都各有利弊。首先,您意识到OPA和AuthZForce都是ABAC实现(您可以在ABAC herehere上阅读更多内容)。

OPA

Open Policy Agent是一个相对新颖的模型,主要(但不仅限于)旨在解决基础架构(例如Kubernetes)的细粒度授权。他们甚至已经为Istio和Kubernetes预先构建了集成点。 OPA提供了PEP(执行/集成)和PDP(策略决策点),尽管不一定要这样称呼它们。它使用的语言称为REGO(DATALOG的派生)。


OPA本身似乎是事实上的PEP和PDP


是的,您绝对正确,这给您带来了实施PIP替代方案的负担。


我觉得自己沉迷于文档中,而OPA自己的文档中似乎缺少很多东西来解释如何做到这一点。


接触Styra-他们在OPA周围出售服务。或者,重新考虑您的选择,并研究XACML(请参见下文)。

缺点


语言(REGO)不容易理解
语言不规范
OPA不支持策略信息点(PIP),这是设计使然。


实作


我一直在互联网上寻找OPA用作ABAC的实现的示例,但我没有发现任何东西。


看看work they did at Netflix。这是我知道的主要实现。您还可以联系OPA背后的公司Styra,他们将可以提供帮助。

AuthZForce

AuthZForce是XACML(可扩展访问控制标记语言xacml)标准的开源Java实现。它提供了完整的ABAC实施(PAP,PEP,PDP,PIP)。它是Fiware(开放源代码计划)的一部分,由team at Thales积极开发。

AuthZForce缺点


它似乎没有用于作者策略的图形界面。我找到了对KEYROCK PAP的引用,但看不到任何屏幕截图
它不支持ALFA(授权的缩写语言)。


实作

您可以考虑XACML的许多其他实现(开源和商业):


美国电话电报公司XACML
SunXACML
WSO2-他们的WSO2 Identity Server平台的一部分-它被称为Balana
Axiomatics(商业-我在这里工作)-我们使用的平台拥有庞大的客户群,从财富50强公司到敏捷创业公司不等。


XACML和ALFA的好处

XACML / ALFA的主要优点之一是它们是标准的并且被广泛采用。该标准自2001年以来一直存在,并且可以与其他标准互操作。 SAML,OAuth和SCIM。

关于authorization - 使用开放策略代理(OPA)作为ABAC系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57306834/

10-13 03:28