API キーを使用する

このトピックでは、アプリケーション開発者向けに、Google Cloud APIs で API キーを使用する方法について説明します。

はじめに

API キーは、プリンシパルなしでアプリケーションを識別する、暗号化された単純な文字列です。一般公開データに匿名でアクセスする場合に便利で、割り当てや課金のために API リクエストをプロジェクトに関連付けるために使用されます。

Google Cloud APIs へのログイン時の認証に関する詳細については、認証の概要をご覧ください。Google Maps Platform API と SDK での API キーの使用に関する詳細については、Google Maps Platform のドキュメントをご覧ください。

API キーを管理する

Cloud Console を使用して API キーを管理することをおすすめします。Cloud Console の [API とサービス] > [認証情報] ページに移動します。API キーは [API キー] セクションに表示されます。このページでは、API キーの作成、API キー制限の定義、API キー文字列のローテーションなどの操作を行えます。

API キーを作成する

プロジェクトに API キーを作成するには、プロジェクトの編集者基本ロール(roles/editor)をユーザーに付与する必要があります。詳細については、基本ロールをご覧ください。

API キーを作成するには:

  1. Cloud Console の [API とサービス] → [認証情報] パネルに移動します。

  2. [認証情報を作成] を選択し、プルダウン メニューから [API キー] を選択します。

  3. [API キーを作成しました] ダイアログ ボックスに、新たに作成されたキーが表示されます。

キーをコピーして、安全な場所に保管することもできます。後で削除する予定のテストキーを使用している場合を除き、アプリケーションと API キーの制限を追加してください。

API キーを使用する

以下の形式で、クエリ パラメータとして API キーを REST API 呼び出しに渡します。API_KEY を API キーに置き換えます。

key=API_KEY

たとえば、documents.analyzeEntities に対する Cloud Natural Language API リクエストの API キーを渡すには、次のようにします。

POST https://language.googleapis.com/v1/documents:analyzeEntities?key=API_KEY

API キーを保護する

アプリケーションで API キーを利用するときは、キーの安全確保に努めてください。認証情報が公開されると、アカウントが侵害され、アカウントに対して予想外の料金が課される可能性があります。API キーの安全性を保つには、以下のベスト プラクティスに従ってください。

  • API キーをコードに直接埋め込まないでください。コードに埋め込まれた API キーは、誤って公開されてしまう可能性があります。たとえば、共有するコードからキーを削除し忘れた場合などです。API キーはアプリケーションに埋め込む代わりに、環境変数やアプリケーションのソースツリー外部にあるファイル内に保存してください。

  • アプリケーションのソースツリー内のファイルに API キーを保存しないでください。API キーをファイルに保存する場合は、キーがソースコード制御システム内に保存されないよう、ファイルをアプリケーションのソースツリー外部に保持するようにします。これは特に、GitHub のような公共のソースコード管理システムを使用する場合に重要です。

  • アプリケーションと API キーの制限を設定します。制限を追加することで、API キーが不正使用された場合の影響を軽減できます。

  • 不要な API キーを削除して、攻撃を受けるリスクを最小限に抑えます。

  • 定期的に API キーを再生成します。API キーを再生成するには、[認証情報] ページに移動し、それぞれのキーの [キーを再生成] をクリックします。その後、新たに生成したキーが使用されるようにアプリケーションを更新します。古いキーは置換用のキーを生成した後も 24 時間は機能し続けます。

  • 公開する前に、コードを確認します。コードを公開する前に、コードに API キーやその他のプライベート情報が含まれていないことを確認してください。

API キーの制限を適用する

API キーは、デフォルトでは制限されません。制限されていないキーは、誰でもどこからでも使用できるため安全ではありません。本番環境アプリケーションの場合は、アプリケーションと API の両方の制限を設定する必要があります。

API キーの制限を追加するには:

  1. Cloud Console の [API とサービス] → [認証情報] パネルに移動します。

  2. 既存の API キーの名前を選択します。

