Kubernetes废弃PodSecurityPolicy后续

Kubernetes社区将在1.21版本中弃用PSP,并将1.25版本中移除该API。目前CNCF生态圈相似项目:Kyverno与Open Policy Agen(OPA).git

PodSecurityPolicy是集群级别的Pod安全策略,其对Pod的操做进行细粒度的受权。在Kubernetes架构中以Admission Controller(准入控制,相似NamespaceLifecycle、ResourceQuota等),通俗来说就是一种写入前检查插件github


1、PSP困境

当前PodSecurityPolicy特性存在如下问题:安全

  1. 受权模型存在缺陷
  2. 功能易开难关
  3. API接口缺少一致性及扩展性,如MustRunAsNonRoot、AllowPrivilegeEscalation此类配置
  4. 没法处理动态注入的side-car(如knative)
  5. 在CI/CD场景难以落地

2、备选方案

Kyverno简介

Kyverno是为Kubernetes设计的策略引擎(CNCF sandbox项目)。其具有如下功能:markdown

  • 相关策略相似Kubernetes对象,上手容易架构

  • 配置管理便利框架

  • 为Kubernetes资源的策略进行声明式验证,更改和生成资源配置。ide

  • 在Kubernetes集群中做为动态准入控制器运行。微服务

  • 能够使用资源种类,名称和标签选择器来匹配资源。名称中支持通配符等oop

当前采纳该方案的开源项目:fluxcd v2等google

OPA简介

Open Policy Agent(即OPA, CNCF孵化项目), 为策略决策需求提供了一个统一的框架。它将策略决策从软件业务逻辑中解耦剥离,将策略定义、决策过程抽象为通用模型,实现了一个通用策略引擎,

其可用于微服务、Kubernetes、 CI/CD、API网关等应用场景。

OPA能够经过sidecar、外部服务或是依赖库的方式与已有的软件系统进行集成。OPA 能够接受任何类型的结构化数据,决策流程以下图所示:

OPA经过数据输入和策略来进行决策,决策过程和数据无关。例如:

  • 判断某用户能够访问哪些资源
  • 容许哪些子网对外访问
  • 工做负载能够部署在哪一个集群
  • 能够使用哪些镜像
  • 容器能够使用哪些系统功能
  • 什么时间能够访问等

后续相关内容,请查看公众号:DCOS

参考资料

相关文章
相关标签/搜索