Workload Identity Federation とは?鍵なしのクラウド認証
Workload Identity Federation は、外部の workload(GitHub Actions の実行など)が自身のアイデンティティトークンを、保存された鍵なしで短命の GCP 認証情報と交換できるようにします。
federation は、AWS で OIDC role が解決するのと同じ問題を GCP で解決します。長寿命のクラウド鍵を CI に保存するのをやめることです。Workload Identity Federation では、GCP が外部のアイデンティティプロバイダを信頼し、パイプラインからの署名付きトークンを受け取り、service account を impersonate するための一時的な認証情報を返します。
交換の仕組み
外部 issuer(例えば GitHub の OIDC)を信頼する workload identity pool と provider を構成します。パイプラインがトークンを提示すると、GCP がそれを検証し、属性条件をチェックして、service account に紐づいた短命の認証情報を発行します。
構成するもの
- 外部アイデンティティを保持する workload identity pool。
- 外部 issuer(GitHub など)を信頼する provider。
- どのトークンを受け入れるかをスコープする属性マッピングと条件。
- federate されたアイデンティティが impersonate できる service account。
アクセスを厳密にスコープする
provider の条件は、特定のリポジトリ、branch、その他のトークン claim を要求できるため、意図した workflow だけが認証できます。これは AWS の OIDC トラストポリシーと同じように、影響範囲を狭めます。
なぜ重要か
ダウンロード可能な鍵がなければ、漏洩やローテーションの対象がありません。認証情報は短命で監査可能であり、アクセスは実行に関する検証可能な claim に束縛されます。外部システムを GCP に認証させる推奨方法です。
CI/CD での役割
GitHub Actions は id-token: write を付与し、pool と service account を指定して公式の google-github-actions/auth step を使います。action が GitHub トークンを GCP 認証情報と交換し、後続のステップが secret に JSON 鍵を置くことなく Cloud Run、GKE、Artifact Registry へデプロイします。
重要なポイント
- federation は外部トークンを短命の GCP 認証情報と、鍵なしで交換します。
- provider の条件により、どの repo や branch を信頼するかをスコープします。
- CI/CD 向けの、AWS OIDC role の GCP における相当物です。