我有一个项目,要求ABAC对其项目资源进行访问控制。我一直在考虑将OPA和authzforce作为实现ABAC的选项,而OPA看起来可能比authzforce复杂。我看到OPA可以将自己与其他系统和范式进行比较,但是它为ABAC给出的示例仍然有很多不足之处。主要是因为ABAC要求使用执行策略,围绕策略进行决策,获取策略决策的主题属性的对象。我觉得OPA涵盖了所有内容,但最后一部分没有涉及,但是由于ABAC的例子只是一次,所以很难说这是真的。
我一直在互联网上寻找OPA用作ABAC的实现的示例,但是我什么都没找到。
我的项目是一个Web应用程序,允许最终用户创建资源并为其资源创建策略。我计划为最终用户创建一个UI,以创建他们的策略。我的计划是抽象出它的编码方面,取而代之的是给它们下拉菜单和按钮,此UI将在幕后使用自定义语法,然后将其解释为OPA政策。
我遇到的主要问题是如何将其实现为ABAC,这与构建将获取主题,对象和环境的属性并在其与OPA之间粘合的部分一样直接(直接)创建PIP),因为OPA本身就是事实上的PEP和PDP?
我觉得自己沉迷于文档中,OPA自己的文档中似乎缺少很多东西来解释如何做到这一点。
答案 0 :(得分:2)
也许最具体的答案是detailed description of how Chef Automate uses OPA to implement application authorization。
更一般地说,我们正在计划一个指南,描述如何使用OPA进行应用程序授权-它需要比SO答案更详细的信息。但是,使用OPA(或任何策略引擎)进行应用程序授权在一定程度上取决于您的应用程序,其体系结构,您的SLA等。但是,这里有一些要考虑的关键问题:
我们总是很乐意与您讨论应用程序的详细信息,并帮助您找到最适合OPA的产品。随时联系OPA slack channel。
答案 1 :(得分:0)
OPA看起来可能比authzforce复杂
这两种方法各有利弊。首先,您意识到OPA和AuthZForce都是ABAC实现(您可以在ABAC here和here上阅读更多内容)。
Open Policy Agent是一个相对新颖的模型,主要(但不仅限于)旨在解决基础结构(例如Kubernetes)的细粒度授权。他们甚至为Istio和Kubernetes都预先构建了集成点。 OPA提供了PEP(执行/集成)和PDP(策略决策点),尽管不一定以这种方式来称呼它们。它使用的语言称为REGO(DATALOG的派生)。
OPA本身似乎是事实上的PEP和PDP
是的,您绝对正确,这给您带来了实施PIP替代方法的负担。
我觉得自己沉迷于文档中,OPA自己的文档中似乎缺少很多东西来解释如何做到这一点。
伸向Styra-他们在OPA周围出售服务。或者,重新考虑您的选择,并研究XACML(请参见下文)。
我一直在互联网上寻找OPA用作ABAC的实现的示例,但是我什么都没找到。
看看work they did at Netflix。这是我所知道的主要实现。您还可以联系OPA背后的公司Styra,他们将能够提供帮助。
AuthZForce是XACML(可扩展访问控制标记语言xacml)标准的开源Java实现。它提供了完整的ABAC实施(PAP,PEP,PDP,PIP)。它是Fiware(开放源代码计划)的一部分,并由team at Thales积极开发。
您还可以考虑XACML的许多其他实现(开源和商业):
XACML / ALFA的主要优点之一是它们是标准的并且被广泛采用。该标准自2001年以来一直存在,并且可以与其他标准互操作。 SAML,OAuth和SCIM。