このページでは、API キーと認証の背景情報を提供します。使用方法、相違点、API キーを使用する条件などを説明します。
API キーはプロジェクト用、認証はユーザー用
Cloud Endpoints は、API キーと認証スキーム(Firebase、Auth0 など)の両方を処理します。主な違いは次のとおりです。
API キーは、API の呼び出し元のプロジェクト(アプリケーションまたはサイト)を識別します。
認証トークンは、アプリまたはサイトを利用するユーザー(個人)を識別します。
API キーによるプロジェクトの承認
どのスキームが最適であるかを判断するには、API キーと認証が果たす役割を理解することが重要です。
API キーは次の用途で使用します。
プロジェクトの識別 - 当該 API の呼び出し元アプリケーションまたはプロジェクトを識別する
プロジェクトの承認 - 当該 API を呼び出すためのアクセス権が呼び出し元アプリケーションに付与されていることと、そのアプリケーションのプロジェクト内で API が有効になっていることを確認する
API キーは認証トークンほど安全ではありませんが(API キーのセキュリティを参照)、API を呼び出しているアプリケーションまたはプロジェクトを識別できます。API キーは呼び出し元のプロジェクトで生成されるため、特定の環境(IP アドレス範囲、Android アプリ、iOS アプリなど)に限って使用するように制限できます。
API キーを使用して呼び出し元のプロジェクトを識別することで、使用状況に関する情報とプロジェクトを関連付けることができます。API キーを使用すると、アクセス権が付与されていないプロジェクトや、API が有効になっていないプロジェクトからの呼び出しを Cloud Endpoints Frameworks で拒否できます。ユーザーの認証
一方、認証スキームは一般に次の 2 つの用途で使用されます。
ユーザーの認証 - 呼び出し元のユーザーが本人であることを確実に検証する
ユーザーの承認 - ユーザーに当該リクエストを行う権限があるかどうかを確認する
認証スキームは、呼び出し元のユーザーを識別する確実な方法です。Endpoints は、認証トークンを使用して、API を呼び出す権限があるかどうかも確認します。この認証結果に基づいて、API サーバーがリクエストを承認するかどうかを判断します。
呼び出しを行っているユーザーを識別できるようにする必要がある場合は、ユーザーの認証をご覧ください。
API キーは呼び出し元のプロジェクトを識別しますが、呼び出しを行っているユーザーまでは識別しません。たとえば、API を呼び出すアプリケーションを作成した場合、API キーで呼び出し元のアプリケーションを識別できますが、そのアプリケーションを使用しているユーザーは識別できません。
さらに安全性の高い方法で、API の呼び出しを許可するプロジェクトやサービスを制限する場合は、サービス間の認証をご覧ください。
API キーのセキュリティ
通常、API キーは安全とはみなされません。API キーはクライアントからアクセス可能で、API キーが簡単に盗まれる可能性があります。キーには有効期限がないため、プロジェクト オーナーがキーを取り消すか、再生成しない限り、盗まれたキーが無期限に使用される可能性があります。API キーに制限を設定することでこの問題を緩和できますが、別の方法で認証を行うほうが安全です。
例については、ユーザーの認証をご覧ください。
API キーを使用する条件
API では、API キーを必要とするメソッドを限定できます。この処理は次の場合に有効です。
匿名のトラフィックをブロックする場合。アプリケーションのデベロッパーが API プロデューサーを使用して問題のデバッグやアプリケーションの使用状況の確認を行う必要がある場合、API キーで API プロデューサーのアプリケーション トラフィックを識別します。
API に対する呼び出し回数を制御する場合。
API トラフィックの使用パターンを確認する場合。API とサービスで、アプリケーションの使用状況を確認できます。
API キーでログをフィルタリングする場合。
API キーは次の目的では使用できません。
個々のユーザーの識別 - API キーはプロジェクトを識別しますが、ユーザーを識別しません。
安全な承認。
プロジェクトの作成者の識別。
Service Infrastructure には、API キーから直接プロジェクトを検索する方法は用意されていません。