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 APIs を使用している場合などがこれに該当します。詳細については、このページの後の部分をご覧ください。
API キーの作成
1 つの Firebase プロジェクトには多くの API キーを設定できますが、各 API キーに関連付けられる Firebase プロジェクトは 1 つだけです。
次のいずれかの操作を行うと、Firebase はプロジェクト用の API キーを自動的に作成します。
API キーを不正使用したブルート フォース アタックの可能性を回避するには、アプリの通常のトラフィック量を反映するように identitytoolkit.googleapis.com エンドポイントのデフォルトの割り当てを抑制してください。ただし、割り当てを抑制した状態でアプリのユーザーが突然増えると、割り当てを増やすまでログインエラーが発生する場合があることに注意してください。プロジェクトの API 割り当ては Google Cloud コンソールで変更できます。
特定のタイプの API には、制限された個別の API キーを使用する
Firebase サービスで使用する API キーは、一般的にはシークレットとして扱う必要はありませんが、手動で有効にした Google Cloud APIs へのアクセスの許可に使用する 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 固有のキーの作成方法については、このセクションを開いてください
以下の手順では、Super Service API という疑似の API 向けに個別の制限付き API キーを作成する方法を説明します。
ステップ 1: 既存の API キーを構成して、Super Service API へのアクセスを許可しないようにする
Google Cloud コンソールの [認証情報] ページを開きます。画面の指示に従って、プロジェクトを選択します。
リスト内にある既存の API キーごとに、編集ビューを開きます。
[API の制限] セクションで [キーを制限] を選択し、API キーによるアクセスを許可するすべての API をリストに追加します。その場合は、個別の API キー(この場合は Super Service API)を作成する API を含めないでください。
API キーの API の制限を構成することで、キーがアクセス権を持つ API を明示的に宣言します。デフォルトでは、[API の制限] セクションで [キーを制限しない] が選択されている場合、API キーを使用してプロジェクトで有効になっているすべての API にアクセスできます。
これで、既存の API キーは Super Service API へのアクセスを許可しなくなりますが、各キーは、API の制限リストに追加したすべての API で引き続き機能します。
ステップ 2: Super Service API にアクセスするための新しい API キーを作成して使用する
Firebase ウェブアプリ - 各アプリに独自の構成オブジェクトがあり、含めることのできる API キーは 1 つのみです。
ただし、1 つのアプリで複数の API キーを使用することは可能です。他の API キーにアプリがアクセスできるメカニズム(環境変数など)を提供する必要があります。他の API キーにアクセスするためのメカニズムが、Firebase 構成ファイル / オブジェクト内にリストされている API キーに依存しないようにします。
Firebase では、どの API キーがアプリにマッチングしているかをどうやって認識しますか(Firebase 構成ファイル / オブジェクトなど)?