查看原文
其他

Kubernetes将废弃PodSecurityPolicy

zouyee DCOS 2022-07-13



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

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


一、困境

当前PodSecurityPolicy特性存在以下问题:

1. 授权模型存在缺陷

2. 功能易开难关

3. API接口缺乏一致性及扩展性,如MustRunAsNonRoot、AllowPrivilegeEscalation此类配置

4. 无法处理动态注入的side-car(如knative)

5. 在CI/CD场景难以落地等


二、备选


    

当前CNCF生态提供类似能力的项目有两款:Kyverno与Open Policy Agen(OPA).

Kyverno


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

1. 相关策略类似Kubernetes对象,上手容易

2. 配置管理便利

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

4. 在Kubernetes集群中作为动态准入控制器运行。

5. 可以使用资源种类,名称和标签选择器来匹配资源。名称中支持通配符等

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


OPA


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

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

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

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

  • 判断某用户可以访问哪些资源

  • 允许哪些子网对外访问

  • 工作负载可以部署在哪个集群

  • 可以使用哪些镜像

  • 容器可以使用哪些系统功能

  • 什么时间可以访问等

参考资料

1. https://github.com/kubernetes/kubernetes/pull/9717

2.https://docs.google.com/document/d/1VKqjUlpU888OYtIrBwidL43FOLhbmOD5tesYwmjzO4E/edit#

3.https://servicesblog.redhat.com/2019/10/16/open-policy-agent-part-i-the-introduction/




END



 往期 · 精选 

1、干货分享 | K8S调度系统由浅入深:简介

2、干货分享 | K8S调度系统由浅入深:框架


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存