GitHub Actions から Cloud Run へデプロイする。認証の方法として最も適切なものは?
正答
- サービスアカウントキーの JSON をリポジトリにコミットする
- 担当者個人の gcloud 認証情報を CI に保存する
- Workload Identity 連携で、キーを発行せず短期トークンを使う
- キーの JSON を Secrets に入れ、期限を決めずに使い続ける
解説
Workload Identity 連携(Workload Identity Federation)を使うと、GitHub Actions が発行する OIDC トークンを Google Cloud の短期のアクセストークンに交換できる。サービスアカウントキーのような長期の鍵をどこにも保存しないので、鍵の漏えいやローテーション漏れが起きない。リポジトリへのコミットは論外で、公開リポジトリでなくてもフォークや履歴から漏れる。Secrets に入れる方法は動くが、期限の無い鍵が残り続け、漏れたときに気づきにくい。個人の認証情報は、その人の全権限が CI に乗り、異動や退職で止まる。
この問題を含む Google Cloud のテストを制限時間つきで解く
Google Cloudクイズへ