加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 云计算 > 正文

引用 Kube-Mgmt 将 OPA 集成到 Kubernetes 集群中

发布时间:2022-04-15 15:20:42 所属栏目:云计算 来源:互联网
导读:Open Policy Agent 简称 OPA,是一种开源的通用策略代理引擎,是 CNCF 毕业的项目。OPA 提供了一种高级声明式语言 Rego,简化了策略规则的定义,以减轻程序中策略的决策负担。在微服务、Kubernetes、CI/CD、API 网关等场景中均可以使用 OPA 来定义策略。 我
  Open Policy Agent 简称 OPA,是一种开源的通用策略代理引擎,是 CNCF 毕业的项目。OPA 提供了一种高级声明式语言 Rego,简化了策略规则的定义,以减轻程序中策略的决策负担。在微服务、Kubernetes、CI/CD、API 网关等场景中均可以使用 OPA 来定义策略。

  我们这里主要讲解在 Kubernetes 中如何集成 OPA,在 Kubernetes 中 OPA 是通过 Admission Controllers 来实现安全策略的。事实上使用 Pod 安全策略(要废弃了)来执行我们的安全策略并没有什么问题,然而,根据定义,PSP 只能应用于 pods。它们不能处理其他 Kubernetes 资源,如 Ingresses、Deployments、Services 等,OPA 的强大之处在于它可以应用于任何 Kubernetes 资源。OPA 作为一个准入控制器部署到 Kubernetes,它拦截发送到 APIServer 的 API 调用,并验证和/或修改它们。你可以有一个统一的 OPA 策略,适用于系统的不同组件,而不仅仅是 pods,例如,有一种策略,强制用户在其服务中使用公司的域,并确保用户只从公司的镜像仓库中拉取镜像。
 
  概述
  OPA 将策略决策与策略执行分离,当应用需要做出策略决策时,它会查询 OPA 并提供结构化数据(例如 JSON)作为输入,OPA 接受任意结构化数据作为输入。
 
  OPA 通过评估查询输入策略和数据来生成策略决策,你可以在你的策略中描述几乎任何的不变因素,例如:
 
  哪些用户可以访问哪些资源。
  哪些子网的出口流量被允许。
  工作负载必须部署到哪些集群。
  二进制文件可以从哪里下载。
  容器可以用哪些操作系统的能力来执行。
  系统在一天中的哪些时间可以被访问。
  策略决定不限于简单的是/否或允许/拒绝,与查询输入一样,你的策略可以生成任意结构化数据作为输出。让我们看一个例子。OPA 的策略是用一种叫做 Rego 的高级声明性语言来声明的,Rego 是专门为表达复杂的分层数据结构的策略而设计的。
 
  Kubernetes APIServer 配置为在创建、更新或删除对象时查询 OPA 以获取准入控制策略。APIServer 将 webhook 请求中的整个对象发送给 OPA,OPA 使用准入审查作为输入来评估它已加载的策略。这个其实和我们自己去实现一个准入控制器是类似的,只是不需要我们去编写代码,只需要编写策略规则,OPA 就可以根据我们的规则去对输入的对象进行验证。
 
  部署
  接下来我们介绍下如何在 Kubernetes 集群中集成 OPA,由于 Kubernetes 中是通过准入控制器来集成 OPA 的,所以我们必须在集群中启用 ValidatingAdmissionWebhook 这个准入控制器。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读