Open3

GitHub Actions から Google Cloud Platform へアクセスを OIDC で認証する

@1000ch@1000ch

Google Cloud Platform は 2021/04/21 にサービス アカウント キーを必要としない Workload Identity を使ったサービス連携を発表し、GitHub は 2021/10/27 に GitHub Actions 上でのクラウドへの認証に OIDC をサポートしたことを発表した。これらを踏まえて、実際に Workload Identity を使った GitHub Actions との連携についての解説記事が 2021/12/21 に公開されている。

クラウド環境への継続的なデプロイを実現するために、GitHub Actions のような CI 環境から GCP へのアクセス権限が必要になる。これまでは、GCP で作成したクリデンシャルを GitHub Actions の環境変数などへ保存し CI プロセス時に参照することでアクセスを実現してきた。しかしこれには、事あるごとに増えるクリデンシャルを中長期的に管理するコストや、クリデンシャルが漏洩する潜在的なリスクが伴っている。

これに対して、OIDC によるアクセスが実現されることで、クリデンシャルをやり取りする必要がなくなる。

@1000ch@1000ch

OIDC に関する理解

@vvakame さんの解説および IDトークンが分かれば OpenID Connect が分かる を参照して得た私の理解が、

登場人物とその役割

  1. GitHub が OIDC プロバイダとして、GitHub Actions が実行される際に IDToken を払い出す
  2. GCP の Workload Identity が、コンソールで事前に入力されたイシュアやリポジトリの情報と渡された IDToken に含まれる情報を確認する
  3. GCP の Workload Identity が GitHub Actions に、指定される GCP のサービスアカウントのアクセストークンを払い出す
  4. GitHub Actions が払い出されたアクセストークンを使って、権限が付与されたサービスアカウントを通じて GCP のプロジェクトを操作する