検索
ニュース

APIセキュリティ徹底ガイド 脅威に備えるための「13の実践ポイント」を解説74%の企業が「APIファースト」を採用

TechTargetは「APIセキュリティのベストプラクティス」に関する記事を公開した。APIセキュリティを確保するために有用な13個の施策を紹介している。

Share
Tweet
LINE
Hatena

 TechTargetは2025年3月20日(米国時間)、「APIセキュリティのベストプラクティス」に関する記事を公開した。

画像
ビジネスを保護するためのAPIセキュリティに関する13項目のベストプラクティス(TechTarget)

 APIは、アプリケーション同士が相互に連携するために、リクエストの送信と処理の方法を制御する仕組みだ。開発者や企業が利用しているパブリックAPIの数は全世界で数百万件に上ると推定される。「GitHub」「publicapis.io」「Postman」などのオンラインリポジトリには、何千ものパブリックAPIが公開されている。

 APIプラットフォームを運営するPostmanが開発者(5000人以上)を対象に実施した2024年の調査によると、回答者の74%が「APIファースト」の戦略(APIを設計や開発の中心に据え、外部連携や拡張性を前提とした開発を進めること)を採用していた。同調査で、平均的なアプリケーションで利用するAPI数について尋ねると、おおよそ26〜50個のAPIが使われていることが分かった。

 APIは、現代のアプリケーションを支える“要”であり、多くの企業の収益や成長に直結している。そのAPIを守るための「APIセキュリティ」は、情報とアプリケーションのセキュリティ戦略において極めて重要な位置を占めていると言える。

APIセキュリティとは

 APIは異なるソフトウェア間をつなぎ、シームレスな通信を実現する。クラウドサービスやモバイルアプリケーション、IoT(Internet of Things)デバイスなどの活用が進む中、APIを適切に保護することは、情報漏えいや不正取引、業務の中断を防ぐ上で重要だ。

 APIセキュリティの目的は、APIリクエストに対して「認証」「認可」「検証」などを実施することであり、例えばサービス拒否攻撃(DoS)攻撃を受けたとしてもリクエストを正しく処理できるような可用性を確保することだ。

 モダンなアプリケーションやサービスは、多数のAPIエンドポイントを持ち、使用するプロトコルやリクエスト形式も多様だ。そのため、APIセキュリティは、標準的なWebサーバにおける数個のポートや定型リクエストを保護するだけの従来型のセキュリティとは性質が異なる。

 APIセキュリティを構成するのは主に以下の3つの要素だ。

  • ネットワークセキュリティの確保
  • IDおよびアクセス管理(IAM)による認証、認可の制御
  • APIで公開されるデータやリソースの機密性、可用性、整合性を確保するためのコーディング

なぜAPIセキュリティが重要なのか

 多くの企業が自社のデータやサービスへのアクセス手段としてAPIを利用するようになったことで、APIは攻撃者にとっても魅力的なものになっている。サイバー攻撃という観点でAPIが抱えるリスクは以下の通り。

機密情報の漏えい

 APIは、個人情報、金融取引、医療記録などの機密性の高いデータを扱うことが多い。ひとたびAPIが侵害されると、こうしたデータが攻撃者に漏えいし、コンプライアンス違反、企業の信用失墜、さらには金銭的損失につながる恐れがある。

業務サービスの停止

 APIの脆弱(ぜいじゃく)性を狙った攻撃には「認証の突破」「インジェクション攻撃」「過剰なデータ露出」「不適切なレート制限」などがある。適切なセキュリティ制御やテストをしていないと、攻撃者にAPIエンドポイントを改ざんされ、不正アクセスやDoS攻撃などによって業務に支障を来す可能性がある。

APIの無秩序な拡大

 APIの無秩序な拡大(APIスプロール)も重大なリスクだ。企業のAPI利用が管理能力を上回ると、データの不整合、リソースの過剰消費などの問題が発生する。特に社外に公開しているAPIにおいてその問題が起きると、企業が本来管理していない基準や通信方式が使われることがあり、結果としてAPIセキュリティを確保しにくくなる。

 全世界を対象にした調査でも、問題の範囲と深刻さが浮き彫りになっている。2025年にTraceableが実施した調査によると、57%の企業が過去2年間にAPIの悪用によるデータ侵害を少なくとも1件は経験している一方で、APIのセキュリティ脆弱性を定期的にテストしていた企業はわずか38%にとどまった。2024年にSalt Securityが実施した別の調査では、APIの利用が2023年比で167%増加し、回答者の95%が本番環境のAPIにおいてセキュリティ上の問題を経験していたことが明らかになった。

