API 鍵とは?
- IAM 用語集
- API 鍵とは?
アプリケーション・プログラミング・インターフェース (API) キーは、アプリケーションやユーザーを識別・認証するためのランダムな文字列です。 APIは固有の識別子として機能し、認証のための固有のトークンを生成します。 APIとは、2つ以上のシステムやアプリケーションが相互に通信するためのルールやプロトコルの集合を指します。クライアントにアクセスを付与する際は、APIキーを確認して許可されたクライアントのみがデータを要求および取得できるようにしなければなりません。
APIキーとAPIトークンの違い
APIキーとAPIトークンはどちらも認証と権限の付与に使用されますが、その構造と使用方法は異なります。APIトークンは固有の文字列で、アプリケーションやその他のエンティティを除く特定のユーザーを識別するのに使用されます。APIトークンは、ユーザートークンに基づく認証にも関連づけられており、トークンの種類やユーザーの権限に関する情報など、ユーザー固有のデータが追加で必要となります。
さらに、APIトークンには有効期限が設定されているのに対して、APIキーは手動で変更しない限り有効なままとなります。そのため、APIトークンはAPIキーよりもセキュリティが強力であり、組織は認証のためにAPIトークンを好む傾向があります。
APIキーの仕組み
APIキーは、ユーザーやアプリケーションが行うAPIリクエストに統合され、本人確認や特定の権限の確認を行います。ここでは、APIキーの使い方を説明します。
- APIキーの生成: クライアントは、APIにアクセスする前に、APIサーバーに最初のキーリクエストを送信しなければなりません。これには通常、クライアントが固有のAPIキーを受け取るために必要となる認証情報を提供するか、何らかの形での認証が必要となります。
- リクエストにAPIキーを含める: APIキーを取得すると、クライアントはAPIキーをAPIリクエストに含めます。通常は、クエリ文字列の一部かリクエストヘッダに含めます。
- APIキーの検証: APIサーバーではキーの検証と処理を行い、キーが有効かどうかを確認します。 キーがクライアントのデータベースと一致する場合、リクエストは承認されます。 一致しない場合はキーが拒否されます。
- レスポンスを受信する: APIキーの検証後、APIサーバーでリクエストが処理され、クライアントが期待するレスポンスを生成します。
APIキーが使用される理由
APIキーは、APIによって提供される外部サービスとのやり取りにおいて、セキュリティと可視性を確保するための強力なツールです。APIキーを採用することで、組織はセキュリティを強化し、タスクを自動化し、どのユーザーがAPIにアクセスできるかを制御できるようになります。
セキュリティの強化
サイバー犯罪者がウェブAPIを標的にする傾向があるのは、ウェブAPIがユーザーの認証情報などの機密性の高い情報を転送するゲートウェイであることに理由があります。APIキーは、APIにアクセスする各クライアントを識別および検証する役割を果たすため、不正アクセスを防いで、データ漏洩などのセキュリティ脅威を低減することができます。
タスクの自動化
APIキーで幅広いタスクが自動化され、複数のプロセスで手動で介入する必要がなくなります。タスク自動化の例としては、外部ソースからのデータ取得、定期的なレポート作成、システムの統合、データやサービスの収益化などがあります。反復作業を自動化することで、効率と生産性が向上し、人的なエラーも低減します。
アクセスの制御
APIキーで、どのユーザーがAPIにアクセスできるかを簡単に規制できます。管理者は、各アプリケーションの特定のニーズに基づいて、アクセス権を付与したり取り消したりできます。 組織は機密情報の露出を制限することで、セキュリティ対策を強化すると同時に、データ使用量に関する可視性が向上します。
APIキーを使用するタイミング
APIキーでAPIの使用状況が追跡されるため、組織ではAPIキーを使うべきタイミングを理解しておく必要があります。このことは、アプリケーションのセキュリティを維持する上で不可欠となります。APIキーが使用される最も一般的なケースには、匿名トラフィックのブロック、APIコールの制御、ログのフィルタリングなどがあります。
匿名トラフィックのブロック
APIキーは、APIにアクセスする各ユーザー固有の識別子として機能することで、匿名トラフィックをブロックするのに役立ちます。権限が付与されたユーザーが認証プロセスを完了するためには、APIキーが含まれていてAPIプロバイダがアクセスを追跡できなければなりません。APIキーは各リクエストで必須となっているため、匿名トラフィックをブロックすることができます。 これにより、認証されたユーザーのみがAPIのリソースにアクセスできるようになります。
APIコールの制御
APIコールは、ユーザーやアプリケーションがAPIサーバーにデータへのアクセスを要求するプロセスです。 APIキーでサーバーへのコール回数を制限できるため、APIシステムの最適なパフォーマンスを確保するとともに、脅威アクターからシステムを保護するのに役立ちます。 大量のAPIリクエストが送信されるとサーバーに負荷がかかるため、APIへのコール数を制御することが重要です。
ログのフィルタリング
APIサーバーでは、リクエストで使用された特定のAPIキーに基づいてログをフィルタリングすることができます。APIエンドポイントへのリクエストが行われると、関連するキーがログに記録されます。それにより管理者はリクエストのソースを追跡し、リクエストを行ったクライアントを特定し、そのアクティビティを監視することができます。ログをフィルタリングすることで、管理者はトラブルに対処し、パフォーマンスを最適化するのに役立つ貴重な知見を得ることができます。
APIキーのベストプラクティス
ここでは、組織がAPIキーを保護するために遵守すべき4つのベストプラクティスをご紹介します。
APIキーの安全な保管
APIキーを個人のパスワードのように扱いましょう。 付箋やスプレッドシートにAPIキーを書き留めるのは避けるようにしましょう。 その代わりに、キーをシークレット管理システムに保管したり、強固な暗号化アルゴリズムを使用して暗号化したりして、漏洩することがないようにしましょう。
APIリクエストにHTTPSを使用する
HTTPSでは、TLS (Transport Layer Security: トランスポート・レイヤー・セキュリティ) 暗号化を使用しています。TLSは、アプリケーション間の通信におけるデータセキュリティを保証する標準的な手法です。APIキーへはHTTPSを介してアクセスできるようにするのがベストプラクティスです。これにより、脅威アクターによってAPIキーが送信中に盗まれるのを防ぐことができます。
アプリケーションごとに異なるAPIキーを使用する
アプリケーションごとに異なるAPIキーを使用することで、複数のアプリケーションが同時に影響を受けるリスクを軽減できます。 これにより、あるアプリケーションのAPIキーが漏洩した場合でも、他のアプリケーションは安全です。
APIキーのローテーションと削除
APIキーを安全に管理するには、キーローテーション (通常は30日間、60日間、90日間のどれか) を導入します。 キーを定期的にローテーションすることで、サイバー犯罪者の攻撃の機会が限られるため、侵害のリスクが軽減されます。APIトークンとは異なり、APIキーはユーザーが手動で再生成したり削除したりしない限り有効なままであるため、ローテーションは不可欠です。さらに、不要になったAPIキーは削除するようにしましょう。ストレージ容量が最適化され、不正アクセスへの予防にもなります。