首页/开发/CI/CD 与发布速查/工作负载身份联合(Workload Identity)
环境与配置管理60 条

工作负载身份联合(Workload Identity)

云侧用联邦把外部身份(K8s ServiceAccount、CI OIDC 等)映射为可扮演角色:静态密钥进一步退场。

CI/CD 与发布速查开发更新于 2026-10-13

工作负载身份联合是什么

工作负载身份联合让云侧把外部身份——K8s 的 ServiceAccount、CI 平台的 OIDC 令牌——映射为可扮演的云角色:运行时用短时令牌换取临时凭据,而不是先发放长期密钥再兑换。静态 AK 因此退场,凭据泄露窗口与「这个身份实际在哪里运行」强绑定;条件是写进配置、可评审的。

基本信息

适用平台AWS / GCP / Azure 等云的角色联合;配合 K8s 与主流 CI
GCPWorkload Identity Federation:身份池与提供方,属性条件限制来源
Azure联合凭据(federated credentials)绑定外部签发者与主体
K8s 侧ServiceAccount 令牌投射 + 云侧信任(IRSA 等模式)

典型使用场景

  • CI 部署云资源:流水线用 OIDC 令牌换临时凭据,仓库里不再有长期密钥
  • K8s 访问对象存储:ServiceAccount 与云角色绑定,按 Pod 身份授权
  • 跨云信任:一个云的工作负载换取另一个云的临时凭据
  • 审计收口:换取的凭据带会话标签,云审计日志可定位发起身份
  • 收窄爆炸半径:条件限定「仅主干分支、仅受保护环境」可扮演
  • 非人类身份盘点:服务、流水线、自动化脚本逐个迁到联邦身份,登记负责人

云侧要素与 GitHub Actions 示例

云侧要素与 GitHub Actions 示例
# 云侧要素:颁发者 / 主体与属性映射 / 条件 / 目标角色
permissions:
  id-token: write  # 允许工作流签发 OIDC 令牌
steps:
  - uses: aws-actions/configure-aws-credentials@v4
    with:
      role-to-assume: arn:aws:iam::123456789012:role/ci-deploy
      aws-region: ap-northeast-1
属性条件要写细:签发者、仓库、分支或环境保护缺一不可,只写签发者等于把角色开放给所有能用该 CI 的人。

条件字段示例

字段示例作用
issuerCI 平台的签发地址限定令牌来源
subject仓库与分支的完整引用限定具体工作流
audience目标云服务的受众值防止令牌被挪作他用
environment受保护环境名限定部署范围
受众值必须设置:缺失时令牌可能被其他服务拿去换凭据,签发与校验两侧都要显式配置。

易错点

  • 映射条件使用宽泛通配:任何仓库都能获得角色,按仓库与分支逐条收紧
  • 角色权限沿用旧习惯(管理员级):联邦解决认证不解决授权,权限需另行最小化
  • 把联邦视为免授权:认证通道换了不等于授权模型升级,两者分开评审
  • 没有回退通道:联邦配置变更失误时无处绕行,保留受控应急路径并定期演练
  • 迁移期新旧并存无人收尾:旧密钥忘记删除等于白迁,设截止日期并做复查

数据来源与参考

  • Google Cloud《Workload Identity Federation》
  • Microsoft Learn《工作负载标识联合》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