アプリケーションの制限を追加する

アプリケーションの制限では、API キーの使用を許可するウェブサイト、IP アドレス、またはアプリを指定します。アプリケーション タイプに基づいてアプリケーションの制限を追加します。1 つの API キーに設定できる制限のタイプは 1 つのみです。

アプリケーションのニーズに応じて、制限のタイプを選択します。

  • [なし] は、テスト目的でのみ使用します。

  • ウェブブラウザで実行される API クライアントには [HTTP リファラー] を使用して、指定されたページでのみ API を呼び出せるようにします。このようなタイプのアプリケーションでは API キーが公開されるため、代わりにサービス アカウントを使用することをおすすめします。例については、HTTP 制限の追加をご覧ください。

  • API キーアクセスを特定の IP アドレスに制限するには、[IP アドレス] を使用します。

  • Android アプリケーションには [Android アプリ] を使用します。このオプションを使用するには、パッケージ名と SHA-1 署名証明書フィンガープリントを追加する必要があります。

  • iOS アプリケーションには [iOS アプリ] を使用します。このオプションを使用するには、iOS バンドル識別子を少なくとも 1 つ追加して、特定の iOS バンドルに API 呼び出しを制限する必要があります。

HTTP 制限を追加する

ウェブ アプリケーションで使用される API キーには、HTTP 制限を追加する必要があります。HTTP 制限を追加するには:

  • [アプリケーションの制限] セクションの [HTTP リファラー(ウェブサイト)] を選択してください。

  • [ウェブサイトの制限] セクションに制限を少なくとも 1 つ入力します。

  • ドメインで HTTP と HTTPS の両方がサポートされている場合は、両方の制限を別個に追加する必要があります。

  • 必要に応じて、サブドメインやパスにワイルドカード文字(*)を使用できます。

次の表に、シナリオと制限の例を記載します。これらの例は、制限の厳しいものから緩いものへの順で記載されています。ユースケースに合った例のうち、最も制限の厳しいものを使用することをおすすめします。

シナリオ 制限
特定の URL を許可する。

正確なパスを指定して 1 つの制限を追加します。次に例を示します。

  • https://www.example.com/path
  • http://www.example.com/path/path
1 つのサブドメインまたはネイキッド ドメイン内の任意の URL を許可する。

ドメイン全体を許可するには、少なくとも 2 つの制限を設定する必要があります。

  1. 末尾のスラッシュを付けずにドメインの制限を設定します。次に例を示します。
    • https://www.example.com
    • http://sub.example.com
    • http://example.com
  2. パスにワイルドカードを含めた、ドメインの 2 つ目の制限を設定します。次に例を示します。
    • https://www.example.com/*
    • http://sub.example.com/*
    • http://example.com/*
  3. ドメインで HTTP と HTTPS の両方が許可されている場合は、制限を別個に追加する必要があります。
1 つのドメイン内の任意のサブドメイン URL を許可する。

少なくとも 2 つの制限を設定する必要があります。

  1. サブドメインにワイルドカードを使用し、末尾のスラッシュを付けずにドメインの制限を設定します。次に例を示します。
    • https://*.example.com
  2. パスにワイルドカードを含めた、ドメインの 2 つ目の制限を設定します。次に例を示します。
    • https://*.example.com/*
  3. ドメインで HTTP と HTTPS の両方が許可されている場合は、制限を別個に追加する必要があります。

API 制限を追加する

API の制限では、API キーを使用した呼び出しを許可する API を指定します。本番環境アプリケーションで使用されるすべての API キーには、API 制限を追加する必要があります。

API 制限を設定するには:

  1. [API の制限] セクションの [キーを制限] を選択します。

  2. プルダウンから、API キーで呼び出す必要のあるすべての API 名を選択します。

  3. [保存] ボタンを選択します。

次のステップ