UID/GID 分配
在 Kubernetes 中,每个 Pod 都以特定的用户 ID(UID)和组 ID(GID)运行,以确保安全性和适当的访问控制。默认情况下,Pod 可能以 root 用户(UID 0)身份运行,这可能带来安全风险。为了增强安全性,建议为 Pod 分配非 root 的 UID 和 GID。
ACP 允许自动为命名空间分配特定的 UID 和 GID 范围,以确保该命名空间内的所有 Pod 都以指定的用户和组 ID 运行。
启用 UID/GID 分配
要为命名空间启用 UID/GID 分配,请按照以下步骤操作:
- 进入 项目管理。
- 在左侧导航栏点击 命名空间。
- 点击目标命名空间。
- 点击 操作 > 更新 Pod 安全策略。
- 将 执行 选项值更改为 受限,点击 更新。
- 点击 标签 旁的编辑图标,添加键为
security.cpaas.io/enabled,值为true的标签,点击 更新。(要禁用,删除此标签或将值设置为false。) - 点击 保存。
验证 UID/GID 分配
UID/GID 范围
在命名空间详情页面,可以在 注解 中查看分配的 UID 和 GID 范围。
security.cpaas.io/uid-range 注解指定了该命名空间内 Pod 可分配的 UID/GID 范围,例如 security.cpaas.io/uid-range=1000002000-1000011999,表示 uid/gid 范围是从 1000002000 到 1000011999。
验证 Pod 的 UID/GID
如果 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 超出分配范围。