了解PodSecurityPolicy

PodSecurityPolicy 是一种集群级别的资源,它定义了用户能否在 pod 中使用各种安全相关的特性。默认是没设置

  1. kubectl get podsecuritypolicies.policy

image.png

一个 PodSecurityPolicy 资源可以定义以下事项:

  • 是否允许 pod 使用宿主节点的 PID、 IPC、网络命名空间
  • pod 允许绑定的宿主节点端口
  • 容器运行时允许使用的用户 ID
  • 是否允许拥有特权模式容器的 pod
  • 允许添加哪些内核功能,默认添加哪些内核功能,总是禁用哪些内核功能
  • 允许容器使用哪些 SELinux 选项
  • 容器是否允许使用可写的根文件系统
  • 允许容器在哪些文件系统组下运行
  • 允许 pod 使用哪些类型的存储卷

检视一个 PodSecurityPolicy 样例

以下代码清单展示了一个 PodSecurityPolicy 的样例。 它阻止了 pod 使用宿主节点的 PID、 IPC、网络命名空间,运行特权模式的容器,以及绑定大多数宿主节点的端口(除 11000~ 11000 和 13000~ 14000 范围内的端口)。 它没有限制容器运行时使用的用户、用户组和 SELinux 选项。
image.png

了解 runAsUser fsGroup 和 supplementalGroup 策略

使用 MustRunAs 规则

只允许容器以用户 ID 2 的 身份运行井限制默认的文件系统组和增补组 ID 在2-10或 20-30 的范围
image.png

配置允许、默认添加、禁止使用的内核功能

Linux 内核功能来定义更细粒度的权限配置。 以下三个字段会影响容器可以使用的 内核功能:

  • allowedCapabilities
  • defaultAddCapabi lities
  • requiredDropCapabilities

image.png

限制 pod 可以使用的存储卷类型

一个 PodSecurityPolicy 需要 允许 pod 使用以下类型的存储卷: emptyDir、 configMap、 secret、 downwardAPI 、 persistentVolumeClaim
image.png