在我们为客户构建的许多分布式云原生解决方案中,Open Policy Agent (OPA) 已经迅速地展现了它的价值。OPA 提供了一套统一的框架和语言,用于声明,实施和控制云原生解决方案中各个组件的策略。它是实现安全策略即代码的工具中的一个很好的例子。无论是在K8s 集群中部署资源,还是在服务网格中跨服务执行访问控制,抑或是通过代码精准地控制应用资源访问,在很多场景中 OPA 都给我们提供了非常顺畅的体验。最近的一个商业产品 Styra 声明式授权服务(Styra's Declarative Authorization Service (DAS)),通过向 K8s 的 OPA 中添加管理工具(或者说控制平面),预先构建的策略库,策略影响分析和日志记录等功能,使企业采用 OPA 变得更加简单。我们期待 OPA 的成熟和扩展,希望它可以从一个可用的服务演变成一个(大型的)以数据为中心的解决方案。
横跨多个技术领域统一定义和实施安全策略很有挑战。即使对于简单的应用程序,也必须使用其组件内置的安全策略配置和实施机制,来控制对容器编排器、保存服务状态的服务及数据存储等组件的访问。
我们对开放策略代理(OPA)这个尝试解决此问题的开源技术感到非常兴奋。OPA可以使用Rego策略定义语言,以代码的方式进行细粒度的访问控制与灵活的策略定义。Rego在应用程序代码之外,以分布式且不干扰用户的方式实施策略。在撰写本文时,OPA以统一而灵活的策略定义及执行实现,确保了通过Envoy边车和Kafka访问Kubernetes API和微服务API的安全性。它也可以用作任何服务的边车,用以验证访问策略或过滤响应数据。OPA背后的公司Styra针对分布式策略的集中可见性提供提供商业化的解决方案。我们希望OPA可以通过CNCF孵化计划成熟起来,并继续为多样化的数据存储等更具挑战性的策略执行场景提供支持。