企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ### **PodSecurityPolicy** PSP已经在1.21版本中标记为deperacted状态,将在1.25版本正式删除。PSP的作用有两个:一是ValidatingWebhook,验证Pod的某些字段是否符合PSP中配置的策略,如果不符合则拒绝创建这个Pod;二是MutatingWebhook,给Pod添加PSP中的配置。 如下是PSP的一个示例yaml文件 ``` apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restrictive spec: privileged: false # 验证Pod不是priviledged模式 hostNetwork: false # 验证Pod没有使用hostNetwork volumes: # 验证Pod使用了以下三种volumes - 'configMap' - 'secret' - 'persistentVolumeClaim' defaultAddCapabilities: # 给Pod添加如下的capabilities - 'CAP_AUDIT_CONTROL' - 'CAP_NET_ADMIN' selinux: # 允许Pod配置的selinux规则白名单 - ... ``` 接下来,我们来介绍一下如何通过PSP进行常用的配置,可参考[Kubernetes文档](https://kubernetes.io/zh/docs/concepts/policy/pod-security-policy/) ### **[Seccomp](https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp)** 从1.19版本开始,可以在Pod或Container的SecurityContext中通过seccompProfile字段来配置容器的seccomp。在1.19以前的版本,可以在Pod的Annotation配置seccomp。 在PSP中,配置Seccomp只能通过annotations来配置(截止到v1.23)。有如下两个字段: * seccomp.security.alpha.kubernetes.io/defaultProfileName 该字段用来为指定容器配置默认的 seccomp 模版。可选值为: * `unconfined`:如果没有指定其他替代方案,Seccomp 不会被应用到容器进程上 (Kubernets 中的默认设置)。 * `runtime/default`:使用默认的容器运行时模版。 * `docker/default`:使用 Docker 的默认 seccomp 模版。自 1.11 版本废弃。 应改为使用`runtime/default`。 * `localhost/<路径名>`:指定节点上路径`<seccomp_root>/<路径名>`下的一个 文件作为其模版。其中`<seccomp_root>`是通过`kubelet`的标志`--seccomp-profile-root`来指定的。 注意,从1.19开始,`--seccomp-profile-root`参数已经废弃掉了,鼓励用户使用默认的值`/var/lib/kubelet/seccomp` * seccomp.security.alpha.kubernetes.io/allowedProfileNames 该字段是一个白名单,指定了Pod的注解`seccomp.security.alpha.kubernetes.io/defaultProfileName`的哪些值被允许。该字段的值以`,`隔开,可取的值为上面的四个(即`unconfined`、`runtime/default`、`docker/default`和`localhost/<路径>`)。还可以是`*`,用来表示允许所有的值。 Absence of this annotation means that the default cannot be changed(这句话没看懂)。