🐈

Firebase API KeyをGitHubにPushしたくない私の運用

2024/11/20に公開

前提として

Firebase API KeyをGitHubにPushすること自体は問題ありません公式が言っております。

通常、API キーは細心の注意を払って保護する必要があります(たとえば Vault サービスを使用したり、キーを環境変数として設定したりするなど)。しかし、Firebase サービスの API キーは、コードまたはチェックインされた構成ファイルに含めても問題ありません。

とはいえ、石橋をC4で破壊して「渡ったら死んでたな」と呟いてしまうほどにビビりな私としては万が一のことを考えてGitHubにはあげたくないなと思ってしまいます。

また、GoogleもAPI Keyに制限を適用することを推奨しています。

Firebase サービスの API キーをシークレットとして扱う必要はありませんが、特定の状況(以下を参照)では、API キーの不正使用からプロジェクトを保護するための追加の手段が必要になる場合があります。

不正利用されないようにプロダクト開発を進めればいいのですが、そもそもAPI Keyを知られる可能性を減らしておきたいです。
というわけで、GitHubにはPushせずに運用していきたいのです。

結論

  • Firebase API Keyが記載されるファイルは.gitignoreに記載する
  • デプロイするサービスのシークレットにFirebase API Keyが記載されるファイルを置く
  • デプロイ時にシークレットから当該ファイルを配置する

運用

Firebase API Keyは.envgoogle-services.jsonに記載されているケースを想定します。
また、モバイルアプリを想定し、デプロイにはBitriseを使うとします。

  1. .gitignore.envgoogle-services.jsonを記載する。
    これでエミュレータからdev環境等に繋いでの動作確認でFirebase API Keyを使っても誤ってGitHubにPushする心配がなくなります。
  2. BitriseのSecretsに.envgoogle-services.jsonを置きます。
    そのままでは置けないため、base64にエンコードしてから置きます。
    今回は.envENV_FILEgoogle-services.jsonDEV_GOOGLE_SERVICES_JSONとして置きます。
  3. bitrise.ymlを編集して、デプロイフローの中で、.envgoogle-services.jsonを使うようにします。
    # 略
    - contents: |
        echo $ENV_FILE | base64 -d > .env
        cd android/app/
        echo $DEV_GOOGLE_SERVICES_JSON | base64 -d > google-services.json
        cd ../../
    # 略
    
  4. あとは通常通りに開発を行い、デプロイの際にはBitriseを使えば良いです!

最後に

ここで紹介したのはあくまでGitHubにFirebase API KeyをPushせずにアプリケーション開発・運用を行う方法です。
最初に記載した通り、Firebase API Keyは公開される前提で作られているため、公開すること自体に問題はありません。それでもAPI Keyである以上、進んで公開したくないという理由でGitHubにはPushしていないだけです。

むしろ重要なのは、

の方です。

他のAPI Keyと取り扱い方法が異なり困惑することも多々ありますが、Firebaseは非常に有益なサービスなので、使いこなせるように頑張りたいです。

Aprender Tech Blog

Discussion