×

您可以使用绑定服务帐户令牌,这提高了与云提供商身份访问管理 (IAM) 服务(例如AWS上的Red Hat OpenShift Service on AWS IAM或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服务器的标识符。

      为了防止意外故障,AWS上的Red Hat OpenShift Service 将`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
其他资源