APIセキュリティのベストプラクティス

 ここからは、企業におけるAPIのセキュリティレベルを高め、より強固な保護体制を構築するのに役立つ示す13項目のベストプラクティスを紹介する。

1.認証と認可を徹底する

 APIリソースへのアクセスを適切に制御するためには、関連する全てのユーザーとデバイスを正確かつ包括的に識別する必要がある。一般的には、クライアント側のアプリケーションがAPI呼び出し時にトークンを付加し、サーバ側でそのクライアントの正当性を検証できるようにする。

 APIトラフィックを認証し、API特定のリソースにアクセスできるユーザー、グループ、ロールを決定するアクセス制御ルールや権限の種類を定義するには、「OAuth 2.0」「OpenID Connect」「JSON Web Tokens」(JWT)などの標準技術を使用する。機器同士の連携(マシン・ツー・マシン通信)では、専用のAPIキーを安全に使用することも有効だ。

 権限については常に「最小権限の原則」(POLP)を順守すべきだ。ユーザーがブログを閲覧したりコメントを投稿したりするだけでよい場合は、それ以外の権限を付与しないことが重要だ。

2.アクセス制御を実装する

 第三者がAPIを使って社内のデータやシステムにアクセスできるようにする場合は、ゼロトラストセキュリティの考え方が有効だ。企業はAPIを使って「誰が」「何に」「いつ」アクセスできるか、また「どのような操作(参照、作成、更新、削除)を許可するか」といった観点でアクセスを管理する。

 多くの場合、ロールベースアクセス制御(RBAC)と属性ベースアクセス制御(ABAC)を組み合わせて使用する必要がある。

 適切に設計されたAPIは、レート制限(アクセス頻度の制限)や「ジオベロシティチェック」(短時間で不自然な距離を移動したアクセスを検知)などができるだけでなく、ジオフェンシング(地理的制限)や入出力データの検証といったポリシーの適用ポイントとしても機能する。

 これらのチェック処理は、APIアプリケーションの一部であるミドルウェアコードによって実施される。ミドルウェアは、リクエストが最終的な処理に渡される前に、検査、制御する役割を担っている。

3.リクエストとレスポンスを暗号化する

 全てのネットワーク通信は暗号化すべきだ。特にAPIのリクエストとレスポンスは、認証情報や機密データを含む可能性が高いため、確実に暗号化させる必要がある。APIは原則として「HTTPS」の使用を必須とし、理想的には「TLS 1.2」以上を採用すべきだ。API同士の通信では、「相互TLS」(mTLS)がよく利用される。

 可能であれば、HTTPトラフィックをHTTPSにリダイレクトするのではなく、「HTTP Strict Transport Security」(HSTS)を有効にした方がよい。なぜなら、APIクライアントによってはリダイレクト動作が想定通りに機能しないことがあるからだ。

4.データを検証する

 API経由で送られてくるデータが正しく検証されていると思い込まないことが重要だ。インジェクションなどの代表的な脆弱性攻撃や「CSRF」(クロスサイトリクエストフォージェリ)攻撃を防ぐため、独自のデータクリーニングや検証ロジックをサーバに実装する必要がある。また、データベースへのクエリには、パラメーター化クエリやプリペアドステートメントを使用し、「SQLインジェクション攻撃」のリスクを最小限に抑えるべきだ。

 「Postman」やGoogleの「Chrome DevTools」などのデバッグツールは、APIのデータフローを可視化し、エラーや異常を追跡するのに役立つ。

5.APIリスクを評価する

 APIセキュリティにおける重要なベストプラクティスとして、APIレジストリに登録された全てのAPIに対するリスク評価の実施がある。各APIが企業のセキュリティポリシーを満たしているかどうか、既知のリスクに対して脆弱でないかどうかを確認する。APIに関する脆弱性を把握するには、OWASP(Open Worldwide Application Security Project)が公開している「API Security Top 10」リストが有効だ。

 リスク評価では、特定のAPIが侵害された場合に影響を受ける全てのシステムとデータを特定した上で、リスクを許容可能なレベルまで低減するための対処計画と管理策を策定しなければならない。

 また、リスクアセスメントを実施した日付をドキュメントに残し、新たな脅威が発生した際やAPIが変更された場合には、再評価を実施することが望ましい。理想的には、コードに変更を加える前にこれらのドキュメントを確認し、セキュリティ要件やデータ処理要件が損なわれていないことを確認すべきだ。

