このブログのデプロイを、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対応の紹介記事であり、動作確認用のテストデータでもある。