API キーに関するベスト プラクティス

API キーは、Google Maps Platform API と SDK を使用するアプリとプロジェクトに必要です。このドキュメントでは、API キーの使用方法や、他の認証情報と同様に保護する方法、プロジェクトに適した制限について説明します。

API キーとは

API キーは、次の 2 つの用途で使用するプロジェクト用の認証情報です。

  • プロジェクトの識別:
    API または SDK に対して呼び出しを実行したアプリやプロジェクトを識別します。
  • プロジェクトの承認:
    呼び出し元のアプリについて、API や SDK へのアクセス権があるかどうかと、プロジェクトで API または SDK が有効になっているかどうかをチェックします。

API キーを作成すると、プロジェクトに関連付けられます。API キーは、呼び出し元のプロジェクトを識別することで、使用状況の情報を該当のプロジェクトに関連付け、他のプロジェクトからの呼び出しを拒否できるようにします。

API キーの保護

アプリケーションで使用するすべての Google Maps Platform プロダクトで、API キーを保護する必要があります。API キーを保護するために制限を指定し、アプリケーション内で Google Maps Platform API に適したベスト プラクティスを導入します。セキュリティで保護されていない認証情報を一般公開すると、その情報が意図しない形で使用され、アカウントで不測の料金が発生する場合があります。

ここでは、API キーの保護に役立つ慣行を紹介します。Maps JavaScript API などの個々の Google Maps Platform サービスに適した慣行は、API キーの制限とベスト プラクティスセクションにまとめられています。

  • API キーを制限しますAPI キーは、特定の IP アドレスや参照 URL、モバイルアプリ、特定の API に制限することで、最も効果的に保護できます。これにより、キーの不正使用の影響を大幅に軽減できるためです。

    キーに対するアプリケーションや API の制限をコンソールで指定するには、[認証情報] ページを開き、適切な設定で新しい API キーを作成するか、既存の API キーの設定を編集します。詳細については、API キーの制限のセクションをご覧ください。

  • アプリごとに別々の API キーを使用します。これにより、各キーのスコープが制限されます。API キーが不正使用された場合は、他の API キーを更新しなくても、対象のキーのみを削除して取り消すことができます。
  • 不要な API キーを削除します。

    API キーを削除する方法:

    1. [認証情報] パネルを開きます。
    2. 削除する API キーを選択します。
    3. ページ上部の [削除] ボタンをクリックします。
    4. [認証情報の削除] ポップアップが表示されたら、[削除] をクリックします。
  • API キーの再生成時は注意してください。以前の API キーから新しい API キーへのアプリの移行に要する時間が 24 時間を超える場合、更新されていないインスタンスは、古いキー(再生成から 24 時間後に削除される)を参照することになるため、機能しなくなります。

    API キーを再生成すると、次のようになります。

    • 再生成プロセスによって新しいキーが生成されます。
    • 新しいキーが、古いキーのすべての制限を引き継ぎます。
    • この時点から 24 時間が経過すると、古いキーが削除されます。
  • API の使用状況をモニタリングし、異常がないかチェックします。 不正使用が確認された場合は、キーをローテーションして Google に通知します。

    キーをローテーションする前に、そのコピーを作成してファイルに保管し、キーに関連付けられた制限を保管します。

  • Maps Web Service API または Static Web API を使用するアプリで、次の方法でアプリと API キーを保護します。

  • Web Service API または Static Web APIs を使用するモバイルアプリでは、次のいずれかの方法で、API キーやシークレットのセキュリティを強化することをおすすめします。

API キーの制限

API キーは認証情報です。慎重に管理する必要があります。最低でも、以下の推奨事項に沿ってキーを保護し、制限を適用して、API キーの不正利用の影響を低減してください。

アプリケーションの制限、または 1 つ以上の API 制限を指定すると、API キーを制限できます。

アプリケーションの制限により、API キーの使用が特定のサイト(IP アドレスとウェブサイト)や特定のプラットフォーム(Android や iOS)に制限されます。このカテゴリの制限を最大 1 つ選択できます(プラットフォーム別の Google Maps Platform API をご覧ください)。

API の制限は、API キーの使用を、1 つ以上の Google Maps Platform API または SDK に制限します。API キー、または API キーに関連付けられた SDK の使用リクエストは処理されます。API、または API キーに関連付けられていない SDK の使用リクエストは失敗します。API キーの場合は、必要な数の API 制限を指定できます。API キーに関連付けられた API または SDK が、その API キーに設定されたアプリケーションの制限をサポートしていることを確認してください。

