Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

FirebaseのAPIキーの使用と管理について学ぶ

APIキーは、FirebaseやGoogleサービスとやり取りするときにFirebaseプロジェクトにリクエストをルーティングするために使用される一意の文字列です。このページでは、APIキーに関する基本情報と、FirebaseアプリでAPIキーを使用および管理するためのベストプラクティスについて説明します。

APIキーとFirebaseに関する一般情報

FirebaseのAPIキーは、通常のAPIキーとは異なります

APIキーが典型的に使用される方法とは異なり、FirebaseサービスのAPIキーはバックエンド・リソースへのアクセスを制御するために使用されていません。これは、Firebaseセキュリティルールでのみ実行できます。通常、APIキーをしっかりと保護する必要があります(たとえば、ボールトサービスを使用したり、キーを環境変数として設定したりします)。ただし、FirebaseサービスのAPIキーは、コードまたはチェックインされた設定ファイルに含めることができます。

FirebaseサービスのためのAPIキーがコードに含まれても安全ですが、いくつかある特定の例あなたのAPIキーの制限を強制すべきです。たとえば、Firebase ML、メール/パスワードのログイン方法を使用したFirebase認証、または請求可能なGoogle CloudAPIを使用している場合です。これらのケースの詳細については、このページの後半でご覧ください。

APIキーの作成

Firebaseプロジェクトには多くのAPIキーを含めることができますが、各APIキーは単一のFirebaseプロジェクトにのみ関連付けることができます。

Firebaseアプリ用にFirebaseによって自動的に作成されたAPIキー

次のいずれかを実行すると、FirebaseはプロジェクトのAPIキーを自動的に作成します。

  • Firebaseプロジェクト>作成しBrowser key自動作成を
  • FirebaseのiOSアプリの作成> iOS key自動作成を
  • FirebaseのAndroidアプリの作成> Android key自動作成を

あなたはまた、独自のAPIキーを作成することができますGoogleクラウドコンソールたとえば、開発やデバッグのため。これがいつ推奨されるかについては、このページの後半で詳しく説明します。

APIキーを見つける

あなたには、すべてのプロジェクトのAPIキーを表示および管理することができたAPIとサービス>資格情報をGoogleクラウドコンソールのパネル。

あなたはまた、見つけることができます自動的にFirebaseアプリケーションに適合しているAPIキー次の場所で。デフォルトでは、同じプラットフォームのためのプロジェクトのFirebaseアプリ(ウェブ対Androidの対iOS版)のすべてが同じAPIキーを使用します。

  • Firebase iOSのアプリ- Firebase設定ファイルでアプリケーションの自動マッチしたAPIキーを探すGoogleService-Info.plistで、 API_KEYフィールド。

  • Firebase Androidアプリは- 、Firebase設定ファイルでアプリの自動マッチしたAPIキーを探すgoogle-services.json中で、 current_keyフィールド。

  • Firebaseウェブアプリ-で、Firebase configオブジェクトでアプリの自動マッチしたAPIキーを探すapiKeyフィールド。

APIキーの使用

APIキーは、Firebase / Googleサービスとやり取りするときにFirebaseプロジェクトを識別するために使用されます。具体的には、割り当てと請求のためにAPIリクエストをプロジェクトに関連付けるために使用されます。また、公開データへのアクセスにも役立ちます。

たとえば、APIキーの値をクエリパラメータとしてREST API呼び出しに渡すことにより、APIキーを明示的に使用できます。あなたがに要求するかもしれないどのようにこの例は、ダイナミックリンクリンク短縮サービスのAPIを

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

アプリがFirebaseAPIを呼び出すと、アプリは自動的にFirebase設定ファイル/オブジェクトでプロジェクトのAPIキーを探します。ただし、環境変数など、別のメカニズムを使用してAPIキーを設定できます。

APIキーの制限を適用します(推奨)

FirebaseサービスのAPIキーをシークレットとして扱う必要はありませんが、APIキーの誤用からプロジェクトを保護するために、追加の対策を講じる必要がある特定のケースがいくつかあります(以下を参照)。

パスワードベースの認証を使用する場合は、クォータを厳しくします

パスワードベースのFirebase認証を使用し、誰かがあなたのAPIキーのホールドを取得した場合、彼らはこのデータがで保護されている限り、あなたのFirebaseプロジェクトのデータベースやクラウドストレージのデータのいずれかにアクセスすることできませんFirebaseセキュリティルール。ただし、APIキーを使用して、Firebaseの認証エンドポイントにアクセスし、プロジェクトに対して認証リクエストを行うことができます。

誰かがブルートフォース攻撃を試みるAPIキーを誤用する可能性を軽減するには、デフォルトのクォータ締めることができidentitytoolkit.googleapis.comあなたのアプリの通常のトラフィックの期待を反映するために、エンドポイントを。この割り当てを厳しくし、アプリが突然ユーザーを獲得した場合、割り当てを増やすまでサインインエラーが発生する可能性があることに注意してください。あなたには、プロジェクトのAPIクォータを変更することができGoogleクラウドコンソール

特定のタイプのAPIに個別の制限付きAPIキーを使用する

Firebaseサービスに使用されるAPIキーは通常、シークレットとして扱う必要はありませんが、手動で有効にしたGoogle CloudAPIへのアクセスを許可するために使用されるAPIキーについては特別な注意が必要です。

Firebaseによって自動的に有効にされない(つまり、自分で有効にした)Google Cloud APIを(任意のプラットフォームで)使用する場合は、それらのAPIで使用するための個別の制限付きAPIキーを作成することを検討する必要があります。 APIが課金対象のGoogleCloudサービス用である場合、これは特に重要です。

あなたはiOSの上Firebase MLのクラウドビジョンAPIを使用している場合たとえば、あなたがすべき別のAPIキーを作成しますが、クラウドビジョンのAPIにアクセスするためにのみ使用すること。

非Firebase APIの独立した、制限されたAPIキーを使用することで、回転したりするときに必要な鍵を交換することができ、APIキーに追加の制限を追加Firebaseサービスのご利用を中断することなく。

使用環境に固有のAPIキー(推奨)

ステージングや本番環境など、環境ごとに異なるFirebaseプロジェクトを設定する場合は、各アプリインスタンスが対応するFirebaseプロジェクトとやり取りすることが重要です。たとえば、ステージングアプリインスタンスが本番Firebaseプロジェクトと通信しないようにする必要があります。これは、ステージングアプリがステージングFirebaseプロジェクトに関連付けられたAPIキーを使用する必要があることも意味します。

コード自体にAPIキーを含めるのではなく、開発からステージング、本番へのコード変更を促進する問題を減らすには、APIキーを環境変数として設定するか、構成ファイルに含めます。

FirebaseMLと一緒にFirebaseLocal Emulator Suiteを開発に使用している場合は、デバッグ専用のAPIキーを作成して使用する必要があることに注意してください。キーのようなものを作成するための手順がで発見されFirebase MLドキュメント

よくある質問