OpenPolicy Agent如何允许开发人员团队在多云和混合云环境中编写和实施一致的策略和授权。
随着多云战略成为完全主流,公司和开发团队必须弄清楚如何在云环境中创建一致的方法。多云本身无处不在:在云中的公司中,整整93%都拥有多云战略——这意味着他们使用多个公共云供应商,如亚马逊网络服务、谷歌云平台或微软Azure。此外,87%或这些公司拥有混合云战略,混合公共云和本地云环境。
公司迁移到云的主要原因是提高计算、存储、网络和数据库功能的性能、可用性、可扩展性和成本效益。然后,组织在很大程度上采用多云策略以避免供应商锁定。
但多云还提供了第二种诱人的可能性,即原始云原生逻辑的扩展:抽象云计算架构的能力,以便它们可以在云提供商之间自动无缝地(如果不只是快速)移植,以最大限度地提高性能、可用性和成本节省——或者至少在一个云供应商发生故障时保持正常运行时间。像Kubernetes这样的与云无关的平台在任何环境(无论是AWS、GCP、Azure、私有云还是其他任何环境)中都运行相同,让我们可以一窥公司如何实现这种多云可移植性。
虽然理论上很优雅,但多云可移植性在实践中很复杂。供应商特定功能、API和难以移植的数据湖等依赖关系使真正的应用程序和工作负载可移植性成为一个复杂的过程。在实践中,只有当组织实现跨云环境的一致性时,多云可移植性才真正起作用并且运行良好。为此,企业需要在上述供应商、云、API等之间工作的策略抽象级别,使他们能够轻松地跨云原生业务移植技能、人员和流程。虽然单个应用程序可能并不总是在云之间无缝移植,但组织的整体方法应该如此。
使用OPA跨云创建一致的策略和流程
开放策略代理(OPA)是一种流行的工具,正是因为它与域无关。OPA由Styra开发并捐赠给云原生计算基金会,是一种开源策略引擎,可让开发人员团队在整个云原生领域构建、扩展和实施一致的、上下文感知的策略和授权。由于OPA允许团队在任意数量的环境中、任意数量的执行点(针对云基础架构、Kubernetes、微服务API、数据库、服务网格、应用程序授权等)编写和执行策略,因此它允许组织采用可移植的方法跨多云和混合云环境的策略实施。
此外,作为一种策略即代码工具,OPA使组织能够采用公司wiki和人们头脑中的策略,并将它们编入机器可处理的策略库中。策略即代码不仅可以让组织在任意数量的云中自动执行策略,还可以向左移动并向上游注入策略,更接近跨云工作的开发团队,以便更快地捕捉和预防安全、运营和合规风险.将OPA与Terraform和Kubernetes配对
例如,许多开发人员现在将OPA与基础设施即代码(IaC)工具(如Terraform和AWSCDK)结合使用。开发人员使用IaC工具对其供应商托管的云基础架构进行声明性更改——描述他们希望如何配置基础架构的所需状态,并让Terraform确定需要进行哪些更改。然后,开发人员使用OPA(一种策略即代码工具)编写策略来验证Terraform建议的更改,并在将它们应用于生产之前测试错误配置或其他问题。
同时,OPA可以自动批准日常基础设施更改,以减少手动同行评审的需要(以及随之而来的人为错误的可能性)。这为开发人员创建了一个重要的安全网和健全性检查,并允许他们使用不同的配置进行无风险的试验。虽然云基础架构本身不能在供应商之间移植,但这种方法是设计使然。
以类似的方式,开发人员还使用OPA来控制、保护和操作Kubernetes跨云,甚至跨各种Kubernetes发行版。Kubernetes已成为部署、扩展和管理容器化应用程序队列的标准。正如Kubernetes是可移植的一样,您在其上运行的OPA策略也是如此。
OPA有许多Kubernetes用例。例如,一个流行的用例是使用OPA作为Kubernetes准入控制器,以确保正确部署容器,并具有适当的配置和权限。开发人员还可以使用OPA来控制Kubernetes的入口和出口决策,例如编写禁止具有冲突主机名的入口的策略,以确保应用程序永远不会窃取彼此的互联网流量。对于多云云而言,最重要的或许是能够确保跨云的每个Kubernetes分布可证明符合企业范围的企业安全策略。
创建标准的云原生构建块
在公司可以跨公共云无缝移植应用程序之前,他们必须首先为每个云原生环境中的开发人员创建标准构建块。按照这些思路,开发人员不仅使用OPA来创建策略,而且还可以在CI/CD管道中自动执行安全性、合规性和操作标准。这为任何多云部署实现了可重复扩展,同时加快了开发速度并减少了手动错误。
OPA启用策略即代码意味着公司可以将Terraform等工具用于公共云,OPA用于策略,Kubernetes用于容器管理,OPA用于策略,以及任意数量的微服务API和应用程序授权工具以及OPA用于策略,同时运行这些工具在CI/CI管道或开发人员的笔记本电脑上使用相同的OPA策略。
简而言之,组织无需浪费任何时间对应用程序进行逆向工程以实现多云可移植性。相反,他们可以专注于使用通用技能在整个云原生堆栈中构建可重复的流程。
TimHinrichs是OpenPolicyAgent项目的联合创始人和Styra的CTO。在此之前,他共同创立了OpenStackCongress项目,并且是VMware的一名软件工程师。在过去的18年里,Tim为云计算、软件定义网络、配置管理、网络安全和访问控制等不同领域开发了声明式语言。他获得了博士学位。2008年获得斯坦福大学计算机科学博士学位。