华为云UCS-使用工作负载Identity安全访问云服务:获取IAM Token
时间:2025-03-18 14:32:57
获取 IAM Token
- 创建 ServiceAccount,此处 ServiceAccount 的名称需要与2时填写的 ServiceAccountName 保持一致。
apiVersion: v1 kind: ServiceAccount metadata: name: test_sa_name # 与配置身份转换规则处保持一致
- 如下所示,在工作负载中新增 ServiceAccount 以及 Volume 相关配置。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx version: v1 template: metadata: labels: app: nginx version: v1 spec: containers: - name: container-1 image: nginx:latest volumeMounts - mountPath: "/var/run/secrets/tokens" # 将Kubernetes生成的ServiceAccountToken 挂载到 /var/run/secrets/tokens/token_path 文件内 name: token-volume imagePullSecrets: - name: default-secret serviceAccountName: test_sa_name # 上一步创建的ServiceAccount的名称 volumes: - name: token-volume projected: defaultMode: 420 sources: - serviceAccountToken: audience: ucs-cluster-identity # 此处取值必须为身份提供商的客户端ID expirationSeconds: 7200 # 过期时间 path: token_path # 路径名称,可自定义
- 创建完成后,登录到容器中获取 Token。
- 构造请求体数据,项目ID的获取请参见获取项目ID。
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSUzIXXXXX" // 上一步获得的 token 内容 }, "scope": { "project" : { "id" : "05495693df80d3c92fa1c01795c2be02", // 项目 ID "name" : "cn-north-7" } } } }
- 请求IAM接口以获取IAM Token,IAM的Endpoint信息请参见地区和终端节点。
curl -i --location --request POST 'https://{{iam endpoint}}/v3.0/OS-AUTH/id-token/tokens' --header 'X-Idp-Id: {{workload_identity}}' --header 'Content-Type: application/json' --data @token_body.json
- workload_identity为1中注册的身份提供商名称,此示例内为 ucs-cluster-identity。
- token_body.json 为构造的请求体数据文件。
- 返回体内获取IAM Token,响应消息头中 X-Subject-Token 字段即为 IAM Token。
support.huaweicloud.com/bestpractice-ucs/ucs_03_0007.html