6.必要最小限の情報のみを共有する

 APIの応答には、関連フィールドだけでなく、データレコード全体が含まれることが多い。これはクライアントアプリケーション側で表示内容をフィルタリングする前提になっているからだ。このような手法は、レスポンス速度を低下させるだけでなく、攻撃者にAPIや背後のリソースに関する過剰な情報を与えてしまうリスクがある。

 このため、APIのレスポンスには、リクエストを処理するのに必要な最小限の情報のみを含めるべきだ。例えば、従業員の年齢のみを求めるリクエストに対しては、生年月日を返す必要はない。

7.適切なWebサービスAPIを選定する

 API経由でWebサービスにアクセスする場合、主な選択肢は3つある。1つ目は通信プロトコルの「SOAP」、2つ目はデータ転送のアーキテクチャ原則を集めた「REST API」または「RESTful API」、3つ目はクライアントが必要なデータを正確に要求できるAPI向けのクエリ言語およびランタイムの「GraphQL」だ。3つの選択肢は使用するフォーマットや意味合いが異なり、セキュリティを効果的に確保するために必要な手法も異なる。

SOAP

 SOAPにおけるセキュリティは、XML(Extensible Markup Language)形式のメッセージの中にデジタル署名や暗号化されたセクションを組み込むことで、メッセージ単体に適用できる。高い標準化とセキュリティを重視する場合には、SOAPが適している。

 SOAPとRESTはどちらもSSL/TLS(Secure Sockets Layer/Transport Layer Security)による通信の暗号化に対応している。SOAPはこれに加えて、Web Services Security(WS-Security)によるメッセージ単位のセキュリティ機能もサポートしている。SSL/TLSは基本的にエンドポイント間(点と点)の検証に限られるため、WSSによって中継ノードを経由したアイデンティティー検証も可能となっている。また、SOAPには組み込みのエラーハンドリング機能も備わっている。

 一方で、SOAPはデータではなくアプリケーションロジックの構成要素をサービスとして公開する形式であり、実装が複雑になる傾向がある。そのため、SOAPを導入する際はアプリケーションのリファクタリングが必要になる場合がある。

REST

 RESTは、HTTPタグやURLパスなどのAPIのURI(Uniform Resource Identifier)に関連付けられるアクセス制御ルールに大きく依存する。SOAPがXMLとHTTPだけを処理するのに対し、RESTはさまざまな形式のデータ出力に対応しており、JSON、CSV(カンマ区切り値)、HTTPなどをサポートする。また、RESTは基本的にデータアクセスのみを目的としているため、Webサービスへのアクセスがよりシンプルになる。

 このような理由から、Webアプリケーション開発においてはRESTが広く採用されている。ただし、RESTを安全に運用するには、データのやりとり、APIの展開、クライアントとの通信に対して適切なセキュリティ対策をあらかじめ組み込んでおく必要がある。

GraphQL

 GraphQLは、WebサービスおよびAPIの分野で急速に注目を集めており、特に柔軟性と効率性が求められるアプリケーションや、複雑なデータリクエストモデルを扱うケースに適している。

 GraphQLは以下のような用途に向いている。

フロントエンドのAPIクエリ

 開発者は必要なデータだけをピンポイントで取得できる。このため、バックエンドのデータ構造やコンポーネントを変更することなく柔軟な設計が可能になる。

さまざまなクライアント(Web、モバイル、サードパーティー)に対応するアプリ

 同一のAPIエンドポイントからそれぞれの用途に応じたカスタマイズデータを取得できるため、クライアントごとにエンドポイントを用意しなくてもよい。



 一方で、GraphQLにはセキュリティ上の懸念も幾つか存在する。

 GraphQLではクエリをほぼ際限なくネストできるため、DoS攻撃を招く可能性がある。また、GraphQLでは全てのリクエストが単一のエンドポイント(/graphql)を経由するため、オブジェクトレベルやフィールドレベルでの承認チェックがおろそかになりがちで、BOLA(壊れたオブジェクトレベル認可)攻撃の影響を受けやすくなる。

