Kubernetes SecurityContext(s)
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
在指定 Pod 的安全上下文时,可以使用多个属性。从防御安全的角度来看,您应该考虑:
将 runASNonRoot 设置为 True
配置 runAsUser
如果可能,考虑 限制 权限,指明 seLinuxOptions 和 seccompProfile
不要 通过 runAsGroup 和 supplementaryGroups 给予 特权 组 访问权限
fsGroup 整数 | 适用于所有容器的特殊补充组。某些卷类型允许 Kubelet 更改该卷的所有权,使其归 Pod 所有: 1. 拥有的 GID 将是 FSGroup 2. 设置了 setgid 位(在卷中创建的新文件将由 FSGroup 拥有) 3. 权限位与 rw-rw---- 进行 OR 运算。如果未设置,Kubelet 将不会修改任何卷的所有权和权限 |
这定义了在 Pod 内部暴露之前 更改卷的所有权和权限 的行为。 | |
runAsGroup 整数 | 运行容器进程的入口点的 GID。如果未设置,则使用运行时默认值。 |
runAsNonRoot 布尔值 | 表示容器必须以非根用户身份运行。如果为 true,Kubelet 将在运行时验证映像,以确保它不以 UID 0(根)身份运行,如果是,则无法启动容器。 |
runAsUser 整数 | 运行容器进程的入口点的 UID。如果未指定,则默认为映像元数据中指定的用户。 |
seLinuxOptions SELinuxOptions 有关 seLinux 的更多信息 | 应用于所有容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机的 SELinux 上下文。 |
seccompProfile SeccompProfile 有关 Seccomp 的更多信息 | 此 Pod 中容器使用的 seccomp 选项。 |
supplementalGroups 整数数组 | 除了容器的主要 GID 之外,应用于每个容器中运行的第一个进程的组 列表。 |
Sysctls 持有 用于 Pod 的命名空间 sysctls 列表。具有不受支持的 sysctls(由容器运行时)可能会导致启动失败。 | |
应用于所有容器的 Windows 特定设置。如果未指定,将使用容器的 SecurityContext 中的选项。 |
此上下文设置在 容器定义 内。从防御安全的角度来看,您应该考虑:
allowPrivilegeEscalation 设置为 False
不要添加敏感的 能力(并删除不需要的能力)
privileged 设置为 False
如果可能,将 readOnlyFilesystem 设置为 True
将 runAsNonRoot 设置为 True 并设置 runAsUser
如果可能,考虑 限制 权限,指明 seLinuxOptions 和 seccompProfile
不要 通过 runAsGroup 给予 特权 组 访问权限。
请注意,在 SecurityContext 和 PodSecurityContext 中设置的属性,SecurityContext 中指定的值具有 优先权。
AllowPrivilegeEscalation 控制进程是否可以 获得比其父进程更多的特权。此布尔值直接控制是否会在容器进程上设置 no_new_privs 标志。当容器以 Privileged 身份运行或具有 CAP_SYS_ADMIN 时,AllowPrivilegeEscalation 始终为 true | |
capabilities Capabilities 有关 Capabilities 的更多信息 | 运行容器时添加/删除的能力。默认为默认的能力集。 |
privileged 布尔值 | 以特权模式运行容器。特权容器中的进程基本上 等同于主机上的 root。默认为 false。 |
procMount 字符串 | procMount 表示 用于容器的 proc 挂载类型。默认值为 DefaultProcMount,它使用容器运行时的只读路径和屏蔽路径的默认值。 |
此 容器是否具有只读根文件系统。默认值为 false。 | |
runAsGroup 整数 | 运行容器进程的入口点的 GID。如果未设置,则使用运行时默认值。 |
runAsNonRoot 布尔值 | 表示容器必须 以非根用户身份运行。如果为 true,Kubelet 将在运行时验证映像,以确保它不以 UID 0(根)身份运行,如果是,则无法启动容器。 |
runAsUser 整数 | 运行容器进程的入口点的 UID。如果未指定,则默认为映像元数据中指定的用户。 |
seLinuxOptions SELinuxOptions 有关 seLinux 的更多信息 | 应用于容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配一个随机的 SELinux 上下文。 |
此容器使用的 seccomp 选项。 | |
应用于所有容器的 Windows 特定设置。 |
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)