API キーのアプリケーション制限を設定する方法

  1. [認証情報] パネルを開きます。
  2. 制限を設定する API キーを選択します。選択した API キーのプロパティ ページが表示されます。
  3. [キーの制限] で [アプリケーションの制限] を選択します。
    いずれかの制限タイプを選択し、制限リストに沿って必要な情報を指定します。
    制限タイプ 説明
    HTTP リファラー

    提供したウェブサイトのリストからのリクエストを受け入れます。

    タイプの下で、1 つ以上のリファラー ウェブサイトを指定します。ワイルドカード文字は、類似するウェブサイトの名前付けに使用できます。たとえば、*.google.com の場合は、google.com で終わるすべてのサイト(https://developers.google.com など)を受け入れます。

    IP アドレス

    指定したウェブサーバーの IP アドレスのリストからのリクエストを受け入れます。

    タイプの下で、1 つの IPv4 または IPv6 アドレスを指定するか、CIDR 表記法のサブネット(192.168.0.0/22 など)を指定します。エントリを追加して [完了] をクリックすると、新しいボックスが表示されます。必要であれば、このボックスに別のエントリを入力します。

    Android アプリ

    パッケージ名と SHA-1 署名証明書フィンガープリントを追加して、使用を Android アプリに制限します。

    タイプの下で SHA-1 署名証明書フィンガープリントと、AndroidManifest.xml ファイルの Android パッケージ名を追加します。

    iOS アプリ

    指定したバンドル ID を持つ iOS アプリからのリクエストを受け入れます。

    タイプの下で、リストから適切な iOS バンドル ID を選択します。

  4. [保存] をクリックします。
    この制限は、このステップの後に API キーの定義の一部となります。適切な情報を入力しなかった場合、または [保存] をクリックしなかった場合、API キーは制限されません。(特定の API や SDK の詳細については、API キーの取得ガイドをご覧ください)

API キーの API 制限を設定する方法

  1. [認証情報] パネルに移動します。
  2. 制限する API キーを選択します。
    [API キーの制限と名前変更] ページが表示されます。
  3. [API の制限] で次の操作を行います。
    • [キーを制限] をクリックします。
    • [API を選択] プルダウンをクリックし、API キーを使用してアプリケーションからアクセスする API または SDK を選択します。(API または SDK がリストにない場合は、それを有効にする必要があります)
  4. [保存] をクリックします。
    この制限は、このステップの後に API キーの定義の一部となります。適切な情報を入力しなかった場合、または [保存] をクリックしなかった場合、API キーは制限されません。(特定の API や SDK の詳細については、API キーの取得ガイドをご覧ください)

API キーの制限とベスト プラクティス

次の表は、各 Google Maps Platform API、SDK、サービスごとに、適切な API キーの制限とベスト プラクティスをまとめたものです。

Maps JavaScript、Embed API、Static API を使用したウェブサイト

API / SDK / サービス アプリケーションの制限1 API の制限1 ベスト プラクティス
Maps JavaScript API2 HTTP リファラーの制限 Maps JavaScript API
ルートサービス、Maps JavaScript API HTTP リファラーの制限 Directions API、Maps JavaScript API
Distance Matrix Service、Maps JavaScript API HTTP リファラーの制限 Distance Matrix API、Maps JavaScript API
Elevation Service、Maps JavaScript API HTTP リファラーの制限 Elevation API、Maps JavaScript API
Geocoding Service、Maps JavaScript API HTTP リファラーの制限 Geocoding API、Maps JavaScript API
Places Library、Maps JavaScript API HTTP リファラーの制限 Places API、Maps JavaScript API
Maps Embed API HTTP リファラーの制限 Maps Embed API
Maps Static API HTTP リファラーの制限 Maps Static API
Street View Static API HTTP リファラーの制限 Street View Static API

ウェブサービスを使用するアプリとサーバー

API / SDK / サービス アプリケーションの制限1 API の制限1 ベスト プラクティス
Directions API IP アドレスの制限4 Directions API
Distance Matrix API IP アドレスの制限4 Distance Matrix API
Elevation API IP アドレスの制限4 Elevation API
Geocoding API IP アドレスの制限4 Geocoding API
Geolocation API IP アドレスの制限4 Geolocation API
Places API5 IP アドレスの制限4 Places API
Roads API IP アドレスの制限4 Roads API
Time Zone API IP アドレスの制限4 Time Zone API

Android アプリ

API / SDK / サービス アプリケーションの制限1 API の制限1 ベスト プラクティス
Maps SDK for Android Android の制限 Maps SDK for Android
Places SDK for Android Android の制限 Places API

iOS アプリ

API / SDK / サービス アプリケーションの制限1 API の制限1 ベスト プラクティス
Maps SDK for iOS iOS の制限 Maps SDK for iOS
Places SDK for iOS iOS の制限 Places API

1 Google Maps Platform の API または SDK では、無制限 API キーを使用できます。ただし、特に以下の状況では、API キーを制限することを強くおすすめします。

  • テスト環境が今後一般公開される、または一般公開されている。
  • API キーを使用するアプリケーションを、本番環境で使用する準備が整っている。

2 モバイルアプリの場合は、ネイティブの Maps SDK for AndroidMaps SDK for iOS を使用することをおすすめします。

3 Maps Static API と Street View Static API では、1 日あたりの地図の読み込みが割り当ての 25,000 回を超過する場合、API キーに加えて、デジタル署名も指定する必要があります。

注: 署名に使用される共有シークレットには、Maps Web Service API で使用される API キーと同じレベルのセキュリティが必要です。

画像リクエストに動的に署名する必要がある場合は、サーバー側で署名します。静的画像の生成にクライアント側の入力を使用しているアプリの場合は、次の方法でアプリを保護します。

リクエストに署名する場合は、1 日に許可される未署名のリクエストの数を確認し、それに応じて未署名のリクエストの割り当てを調整します。

4 IP の制限は、動的 IP アドレスを使用するモバイルアプリやクラウド環境などでは、現実的ではない場合があります。こうしたシナリオで Maps Web Service API を使用する場合は、次の方法を使用してアプリを保護します。

5 モバイルアプリの場合は、ネイティブの Places SDK for AndroidPlaces SDK for iOS を使用することをおすすめします。