zl程序教程

您现在的位置是:首页 >  后端

当前栏目

k8s 安全之psp(Pod Security Policies(Adminssion Controller) 和 psa (PodSecurity admission)

k8s安全 Security Pod Controller
2023-09-11 14:20:30 时间

Pod Security Policies(Adminssion Controller)授予users和service accounts创建或更新pods使用资源的权限。这是一种集群级别的资源类型,用来限制pod对敏感资源的使用。它能够控制Pod的各个安全方面。

【温馨提示】PodSecurityPolicy 在 Kubernetes v1.21 中被弃用, 在 Kubernetes v1.25 中被移除。

                   Pod security admission 是 Kubernetes 内置的一种准入控制器,在 Kubernetes V1.23版本中这一特性门是默认开启的,在V1.22中需要通过 Kube-apiserver 参数--feature-gates="...,PodSecurity=true"开启。在低于V1.22的 Kuberntes 版本中也可以自行安装 Pod Security Admission Webhook。

举例来说PSP可以做的事情:

1. 是否允许Pod使用宿主节点的PID,IPC,网络命名空间。
2. Pod是否允许绑定到宿主节点端口。
3. 容器运行时允许使用的用户ID。
4. 是否允许特权模式的POD。

 

 

Pod security admission 是 Kubernetes 内置的一种准入控制器,在 Kubernetes V1.23版本中这一特性门是默认开启的,在V1.22中需要通过 Kube-apiserver 参数--feature-gates="...,PodSecurity=true"开启。在低于V1.22的 Kuberntes 版本中也可以自行安装 Pod Security Admission Webhook。

PodSecurity admission 是通过执行内置的 Pod Security Standards 来限制集群中的 pod 的创建。
Pod 安全性标准定义了三种不同的 策略(Policy),以广泛覆盖安全应用场景。 这些策略是 叠加式的(Cumulative),安全级别从高度宽松至高度受限。 本指南概述了每个策略的要求。

2. Pod Security Standards 实施方法

在 Kubernetes 集群中开启了 Pod security admission 特性门之后,就可以通过给 namespace 设置 label 的方式来实施 Pod Security Standards。其中有三种设定模式可选用:

首先需要考虑当前的 pod security admission 是否适合你的集群,目前它旨在满足开箱即用的最常见的安全需求,与 PSP 相比它存在以下差异:

  • pod security admission 只是对 pod 进行安全标准的检查,不支持对 pod 进行修改,不能为 pod 设置默认的安全配置。
  • pod security admission 只支持官方定义的三种安全标准策略,不支持灵活的自定义安全标准策略。这使得不能完全将PSP规则迁移到 pod security admission,需要进行具体的安全规则考量。
  • pod security admission 不像 PSP 一样可以与具体的用户进行绑定,只支持豁免特定的用户或者 RuntimeClass 及 namespace。

为名字空间设置 Pod 安全性准入控制标签

一旦特性被启用或者安装了 Webhook,你可以配置名字空间以定义每个名字空间中 Pod 安全性准入控制模式。 Kubernetes 定义了一组标签, 你可以设置这些标签来定义某个名字空间上要使用的预定义的 Pod 安全性标准级别。 你所选择的标签定义了检测到潜在违例时, 控制面要采取什么样的动作。

模式描述
enforce 策略违例会导致 Pod 被拒绝
audit 策略违例会触发审计日志中记录新事件时添加审计注解;但是 Pod 仍是被接受的。
warn 策略违例会触发用户可见的警告信息,但是 Pod 仍是被接受的。

名字空间可以配置任何一种或者所有模式,或者甚至为不同的模式设置不同的级别。

对于每种模式,决定所使用策略的标签有两个: