Google I/O 2022 で発表された Firebase の最新情報をご覧ください。詳細

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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

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

Firebase の API キーは一般的な API キーとは異なります

API キーの通常の使用方法とは異なり、Firebase サービスの API キーはバックエンド リソースへのアクセスを制御するために使用されません。これは、Firebase セキュリティ ルール (リソースにアクセスできるユーザーを制御するため) と App Check (リソースにアクセスできるアプリを制御するため) でのみ実行できます。

通常、API キーは入念に保護する必要があります (たとえば、vault サービスを使用するか、キーを環境変数として設定するなど)。ただし、Firebase サービスの API キーは、コードまたはチェックインされた構成ファイルに含めることができます。

Firebase サービスの API キーは安全にコードに含めることができますが、API キーに制限を適用する必要がある特定のケースがいくつかあります。たとえば、Firebase ML を使用している場合、メール/パスワードによるサインイン方法を使用する Firebase Authentication を使用している場合、または課金対象の Google Cloud API を使用している場合などです。これらのケースについては、このページで後述します。

API キーの作成

Firebase プロジェクトは多数の API キーを持つことができますが、各 API キーは 1 つの Firebase プロジェクトにのみ関連付けることができます。

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

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

  • Firebase プロジェクトを作成する > 自動作成されたBrowser key
  • Firebase Apple アプリを作成する > 自動作成されたiOS key
  • Firebase Android アプリを作成する > 自動作成されたAndroid key

開発やデバッグなどのために、 Google Cloud Consoleで独自の API キーを作成することもできます。これがいつ推奨されるかについては、このページで後述します。

API キーの検索

プロジェクトのすべての API キーは、Google Cloud Console の[APIs & Services] > [Credentials ] パネルで表示および管理できます。

次の場所で、どのAPI キーが Firebase アプリに自動的に一致するかを確認することもできます。デフォルトでは、同じプラットフォーム (Apple、Android、Web) 用のプロジェクトの Firebase アプリはすべて同じ API キーを使用します。

  • Firebase Apple Apps — Firebase 構成ファイルGoogleService-Info.plistAPI_KEYフィールドで、アプリの自動一致 API キーを見つけます。

  • Firebase Android アプリ— Firebase 構成ファイルgoogle-services.jsoncurrent_keyフィールドで、アプリの自動照合 API キーを見つけます。

  • Firebase Web Apps — Firebase 構成オブジェクトのapiKeyフィールドで、アプリの自動一致 API キーを見つけます。

API キーの使用

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

たとえば、API キーの値をクエリ パラメータとして REST API 呼び出しに渡すことで、API キーを明示的に使用できます。次の例は、 Dynamic Links リンク短縮 APIにリクエストを送信する方法を示しています。

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

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

API キーに制限を適用する(推奨)

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

パスワードベースの認証を使用する場合はクォータを締めます

パスワードベースの Firebase Authentication を使用していて、誰かが API キーを入手した場合Firebase セキュリティ ルールによってデータが保護されている限り、Firebase プロジェクトのデータベースや Cloud Storage データにアクセスすることはできません。ただし、API キーを使用して Firebase の認証エンドポイントにアクセスし、プロジェクトに対して認証リクエストを行う可能性があります。

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

特定の種類の API には、個別の制限付き API キーを使用する

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

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

たとえば、iOS で Firebase ML の Cloud Vision API を使用する場合は、Cloud Vision API にアクセスするためだけに使用する別の API キーを作成する必要があります。

Firebase 以外の API に個別の制限付き API キーを使用することで、必要に応じてキーをローテーションまたは置換し、Firebase サービスの使用を中断することなくAPI キーに制限を追加できます。

環境固有の API キーを使用する(推奨)

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

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

Firebase Local Emulator Suite を Firebase ML と共に開発に使用している場合は、デバッグ専用 API キーを作成して使用する必要があることに注意してください。この種のキーを作成する手順については、 Firebase ML ドキュメントを参照してください。

よくある質問