このブログのデプロイを、Workload Identity Federation(WIF)へ移行している。Firebase Hostingは引き続き使いつつ、GitHub Actionsからの認証とデプロイ手順を見直している。

きっかけ

プレビューを作るたびにFirebase Authenticationの許可ドメインが増えてしまうため、これを止めたかった。

Firebase CLIには --no-authorized-domains というオプションがある。これを使うため、FirebaseExtended/action-hosting-deployから、setup-nodeでNode.jsを用意して公式のFirebase CLIを直接叩く構成に変更した。不要なActionへの依存も減らせる。

認証もWIFにする

従来はサービスアカウントのJSON鍵を使っていた。今回はGitHub Actionsが発行するOIDCトークンをGoogle CloudのWIFで検証し、既存のサービスアカウントの短期認証情報を得る形にしている。これでプレビューのデプロイには長期のJSON鍵を渡さずに済む。

認証を許すリポジトリとワークフローは限定した。PRのビルドとデプロイも分離し、認証はデプロイ側で行う。Google側ではワークフローのパスとmainブランチを信頼する設定にし、通常の修正のたびに信頼するコミットSHAを更新しなくて済むようにした。

最後に

この記事もプレビューに配信して動作を確かめた。WIF対応の紹介記事であり、動作確認用のテストデータでもある。