27.2.4.2. 用户 ID


用户 ID 可以在容器镜像或容器集定义中定义。完整 卷安全 主题涵盖基于用户 ID 控制存储访问,应在设置 NFS 持久性存储前读取。

注意

与使用用户 ID 相比,通常会首选使用 supplemental 组 ID 来获得对持久性存储的访问。

在上面显示的目标 NFS 目录示例中,容器需要将其 UID 设定为 65534,忽略组 ID。因此可以把以下内容添加到 Pod 定义中:

spec:
  containers: 1
  - name:
  ...
    securityContext:
      runAsUser: 65534 2
1
Pods 包括一个特定于每一个容器的 securityContext (如此处所示),以及一个适用于 pod 中定义的所有容器的 pod 级别 securityContext
2
65534 是 nfsnobody 用户。

假设 default 项目和 restricted SCC,pod 请求的用户 ID 65534 不被允许,因此 pod 失败。pod 因以下原因失败:

  • 它要求 65534 作为其用户 ID。
  • 检查 Pod 可用的所有 SCC 都会检查哪个 SCC 允许用户 ID 65534 (实际上,会检查 SCC 的所有策略,但这里着重关注用户 ID)。
  • 因为所有可用的 SCC 都使用 MustRunAsRange 作为其 runAsUser 策略,所以需要 UID 范围检查。
  • 65534 不包含在 SCC 或项目的用户 ID 范围内。

一般情况下,作为一个最佳实践方案,最好不要修改预定义的 SCC。解决这个问题的首选方法是创建一个自定义 SCC,如完整的 卷安全 主题中所述。可以创建一个自定义 SCC,以便定义最小和最大用户 ID,仍强制进行 UID 范围检查,UID 65534 会被允许。

注意

要使用自定义 SCC,需要首先将其添加到适当的服务帐户(service account)中。例如,在一个特定项目中使用 default 服务账户(除非在 pod 规格中指定了另外一个账户)。详情请参阅 向用户、组或项目添加 SCC

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.