×

您可以使用绑定服务帐户令牌,这可以提高与云提供商身份访问管理 (IAM) 服务(例如 AWS IAM 上的 OpenShift Dedicated 或 Google Cloud Platform IAM)集成的能力。

关于绑定服务帐户令牌

您可以使用绑定服务帐户令牌来限制给定服务帐户令牌的权限范围。这些令牌是受众和时间约束的。这有助于对服务帐户进行 IAM 角色身份验证以及生成安装到 Pod 的临时凭据。您可以通过使用卷投影和 TokenRequest API 来请求绑定服务帐户令牌。

使用卷投影配置绑定服务帐户令牌

您可以通过使用卷投影配置 Pod 以请求绑定服务帐户令牌。

先决条件
  • 您作为具有 `dedicated-admin` 角色的用户可以访问集群。

  • 您已创建服务帐户。此过程假设服务帐户名为 `build-robot`。

步骤
  1. 使用卷投影配置 Pod 以使用绑定服务帐户令牌。

    1. 创建一个名为 `pod-projected-svc-token.yaml` 的文件,内容如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
      spec:
        securityContext:
          runAsNonRoot: true (1)
          seccompProfile:
            type: RuntimeDefault (2)
        containers:
        - image: nginx
          name: nginx
          volumeMounts:
          - mountPath: /var/run/secrets/tokens
            name: vault-token
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
        serviceAccountName: build-robot (3)
        volumes:
        - name: vault-token
          projected:
            sources:
            - serviceAccountToken:
                path: vault-token (4)
                expirationSeconds: 7200 (5)
                audience: vault (6)
      1 防止容器以 root 用户身份运行,以最大限度地降低入侵风险。
      2 设置默认 seccomp 配置文件,限制为必要的系统调用,以降低风险。
      3 对现有服务帐户的引用。
      4 相对于挂载点的文件的路径,将令牌投影到其中。
      5 可选地设置服务帐户令牌的到期时间(以秒为单位)。默认值为 3600 秒(1 小时),此值必须至少为 600 秒(10 分钟)。如果令牌的剩余时间小于其生命周期的 80%,或者令牌已超过 24 小时,则 kubelet 将开始尝试轮换令牌。
      6 可选地设置令牌的目标受众。令牌的接收者应验证接收者身份是否与令牌的受众声明匹配,否则应拒绝令牌。受众默认为 API 服务器的标识符。

      为了防止意外失败,OpenShift Dedicated 会将 `expirationSeconds` 值覆盖为从初始令牌生成起的一年,其中 `--service-account-extend-token-expiration` 默认值为 `true`。您无法更改此设置。

    2. 创建 Pod

      $ oc create -f pod-projected-svc-token.yaml

      kubelet 代表 Pod 请求和存储令牌,使 Pod 可以在可配置的文件路径中使用令牌,并在令牌即将过期时刷新令牌。

  2. 使用绑定令牌的应用程序必须在令牌轮换时处理令牌的重新加载。

    如果令牌的剩余时间小于其生命周期的 80%,或者令牌已超过 24 小时,则 kubelet 将轮换令牌。

在 Pod 外创建绑定服务帐户令牌

先决条件
  • 您已创建服务帐户。此过程假设服务帐户名为 `build-robot`。

步骤
  • 在 Pod 外运行以下命令创建绑定服务帐户令牌

    $ oc create token build-robot
    示例输出
    eyJhbGciOiJSUzI1NiIsImtpZCI6IkY2M1N4MHRvc2xFNnFSQlA4eG9GYzVPdnN3NkhIV0tRWmFrUDRNcWx4S0kifQ.eyJhdWQiOlsiaHR0cHM6Ly9pc3N1ZXIyLnRlc3QuY29tIiwiaHR0cHM6Ly9pc3N1ZXIxLnRlc3QuY29tIiwiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTY3OTU0MzgzMCwiaWF0IjoxNjc5NTQwMjMwLCJpc3MiOiJodHRwczovL2lzc3VlcjIudGVzdC5jb20iLCJrdWJlcm5ldGVzLmlvIjp7Im5hbWVzcGFjZSI6ImRlZmF1bHQiLCJzZXJ2aWNlYWNjb3VudCI6eyJuYW1lIjoidGVzdC1zYSIsInVpZCI6ImM3ZjA4MjkwLWIzOTUtNGM4NC04NjI4LTMzMTM1NTVhNWY1OSJ9fSwibmJmIjoxNjc5NTQwMjMwLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp0ZXN0LXNhIn0.WyAOPvh1BFMUl3LNhBCrQeaB5wSynbnCfojWuNNPSilT4YvFnKibxwREwmzHpV4LO1xOFZHSi6bXBOmG_o-m0XNDYL3FrGHd65mymiFyluztxa2lgHVxjw5reIV5ZLgNSol3Y8bJqQqmNg3rtQQWRML2kpJBXdDHNww0E5XOypmffYkfkadli8lN5QQD-MhsCbiAF8waCYs8bj6V6Y7uUKTcxee8sCjiRMVtXKjQtooERKm-CH_p57wxCljIBeM89VdaR51NJGued4hVV5lxvVrYZFu89lBEAq4oyQN_d6N1vBWGXQMyoihnt_fQjn-NfnlJWk-3NSZDIluDJAv7e-MTEk3geDrHVQKNEzDei2-Un64hSzb-n1g1M0Vn0885wQBQAePC9UlZm8YZlMNk1tq6wIUKQTMv3HPfi5HtBRqVc2eVs0EfMX4-x-PHhPCasJ6qLJWyj6DvyQ08dP4DW_TWZVGvKlmId0hzwpg59TTcLR0iCklSEJgAVEEd13Aa_M0-faD11L3MhUGxw0qxgOsPczdXUsolSISbefs7OKymzFSIkTAn9sDQ8PHMOsuyxsK8vzfrR-E0z7MAeguZ2kaIY7cZqbN6WFy0caWgx46hrKem9vCKALefElRYbCg3hcBmowBcRTOqaFHLNnHghhU1LaRpoFzH7OUarqX9SGQ
更多资源