グローバルナビゲーションへ

本文へ

フッターへ

お役立ち情報Blog



Google Workload identity federationでGitHub Actionsを設定してみた

現在開発中のプロジェクトでReactで構築したSPAのアプリケーションを開発しています。

提供方法はビルドしたReactのアプリケーションをGoogle Cloud Storage(GCS)に配置する方式でしたので、継続的なデプロイを円滑に進めるためにGitHub ActionsによるCI/CDを使うことにしました。

GitHub ActionsのworkflowでGCSにデプロイするためには、GCSにアクセス可能な権限(role)を持ったGoogle Cloud Platform(GCP)のIAMサービスアカウントとの紐づけが必要になります。

従来はサービスアカウントの credentials.json を使用して連携する形式が一般的なようですが、この場合クレデンシャル情報の管理が必要になってきます。

代替案はないかを検討したところ、社内のエンジニアから本題のWorkload identity federationを教えていただきました。

Workload identity federationを使用することで更にセキュアな連携が可能になり、クレデンシャル情報の管理も不要になるのでWorkload identity federationを採用することにしました。

今回はWorkload identity federationを使用した連携方法や作業中にハマった事についての共有です。

GCPの設定

環境変数の設定

シェル変数を使用しているので同じセッション内で以下のコマンドを実行してください

IAM Service Accountを作成する

IAM Service Account Credentials API を有効にする

IAM Service Account Credentials API は既に有効設定済

今回のプロジェクトでは既に有効に設定済みなので不要でしたが、新規のプロジェクト等で有効にする場合は以下のコマンドを実行します。

GCSのrole(権限)設定

Workload IdentityにPoolを作成する

作成したPoolにProvierを作成する

Workload Identityでサービス アカウントの権限借用の設定

Workload Indentity Providerのリソース名の確認用

上記コマンドを実行後下記のような結果が返ってきたら成功です。

GCPの設定は以上です。

GitHub Actionsの設定

環境変数の設定

GitHubリポジトリのSecretsに環境変数を追加します。

Name Value
GCP_IDENTITY_PROVIDER Workload Indentity Providerのリソース名の確認用の結果
GCP_SERVICE_ACCOUNT サービスアカウント名
GCP_BUCKET GCSのバケット名

GitHub Actionsのworkflowファイルを作成

GitHub Actionsにはgoogle謹製の setup-gcloud を使用します。

 /.github/workflows/xxx.yaml に追加
この設定でmainブランチにpush(merge)されると都度デプロイされるようになります。

ハマり箇所

gsutil Workload Identity Federation対応してないってよ

元々は  gsutil rsync  を使用する予定だったんですが、対応していないようで gcloud alha storage cp に変更。

gcloudコマンドのalphaなので、正式に使用する場合には upload-cloud-storage に変更した方がよさそうです。

最後に

Google Workload identity federationの設定とGitHub Actionsの設定方法をお送りしました。

 gsutil がWorkload identity federationに対応していないことに気づくのにえらい時間が掛かりましたが、それ以外の設定は比較的スムーズで、結果クレデンシャル情報を管理しなくてよくなったのは気持ちとしてすごく楽です。

今回のプロジェクトでは結果としてデプロイ先がGCSから別のプラットフォームに変更になったので、このGitHub Actionsの設定もあと少しだけの期間ですが、これからGCSにGitHub ActionsでCI/CDを検討される方のお役に立つと嬉しく思います。

The following two tabs change content below.

美髭公

ソリューション事業部 システムエンジニア
2013年にアーティスに入社。システムエンジニアとしてアーティスCMSを使用したWebサイトや受託システムの構築・保守に携わる。環境構築が好き。
この記事のカテゴリ

FOLLOW US

最新の情報をお届けします