Logo Logo
GitHub Designed by Logto

API キーとは何ですか?

API キーは、呼び出し元のアプリケーションやサービスを識別し、認可 (Authorization) するために使用されます。通常、長期間有効で静的であり、ローテーションされるまで固定された権限セットを持ちます。主にサーバー間の通信や公開データへのアクセスに使用され、これらのトークンは一般的に特定のユーザーを表しません。

API キーはどのように機能しますか?

API キーは、API プロバイダーによって生成され、認可されたユーザーと共有される長い文字列です。このキーは、API にアクセスする際にリクエストヘッダーに含める必要があります。API キーは基本的なセキュリティニーズに対してシンプルで効果的です。たとえば、Google Maps API や AWS などの人気のあるサービスは、アクセスを制御し使用状況を監視するために API キーを提供します。

curl -GET https://api.example.com/endpoint -H "Authorization: api-key YOUR_API_KEY"

API キーは、 OAuth 2.0 JSON Web Token (JWT) などの他の形式の API 認証 (Authentication) ほど効果的ではありませんが、それでも API プロデューサーが使用状況を監視するのに役立つ重要な役割を果たします。これは、API を保護するための最も簡単で広く使用されている方法です。

その利点と欠点は何ですか?

利点

  • 実装が簡単: API キーは実装と使用が簡単です。リクエストヘッダーにキーを添付することで、開発者やクライアントにとって理解しやすく、使用しやすい方法です。
  • 監視が容易: API キーは監視が容易です。各キーの使用状況を追跡し、必要に応じて取り消すことができます。
  • 効果的なレート制限: API キーはレート制限に効果的です。キーごとにリクエストの数に制限を設け、乱用を防ぐことができます。
  • 非機密データに適している: API キーは、セキュリティ要件が低い非機密データや公開 API に適しています。

欠点

  • 限られたセキュリティ: API キーは、特にクライアントサイドアプリケーションにおいて、機密データに対して十分に安全ではありません。これらはしばしばマシン間通信に使用されます。
  • ユーザー認証 (Authentication) に適していない: API キーはアプリケーションやシステムに結びついており、個々のユーザーに結びついていないため、特定のユーザーを識別したり、その行動を追跡したりするのが難しいです。
  • トークンの有効期限がない: API キーは通常静的で、有効期限がありません。キーが漏洩した場合、手動で再生成しない限り、無期限に悪用される可能性があります。

API キーの使用例は何ですか?

  • サービス間通信: API キーは、アプリケーションが CLI を通じて API と直接通信する必要があるシナリオに適しています。例: OpenAI API の呼び出し。
  • 公開 API: API を公開する際に、API キーはアクセス制御の簡単な方法を提供します。
  • 簡易セットアップ: 特に開発段階での迅速かつ簡単な認証 (Authentication) ニーズに適しています。マシン間認証 (Machine-to-machine authentication) とは異なり、API キーは事前のクライアント登録を必要とせず、アクセストークン (Access token) に交換する必要もありません。リクエストのパラメータとして API キーを渡すだけで、単純に機能します。

実際のシナリオでは、製品を構築する際の最も一般的な目的は製品統合です。ここに典型的な使用例があります:

例: Stripe との統合

Stripe は、異なるプラットフォームやアプリケーションとの安全な統合のために API キーを使用します。これらのキーは、開発者ダッシュボードを通じて作成、表示、削除、および管理できます。API キーを使用することで、Stripe のチェックアウトや請求機能を製品に統合できます。

Stripe-integration-API keys.png

パーソナルアクセストークン (PAT) とマシン間通信 (M2M) の違いは何ですか?

API キーについて話すとき、パーソナルアクセストークンと マシン間通信 (Machine-to-machine) も一緒に言及されることがあります。これらはすべて CLI コマンドを通じてプログラム的に API リソースにアクセスしたり、バックエンドサービス間の通信を確立したりすることができます。

パーソナルアクセストークン (PATs)

パーソナルアクセストークンは、特定のユーザーのアイデンティティと権限を表す文字列であり、認証 (Authentication) またはログインが成功すると動的に生成され、通常は有限の寿命を持ちますが、更新可能です。ユーザー固有のデータや機能への細かいアクセス制御を提供し、CLI ツール、スクリプト、または個人の API アクセスに一般的に使用されます。主な違いは、より具体的でユーザー固有のアクションに使用されることです。

マシン間通信 (M2M)

M2M 通信は、広義には人間の関与なしにデバイスが自動的にデータを交換することを指します。

OpenID Connect (OIDC) (または OAuth 2.0 )のコンテキストでは、M2M アプリケーションは クライアント・クレデンシャル・フロー (Client credentials flow) を使用します。これは、 OAuth 2.0 RFC 6749 プロトコル で定義されており、同様の標準プロトコルをサポートしています。通常、クライアントアプリケーション(マシンまたはサービス)が自分自身またはユーザーの代わりにリソースにアクセスすることを含みます。これは、信頼できるクライアントのみがバックエンドサービスにアクセスできる状況に理想的です。

関連項目