JavaScriptに関するお知らせ

SINCE2019
ホーム
>
新しいFirebaseの認証を解説とGitHubActionsの実装例

新しいFirebaseの認証を解説とGitHubActionsの実装例


こんにちは!Authが大須に聞こえるMizutani(@sirycity)です。名古屋人あるある。

今日はFirebaseの新しい大須についてです。…はい、認証についてです。

所感

設定がめんどくなったが格段に安全になった。設定にかかる時間は10分くらい。

認証について

GUIでログイン

Firebaseへのログイン、というか認証にはfirebase-toolsを用います。こんな感じのコマンド。

firebase login

ただこれ使うとGUIでのログインとなるのでCIでは使えないです。

CUIでログイン

Firebaseには認証用のトークンがあります。これ↓で入手できる。

firebase login:ci

これを使ってコマンドの末尾に --token 【トークン】ってやれば勝手にログインできます。例としてGitHubActionsではこんなかんじ。

steps:
  - name: Deploy to Firebase
    run: firebase deploy --token 【トークン】

もしくは環境変数のFIREBASE_TOKENに設定しといてもOKです。こんなかんじ。

env:
  FIREBASE_TOKEN: 【トークン】

steps:
  - name: Deploy to Firebase
    run: firebase deploy

従来型トークンはちょっと危険

正直↑このトークンで別に問題ないんですが、ちょっと危険な点があってこのトークンGoogleアカウントに紐付いている上に再発行できません。つまり何かの拍子に漏洩したら同じGoogleアカウントで作ったプロジェクト全滅&修復不可能です。アカウント消すしかないです。

新しいログイン

てなわけで認証方法が新しくなりました。簡単に言うとGCPと同じになります。サービスアカウントと秘密鍵を使ったやりかたです。GitHubActionsだとこう。

steps:
  - uses: google-github-actions/auth@v0
    with:
      credentials_json: 【秘密鍵】
  - name: Deploy to Firebase
    run: firebase deploy

以上。

サービスアカウントと秘密鍵の設定方法

ここからは設定方法です。つってもGCPと全く同じです。でもFirebaseだけ触ってた人もいると思うので解説。ちなみに公式ドキュメントはこれ。

認証のスタートガイド | Google Cloud

サービスアカウントと秘密鍵の生成

まずはGCPのサービスアカウントのページにいきます。んでサービスアカウントを作成を押します。

次に適当なサービスアカウント名を設定。なんでもいいです。そしたらロールを選択する画面で以下の3つを追加。ここは自信ない…もっと簡単なのあるかも。一応これでいけるけど。

  • Cloud Functions 開発者
  • Firebase Hosting 管理者
  • サービス アカウント ユーザー

設定したら元のページに戻るので、今名付けたサービスアカウントを探してクリック→上のメニューからキーを選択→鍵を追加→新しい鍵を作成→JSON で一旦おしまい。

Actionsに環境変数として設定

次にGitHubActions側に今落としてきた秘密鍵を設定します。まずは該当リポジトリの環境変数設定画面にいきます。URLはhttps://github.com/【ユーザー名】/【リポジトリ名】/settings/secrets/actions

んでNew repository secretを押したらまた適当な名前をつけ、環境変数にはさっきJSONで落としてきたファイルの中身を丸々コピー。CIをこんな風に設定して完了。

steps:
  - uses: google-github-actions/auth@v0
    with:
      credentials_json: ${{ secrets.【つけた名前】 }}

さいごに

やっぱりちょっとめんどいですが、まあ安全のために早めに移行しましょう。まだ前のも当分使えそうだけど以上!



FirebaseのプレビューチャネルのURLをCIで取得
PREV
2022-11-07
FirebaseのプレビューチャネルのURLをCIで取得

Firebaseのドメイン.web.appはDNSの浸透が遅れる時がある
NEXT
2022-11-12
Firebaseのドメイン.web.appはDNSの浸透が遅れる時がある