8.APIをAPIレジストリに記録する

 把握できないものは保護できない。そのため、全てのAPIをレジストリに記録し、そのAPIの特性(APIの名前、目的、ペイロード、使用状況、アクセス、稼働日、廃止日、担当者など)を定義することが不可欠だ。そうすることで、合併や買収、テスト、バージョンの廃止などの事情によって、メインプロジェクトの管理外で開発され、ドキュメントも残されずに放置されてしまう「シャドーAPI」や「サイロAPI」を抑制できる。

 ログに記録すべき情報として「誰が(Who)」「何を(What)」「いつ(When)」という基本要素を明確に定義しておく必要がある。これによって、コンプライアンス対応や監査要件の充足、さらにセキュリティインシデント発生時のフォレンジック調査にも役立つ。

 こうしたAPIをサードパーティーの開発者が自分のプロジェクトに組み込む場合、APIの仕様を明確に記述したドキュメントの整備が重要になる。APIレジストリには、関数、クラス、戻り値の型、引数、統合手順などの技術要件を網羅した文書やマニュアルへのリンクを含める必要がある。

9.定期的なセキュリティテストを実施する

 APIは開発段階で十分にテストすべきなのは当然だが、本番環境で稼働しているAPIを確認することも重要だ。セキュリティチームは、セキュリティ制御が期待通りに機能しているかどうかを、定期的にチェックする必要がある。理想的には、APIのセキュリティテストは包括的かつ継続的に実施し、脆弱性の発見と修正に迅速に対応できる体制を整えておくべきだ。

 インシデント対応チームは、脅威検知システムやセキュリティ制御から発せられるアラートに基づいて、API攻撃の兆候が現れた際に迅速に対処できるよう、明確な対応計画(インシデントレスポンスプラン)を策定しておく必要がある。

画像
APIセキュリティテストは継続的に実施すべきプロセスだ。このチェックリストに従うことで効果的かつ柔軟な戦略を構築できる

10.APIキーを安全に保管する

 APIキーは、APIを呼び出すアプリケーションやWebサイトを識別、認証するために使われる。APIキーはリクエストのブロックやレート制限をする際にも利用され、APIの使用状況を把握するための手掛かりにもなる。

 ただし、APIキーは認証トークンに比べて安全性が低く、慎重な管理が必要だ。誤って外部に漏えいしないように、APIキーをアプリケーションのソースコードやソースツリー内のファイルに直接埋め込むことはせずに、環境変数またはソースツリー外の安全な設定ファイルに保存する。シークレット管理サービス(Secrets Management Service)を利用し、APIキーを安全に保護、管理することも優れた方法だ。

 これらの対策をしていても、不要になったAPIキーは速やかに削除し、定期的にAPIキーを再生成することを習慣にすべきだ。特に、セキュリティ侵害の疑いがある場合は、直ちにキーを更新する必要がある。

11.APIの監視と脅威検出へのAIの追加

 行動分析にAIを活用することで、APIの全体的なセキュリティを大幅に向上させることができる。AIは、通常時のAPIトラフィックをベンチマーク(基準化)し、ユーザーがどのようにAPIへアクセスし、どのようにデータを消費しているかを明らかにする。これによって、開発者は状況に合わせてセキュリティチェックのしきい値をより細かく設定できるようになる。こうした行動分析のデータは、異常な挙動を検出してアラートを出したり、不正利用や攻撃の兆候をリアルタイムでブロックしたりする脅威検出ツールでも活用できる。

 攻撃者は、APIの脆弱性やロジックの欠陥を突くために繰り返しプロービング(探索)を実行するため、リアルタイムの監視は攻撃検出と即時対応のために不可欠だ。このようなAI主導型のアプローチは、あらかじめ定義されたポリシーやルール、攻撃シグネチャを定義する必要がないため、新たに出現する攻撃手法に応じたルール変更が不要になるという利点もある。

12.安全なAPI利用の全体像を理解する

 APIセキュリティは、自社が提供するAPIだけでなく、サードパーティーのAPIも対象となる場合がある。外部のデータを扱うアプリケーションやサービスをAPI経由で構築する前に、対象APIの動作と統合方法を正確に理解する必要がある。

 使用するAPIの機能やルーティンのプロセス面とセキュリティ面(必要な認証、呼び出しプロセス、データ形式、発生する可能性のあるエラーメッセージなど)に注目し、そのAPIのドキュメントを熟読するとよい。攻撃の対象領域(アタックサーフェス)を把握し、セキュリティに関して生じる可能性のある問題を特定して、適切なセキュリティ対策を最初から組み込むのに役立つ脅威モデルを構築するのが優れたアプローチだ。

 APIは、企業のサービスを強化し、顧客とのエンゲージメントを深め、生産性と収益を向上させるための機会を生み出す。ただし、それは安全にAPIが実装されている場合に限る。

