首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用开放策略代理(OPA)作为ABAC系统

使用开放策略代理(OPA)作为ABAC系统
EN

Stack Overflow用户
提问于 2019-08-01 10:20:08
回答 2查看 6.3K关注 0票数 12

我有一个项目,需要ABAC对我的项目资源进行访问控制。我一直在考虑OPA和authzforce作为实现ABAC的选项,OPA看起来可能比authzforce要简单一些。我看到OPA将自己比作其他系统和范例,但是它为ABAC提供的例子还有很多需要改进的地方。主要是因为ABAC需要使用执行策略、围绕策略进行决策、获取决策的主题和对象属性的点。我觉得OPA有所有的东西,除了最后一部分,但是很难判断这是否是真的,因为他们的ABAC例子只是一次性的。

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

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

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

我觉得我沉浸在文档中,而OPAs自己的文档中似乎有相当多的缺失来解释如何做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-02 15:53:51

OPA看起来可能不像authzforce那么复杂

这两种方法各有优缺点。首先,正如您所认识到的,OPA和AuthZForce都是ABAC实现(您可以阅读更多关于ABAC 这里这里的内容)。

OPA

only是一种相对新颖的模型,其主要目标是(但不仅仅)解决基础设施(例如Kubernetes)的细粒度授权问题。他们甚至为Istio和Kubernetes建立了预建的集成点。OPA提供了一个PEP (强制/集成)和一个PDP (策略决策点),尽管它不一定这样称呼它们。它使用的语言称为REGO (DATALOG的派生语言)。

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

是的,你是绝对正确的,这就给你增加了为PIP实现替代方案的负担。

我觉得我沉浸在文档中,而OPAs自己的文档中似乎有相当多的缺失来解释如何做到这一点。

联系Styra --他们在OPA周围销售服务。或者,重新考虑您的选择,并查看XACML (见下文)。

弊端

  • 这种语言不容易理解。
  • 语言不规范
  • OPA不支持策略信息点(PIP) --这是通过设计实现的。

实现

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

看一看他们在Netflix做的工作。这是我所知道的主要实现。你也可以接触到斯提拉,OPA背后的公司,他们将能够提供帮助。

AuthZForce

AuthZForce是XACML (eXtensible Access Control Markup Language xacml)标准的开源Java实现。它提供了一个完整的ABAC实现(PAP、PEP、PDP、PIP)。它是菲瓦尔 (开源项目)的一部分,并且是由泰勒斯队积极开发的。

AuthZForce缺陷

  • 它似乎没有用于作者策略的图形界面。我找到了一个关于KEYROCK的参考资料,但是没有看到任何截图。
  • 它不支持阿尔法,这是一种缩写的授权语言。

实现

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

  • AT&T XACML
  • SunXACML
  • WSO2 --他们的WSO2身份服务器平台的一部分--叫做巴拉娜
  • 公理化 (商业-这是我工作的地方)-我们有一个庞大的客户群使用我们的平台,从财富50强公司到敏捷创业。

XACML和ALFA的好处

XACML / ALFA的主要优点之一是它们是标准并被广泛采用。该标准已于2001年问世,并与其他标准(如SAML、OAuth和SCIM )进行互操作。

票数 10
EN

Stack Overflow用户

发布于 2019-08-08 16:00:44

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

更广泛地说,我们计划编写一份指南,描述如何使用OPA进行应用程序授权--它需要更多的细节,而不是这样的答案。但是,使用OPA (或任何策略引擎)进行应用程序授权在一定程度上取决于您的应用程序、其体系结构、SLA等。但是,下面是一些需要考虑的关键问题:

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

我们一直很高兴通过您的应用程序的细节,并帮助您找到适合OPA的合适人选。可以自由地接触OPA松弛信道

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57306834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档