在 Kubernetes 中,每个 Pod 都以特定的用户 ID(UID)和组 ID(GID)运行,以确保安全性和适当的访问控制。默认情况下,Pod 可能以 root 用户(UID 0)身份运行,这可能带来安全风险。为了增强安全性,建议为 Pod 分配非 root 的 UID 和 GID。
ACP 允许自动为命名空间分配特定的 UID 和 GID 范围,以确保该命名空间内的所有 Pod 都以指定的用户和组 ID 运行。
要为命名空间启用 UID/GID 分配,请按照以下步骤操作:
security.cpaas.io/enabled
,值为 true
的标签,点击 更新。(要禁用,请移除此标签或将值设置为 false
。)在命名空间详情页,可以在 注解 中查看分配的 UID 和 GID 范围。
security.cpaas.io/uid-range 注解指定了该命名空间中 Pod 可分配的 UID/GID 范围,例如 security.cpaas.io/uid-range=1000002000-1000011999,表示 uid/gid 范围是从 1000002000 到 1000011999。
如果 Pod 在 securityContext
中未指定 runAsUser
和 fsGroup
,平台将自动分配 UID 范围中的第一个值。
在该命名空间中创建一个 Pod,YAML 配置如下:
Pod 创建后,获取 Pod 的 yaml 以检查分配的 UID 和 GID:
Pod 的 YAML 会在 securityContext
部分显示分配的 UID 和 GID:
如果 Pod 在 securityContext 中指定了 runAsUser 和 fsGroup,平台会验证指定的 UID/GID 是否在分配范围内。如果不在范围内,Pod 创建将失败。
在该命名空间中创建一个 Pod,YAML 配置如下:
应用该 YAML 后,Pod 创建将失败,并显示错误信息,提示指定的 UID/GID 超出分配范围。