13.APIセキュリティゲートウェイとツールを導入する

 APIはHTTPSなどの安全なプロトコルを使い、「ファイアウォール」や「Webアプリケーションファイアウォール」(WAF)、「APIゲートウェイ」のセキュリティ層を経由させた上でアクセスする構成にすべきだ。これによって、シグネチャベースの脅威やインジェクション攻撃などから防御できるようになる。

 近年では、WebアプリケーションとAPIを統合的に保護する新たなセキュリティプラットフォームとして、「WAAP」(Web Application and API Protection)が登場している。WAAPとは、WAF、RASP(Runtime Application Self-Protection)、APIとマイクロサービスの保護、bot保護などの機能を組み合わせたものだ。

よくあるAPIセキュリティのリスク

 企業は、開発中やAPIのアップデート時に、APIセキュリティに関する以下のリスクに対処する必要がある。

BOLA

 BOLAは、リクエスト内の識別子を改ざんすることで、本来アクセスできない他ユーザーのデータにアクセス(または変更)できてしまう状態を指す。例えば、あるユーザーが自分のアカウント以外の情報にアクセスできてしまう状態が当てはまる。

BFLA(機能レベルの認可不備)

 アプリケーションやAPIが「どのユーザーがどの機能を使えるか」という権限チェックを正しく実施しないことで、本来アクセスできないはずの機能や操作を一般ユーザーでも実行できてしまう脆弱性のこと。POLPが実装されておらず、アクセス制御のポリシーが複雑過ぎる場合に発生することが多い。結果として、攻撃者が本来は特権アカウント専用である機能やエンドポイントを実行、操作できてしまう恐れがある。

ユーザー認証の不備

 BOLAと同様、認証プロセスが侵害されると、攻撃者は別のユーザーになりすまし、一時的(または永続的)に不正アクセスできるようになる。このリスクが顕在化すると、IDの乗っ取りやセッションの不正利用が発生する可能性がある。

過度のデータ露出

 APIはリクエストに対して、必要以上のデータを含んだレスポンスを返すことがある。こうしたデータはユーザーの目には触れないとしても、開発ツールなどを使えば簡単に確認できるため、機密情報の漏えいにつながる可能性がある。

資産と構成管理の不備

 APIの開発やリリースは往々にして短期間で進行するため、詳細なドキュメントの作成は省略されることがある。その結果として、公開されたままのエンドポイント、非推奨(deprecated)となったAPI、シャドーAPIなどが放置されることになる。

 また、古いAPIの挙動や依存関係についての理解が不十分になり、実装や保守の難易度が高まる。APIやその関連コンポーネントの設定ミスや不適切な構成によって、不要な情報露出や既知の脆弱性が放置される可能性もある。

画像
Web対応アプリケーションにおいて、公開されたAPIは主要なアタックサーフェスとなる。悪意のある攻撃者は、こうしたAPIの脆弱性を突くことで問題を引き起こし、不正に侵入する

レート制限の欠如とリソース枯渇の可能性

 APIエンドポイントは通常インターネットに公開されている。リクエストの件数やサイズに制限が設けられていない場合、DoS攻撃やブルートフォース攻撃の対象となる恐れがある。こうした攻撃によって、サーバのリソースが枯渇し、ユーザーがサービスを利用できなくなるリスクが生じる。

インジェクションの脆弱性

 リクエストデータの解析と検証が適切に実施されていない場合、攻撃者はコマンドインジェクションやSQLインジェクションなどの攻撃を仕掛け、認可されていない操作を実行したり、内部データへ不正にアクセスしたりする可能性がある。これらは重大なセキュリティ侵害につながる。

一括代入(マスアサインメント)

 ソフトウェア開発フレームワークの多くは、Webフォームから送信されたデータを1行のコードでデータベースやオブジェクトに一括で代入(マスアサイン)できる機能を提供している。これは煩雑なマッピング処理を省略するための機能だが、受け入れるべきデータ項目を明示的に指定していない場合、攻撃者によって意図しないフィールドの操作や上書きが実施され、複数の攻撃経路が開かれてしまう恐れがある。

ログ記録と監視の不備

 APIやアプリケーションについて、効果的なログ記録や監視が不足していることは多い。そのため、攻撃を受けた際にセキュリティチームや開発チームが気付けず、対応が遅れることがある。このような「セキュリティの死角」は、脅威の早期発見、対処を妨げる重大なリスクだ。

Copyright © ITmedia, Inc. All Rights Reserved.