公開日:2024年6月11日
寄稿者:Gita Jackson、Michael Goodwin
APIキーは、アプリケーション・プログラミング・インターフェース(API)を介して他のソフトウェアやシステムにアクセスしようとするソフトウェアやシステムを認証するために使用される一意の識別子です。
API(アプリケーション・プログラミング・インターフェース)とは、ソフトウェア・アプリケーションが相互に通信し、データや機能、特徴を交換できるようにするためのルールやプロトコルの集合です。また、APIを使用すると、アプリケーション所有者は、アプリケーションのデータや機能を組織内の部門が簡単かつ安全に利用できるようになります。アプリケーション所有者は、データや機能をビジネスパートナーや第三者と共有したり、販売したりすることもできます。APIを使用すると、必要な情報のみを共有し、その他の内部システムの詳細を隠すことができるため、システムのセキュリティーに役立ちます。
APIは機密データへのアクセスを提供する可能性があるため、リクエストを行うアプリケーションがそのアクセスを許可されているかどうかをAPIが検証できることが重要です。APIキーを使用すると、アプリケーション開発者はAPIのバックエンドを呼び出すアプリケーションを認証して、呼び出しが許可されていることを確認できます。
APIキーは、企業のAPIとそれらが処理するデータの安全性を確保する上で重要な要素ですが、決定的なAPIセキュリティー・ソリューションではありません。特に、APIキーは認証トークンやOAuth(オープン認証)プロトコルほど安全ではありません。これらの対策は、特定の人間のユーザーを認証するのに適しており、組織は特定のAPIの機能へのアクセスをより細かく制御でき、有効期限を設定することも可能です。
OAuthはAPIキーと一緒に使用することも、単独で使用することもできます。企業によっては、一部のユーザーにはAPIキーを使用し、他のユーザーにはOAuthを使用する場合があります。JSON Web Token(JWT)など、API呼び出しを認証する方法は他にもありますが、それほど一般的には使用されていません。
APIキーは、組織がAPIの呼び出しを監視し、APIの消費を管理してセキュリティーを強化し、これらのプログラムに十分な帯域幅を確保するのに役立つため、依然としてAPIセキュリティーで有用です。
このスマートペーパーを読んで、API管理の必要性を高める主要な課題についてのインサイトを深め、効果的なAPI管理ソリューションに固有の主要な機能について理解してください。
IBMニュースレターの購読
APIキーとは、APIを呼び出すアプリケーションを認証するためにAPIが使用する、ランダムに生成された一意の英数字文字列のことです。APIプロバイダーが発行する各キーは、ソフトウェア・モジュールなどの特定のAPIクライアントに関連付けられます。APIキーを使用すると、APIサーバーはAPIへの呼び出しを送信しているソフトウェアとアプリケーションを識別できます。生成されたキーは、そのアプリケーションまたはプロジェクトから関連付けられたAPIに対して行われるすべてのリクエストに(キーが更新または削除されるまで)使用されます。
そのプロセスは次のようになります。
アプリケーションがAPIを呼び出して別のアプリケーションに機能やデータを要求すると、APIサーバーはAPIキーを使用してアプリケーションの信頼性を検証します。WebアプリケーションおよびRESTAPIの場合、キーはヘッダー、クエリー文字列、またはCookieとして送信できます。APIキーが承認されたキーと一致する場合、サーバーは要求されたデータを返します。そうでない場合は、通話を拒否し、拒否メッセージを送信します。
開発者は必要に応じてさらに検証と制限を追加できます。
例えば、開発者は、特定の種類のデータや機能へのアクセスのみを許可するアプリケーションまたはプロジェクトのアクセス権を構成できます。開発者は、APIキーを使用できるWebサイト、IPアドレス、アプリケーション(またはモバイル・アプリ)、ソフトウェア開発キット(SDK)を指定するアプリケーション制限を設定することもできます。
APIキーはAPIセキュリティー の一部ですが、組織がAPIへの呼び出しを認証および検証する唯一の方法であってはなりません。実際、APIキーは便利ですが、呼び出しを認証する方法として特に安全なわけではありません。APIキーは特定のアプリケーションまたはプロジェクトを識別できますが、呼び出しを行っているアプリケーションを使用している個々のユーザーを検証することはできません。このため、APIキーはAPIアクセス制御を実施するのに適切な選択肢とは言えません。APIキーはプロジェクトの識別とプロジェクトの承認のみを行い、ユーザーの識別や承認は行いません。
APIキーはパスワードのようなものだと考えてください。APIキーはセキュリティーの1つの層ですが、セキュリティー侵害を引き起こす潜在的な障害点にもなります。なぜなら、パスワードと同様に、APIキーにアクセスできる人なら誰でも使用できるからです。誰がキーを使用しているかを確認する方法はありません。また、キーは特別に再生成されない限り期限切れになることはほとんどありません。
Webアプリケーションで使用されるAPIキーは、暗号化されていない資格情報を送信するため、プレーンなハイパーテキスト転送プロトコル(HTTP)経由では安全であるとはみなされません。安全であるとみなされるためには、Webアプリケーションはセキュア・ソケット層(SSL)証明書(別名、ハイパーテキスト転送プロトコル・セキュア(HTTPS))を取得している必要があります。
API呼び出しのその他の検証方法は次のとおりです。
APIトークンとも呼ばれる認証トークンは、リクエストを行うアプリケーションだけでなく、特定のユーザーを識別できるため、APIセキュリティーを強化します。これらのトークンは、データの要求元となるAPIに対してユーザーを識別するコード・スニペットです。これらは単一の英数字文字列ではなく複数行のコードであるため、リクエストを行っている人物またはプロジェクトに関する詳細な情報をAPIに提供します。APIトークンは、限定された範囲で生成することもでき、特定の情報へのアクセスを限られた期間のみ許可します。
OAuth(オープン認証)プロトコルは、OpenID Connect(OIDC)と併用した場合、APIへの呼び出しを許可および認証するための業界標準の方法の一部です。OAuthプロトコルは、ユーザーに要求された情報へのアクセスを許可するもので、より広範なユーザー認証プロセスで使用されます。
OAuthは、アクセス・トークンと呼ばれる一種のAPIトークンを使用します。アクセス・トークンは、ユーザーがアクセスを要求しているAPIによって発行されます。これらのトークンは、APIとユーザー間の一連の通信を通じて、資格情報やその他の安全な情報をAPIと共有することなく、ユーザーが要求した特定の情報へのアクセスを許可します。
OpenID ConnectはOAuth上に構築された認証プロトコルであり、これによりOAuthはIDトークンとアクセス・トークンを発行してユーザーを認証できるようになります。これらのIDトークンには、プロジェクトだけでなく、リクエストを行っている特定のアカウントに関する情報も含まれます。OpenID Connectは、APIへのアクセスを許可する前にアクセス・トークンとIDトークンの両方を要求することで、OAuthの認証フローをわずかに調整します。
APIキーは、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への各呼び出しを特定のアプリケーションまで追跡できます。また、通話回数、通話の種類、ユーザーのIPアドレス範囲、さらにはiOSとAndroidのどちらを使用しているかを判断することもできます。
使用パターンを分析すると、企業のどの部分が特定のエンドポイントに最も頻繁にアクセスしているかを組織がよりよく理解できるようになります。トラフィックの監視とログのフィルタリングは、APIセキュリティーにも役立ちます。サイバー攻撃が発生した場合、APIサーバー上の行動を特定のAPIキーと照合することで、組織は攻撃の詳細と、侵害された可能性のあるキーを把握できるようになります。
APIキーは、安全な方法で使用される場合に限り、API、データ、ネットワークを保護するのに役立ちます。多くの組織では、APIキーが安全であることを確認し、APIがサイバー攻撃のベクトルになるのを防ぐために、これらの方法を採用しています。
複数の認証方法を組み合わせる
APIキーは、API呼び出しを認証する唯一の方法としては、安全性が十分ではありません。個々のユーザーを検証することができず、簡単に侵害される可能性があります。APIキーは、OAuth、JSON Web Token(JWT)、認証トークンなどの別の認証方法と組み合わせて使用すると、組織のAPIエコシステムにセキュリティーの障壁を追加できます。
組織が複数の認証方法を使用することは珍しくありません。例えば、開発者は開発中にAPIキーを内部で使用してAPIへの無制限のアクセスを提供できますが、外部のクライアントには OAuthを使用します。OAuthでは有効期限のあるトークンが提供され、特定のデータへのアクセスのみを許可するように設定できるためです。
安全なキーの保管
キーが生成される場合、多くの場合、プレーンテキストで生成されます。パスワードと同様に、そのキーのセキュリティーは、キーがどのように、どこに保存されるかによって決まります。セキュリティー専門家は、盗難されないように、これらのキーをハッシュ値としてデータベースに保存することを推奨しています。
APIキーをソース・コードまたはリポジトリーに埋め込むと、悪意のあるユーザーに対して脆弱になり、アプリケーションが公開されると、キーも一般に公開される可能性があります。可能であれば、安全で暗号化されたデータ・ボールトを使用して、生成されたAPIキーを保存すると良いでしょう。
キーをローテーションさせるまたは置き換える
開発者が有効期限を設定するか、キー・ジェネレーターがアクセスを取り消したりキーを再生成したりしない限り、APIキーは期限切れになりません。権限のないユーザーがAPIキーを取得すると、組織内の誰にも知られずに機密データにアクセスできるようになります。これは、要求しているデータを取得するために正しいキーを使用しているためです。
そのため、90~180日ごとに新しいAPIキーをローテーションして生成すると、APIを安全に保つことができます。また、使用されなくなったAPIキーを削除することもお勧めします。保護をさらに強化するために、組織はアクセス権を適用して、クライアントと共有されるAPIキーのアクセス範囲を制限できます。これらの権限により、ユーザーは必要なエンドポイントのみにアクセスできるようになります。一部の組織では、新しいキーの生成を自動化して、定期的にキーがローテーションされるようにしています。
IBM® Cloud Pak for Integrationは、閉ループのAI自動化の機能を適用して、複数のスタイルの統合をサポートするハイブリッドな統合プラットフォームです。このプラットフォームは、単一の統一された使用環境内で包括的な一連の統合ツールを提供し、あらゆるクラウドまたはオンプレミス環境にわたってアプリケーションとデータをつなぎます。
IBM App Connectは、業界最高レベルのアプリケーション統合ソリューションで、アプリケーションとデータの場所を問わずに接続できます。
IBM Event Automationは、完全に構成可能なソリューションであり、企業が歩むべき道程のどの段階にいても、イベント駆動型の取り組みを実現し、加速できるように支援します。イベント・ストリーム、イベント・エンドポイント管理、イベント処理機能は、イベントの価値を引き出すためのイベント駆動型アーキテクチャーの基盤作りを支援します。
アプリケーション・プログラミング・インターフェース(API)とは、ソフトウェア・アプリケーションが相互に通信し、データや機能、特徴を交換できるようにするための一連のルールまたはプロトコルです。
IBM API Connectの技術的概要、APIライフサイクルのフェーズ、主要な製品コンポーネントにアクセスできます。
開発者ポータルでアプリケーション開発者とAPIを共有する方法を学びます。
調査会社であるGartner社の2023年版「Magic Quadrant for Full Lifecycle API Management」レポートにおいて、IBMが8年連続で首位に選出された理由をご覧ください。
Critical Capabilities for API Managementレポートは、Magic Quadrantを補足するもので、プロバイダーが提供する各種製品に関するより深い洞察を提供しています。このレポートでは、5つのユースケースのうち4部門でIBMが首位に選出されています。
サイバーセキュリティーとは、個人や組織のシステム、アプリケーション、コンピューティング・デバイス、機密データ、金融資産に対するサイバー攻撃を防止する、あるいはその影響を軽減するためのあらゆる技術、対策、実践を指します。