首页 > 解决方案 > 使用开放策略代理 (OPA) 作为 ABAC 系统

问题描述

我有一个项目需要 ABAC 对我的项目资源进行访问控制。我一直将 OPA 和 authzforce 视为实现 ABAC 的选项,而 OPA 看起来可能没有 authzforce 复杂。我看到 OPA 将自己与其他系统和范例进行比较,但它为 ABAC 提供的示例还有很多不足之处。主要是因为 ABAC 需要使用点来执行策略、围绕策略做出决策、获取策略决策的主题和对象属性。我觉得 OPA 除了最后一部分之外什么都有,但很难说这是否属实,因为他们的 ABAC 示例只是一次性的。

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

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

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

我觉得我被文档淹没了,OPA 自己的文档中似乎缺少很多内容来解释如何做到这一点。

标签: authorizationxacmlabacalfaopen-policy-agent

解决方案


OPA 看起来可能没有 authzforce 复杂

这两种方法都有一些优点和缺点。首先,您意识到 OPA 和 AuthZForce 都是 ABAC 实现(您可以在此处此处阅读有关 ABAC 的更多信息)。

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 实现的示例,但我没有找到任何东西。

看看他们在 Netflix 所做的工作。这是我知道的主要实现。您还可以联系 OPA 背后的公司Styra,他们将能够提供帮助。

AuthZForce

)标准的开源 Java 实现。它提供了完整的 ABAC 实现(PAP、PEP、PDP、PIP)。它是Fiware(一项开源计划)的一部分,由Thales 的一个团队积极开发。

AuthZForce 的缺点

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

实现

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

  • AT&T XACML
  • SunXACML
  • WSO2 - 他们的 WSO2 身份服务器平台的一部分 - 它被称为 Balana
  • Axiomatics(商业 - 这是我工作的地方) - 我们拥有庞大的客户群,使用我们的平台,从财富 50 强公司到敏捷的初创公司。

XACML 和 ALFA 的优势

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


推荐阅读