10

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

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

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

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

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

4

2 回答 2

9

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。

于 2019-08-02T15:53:51.697 回答
6

也许最具体的答案是详细描述 Chef Automate 如何使用 OPA 来实现应用程序授权

更一般地说,我们正在计划一个指南,描述如何使用 OPA 进行应用程序授权——它需要比 SO 答案更详细的信息。但是使用 OPA(或任何策略引擎)进行应用程序授权在一定程度上取决于您的应用程序、其架构、您的 SLA 等。但这里有几个关键问题需要考虑:

  • 政策:您的最终用户政策需要多少表现力?他们只是定义用户属性或用户角色,还是他们也将用户属性/角色映射到权限?OPA 允许您将这些最终用户策略请求为 JSON 对象,然后编写使用这些 JSON 对象做出决策的策略规则。为了提高效率,您可以将这些 JSON 对象编译成真正的 OPA 规则
  • 执行:您需要在哪里执行授权策略(例如网关、微服务、数据库)?您对延迟、数据大小、数据库查询语言的表达能力的要求都会影响这个决定。OPA 足够灵活,可以帮助解决所有这些问题,并且有几个特定的​​集成可以提供帮助:用于微服务的 Envoy 和类似的服务网格系统以及用于数据库的 SQL/ElasticSearch
  • 数据:有多少属性数据,它的变化频率,你需要什么样的一致性保证,你有什么机制可以将数据放入 OPA(例如缓存,事件流)。这是将数据注入 OPA 的指南;它使用 LDAP/AD 作为示例数据源,但任何数据源的原理都是相同的。

我们总是很乐意讨论您的申请细节,并帮助您找到适合 OPA 的合适人选。随时联系 OPA slack 频道

于 2019-08-08T16:00:44.333 回答