API(アプリケーションプログラミングインターフェース)とは、異なるアプリケーション、ソフトウェアシステム、コンポーネント間の通信を可能にするプロトコル、ルーチン、ツールの集合です。分散プラットフォーム全体でアプリケーション、サービス、システム、データを結び付ける役割を担うため、現代のデジタルインフラストラクチャにおいてAPIの重要性はますます高まっています。
APIは今日のデジタル環境を支える基盤であるため、APIを起点にアプリケーションを設計する「API-first」アプローチを採用する組織が増えています。これは、モノリシックなコードを優先し、API設計は後回し、場合によってはまったく行わない従来の「コードファースト」アプローチとは対照的です。
APIが急増していることは間違いありません。現在、一般的な組織では400を超えるAPIを管理しています。また、68%の組織がデジタルインフラストラクチャ内でAPIを使用して、アプリケーションの配信とセキュリティを管理しています。さらに、ほとんどの組織はAPIの無秩序な増加がリスクになると認識しており、58%の組織がこれを重大な課題と捉えています。APIが広く普及すると組織の攻撃対象領域が拡大するうえ、マルチクラウドアーキテクチャ全体にわたるAPI間の相互依存関係によって、予期しない脅威が生じるためです。
“APIは、分散プラットフォーム全体でアプリケーション、サービス、デバイス、データを結び付ける役割を担うため、現代のデジタルインフラストラクチャにおいてますます重要になっています。”
APIは、脆弱性の悪用、自動化された脅威による不正利用、サービス拒否、設定ミス、認証および認可の制御を回避する攻撃の影響を受けやすいものです。堅牢なAPIセキュリティ対策が不可欠です。APIは重要なビジネスロジックや機密情報を公開するため、ユーザーデータ、認証情報、金融取引を不正なアクセス、改ざん、漏えいから保護するとともに、APIの完全性と可用性を確保する必要があります。
このブログ記事では、APIに対する主なセキュリティ脅威の概要を簡潔に説明するとともに、アクセス制御、入力検証と出力管理、APIテスト、監視など、マルチクラウド環境全体でAPIを保護するための主要なAPIセキュリティ戦略とベストプラクティスをまとめたチェックリストを紹介します。また、準拠すべき主要なAPIセキュリティ標準を推奨し、重要なAPIの保護に役立つAPIセキュリティツールも提案します。
1. アクセス制御、認証、認可
アクセス制御とは、特定のリソースへのアクセス権限を付与するユーザーを決定し、その権限を適用する体系的なプロセスです。このプロセスには、認証と認可の両方が含まれます。認証はユーザーの本人確認を行うプロセスであり、認可は認証済みユーザーに許可するアクセスレベルを決定するプロセスです。
APIセキュリティを強化するためのアクセス制御チェックリストでは、以下の点が重要です。
- アクセス制御にBasic認証を使用しないでください。 Basic認証は通常、単純なユーザー名とパスワードの認証情報で構成されており、執拗な攻撃者によって容易に侵害される可能性があります。代わりに、より強力なアクセス制御方式(OAuthやJSON Web Token(JWT)など)を使用してください。
- APIトークンのベストプラクティスに従ってください。 APIトークンは、APIエンドポイントやサービスへのアクセス権の付与によく使用されます。不適切に扱うと、機密性の高いシステムが不正アクセスや悪用にさらされる可能性があります。トークンのスコープと権限を制限し、アクセストークンには必ず有効期限を設定したうえで、トークンを安全に保存、送信してください。
- 認証と認可の不備を確認する。 ユーザーの認証方法やアクセスを許可する対象に関連する一般的なセキュリティ上の弱点を特定し、修正します。こうした脅威には、認証の不備があります。これは、パスワード、鍵、セッショントークン、ユーザーアカウント情報が侵害され、攻撃者が正規ユーザーになりすませる状態を指します。オブジェクトプロパティレベルの認可の不備(BOLA)は、アプリケーションがオブジェクトまたはデータレベルでアクセス制御を適切に適用できていない場合に発生します。その結果、攻撃者が認可チェックを操作または回避し、アプリケーション内の特定のオブジェクトやデータに不正アクセスできるようになります。機能レベルの認可の不備は、APIが機能または操作レベルで認可チェックを適切に適用できていない場合に発生します。その結果、攻撃者が許可されていない機能にアクセスしたり、正規の機能を操作したりできるようになります。
- IDストアを保護する。 APIキー、認証ログ、ユーザー認証情報など、IDに関する機密データを保存するシステムを保護します。そのためには、保存データの暗号化、アクセスの制限、強力なアクセス制御の使用が必要です。IDストアを保護することで、攻撃者が認証および認可に関する重要な情報に不正アクセスするリスクを軽減できます。
- Use an APIゲートウェイを使用する。すべてのAPIのアクセス制御を一元管理します。これにより、認証、レート制限、認可ルールなどのポリシーを一貫して適用しやすくなります。こうした制御をゲートウェイ経由で適用することで、設定ミスのリスクを軽減し、すべてのAPIを一貫して保護できます。
- すべての機密データを暗号化する。 暗号化により、APIを介して流れるデータを、転送中と保存時のいずれにおいても不正アクセスから保護できます。攻撃者がネットワークトラフィックを傍受したり、ストレージシステムにアクセスしたりしても、適切な復号鍵がなければ暗号化されたデータを読み取ることはできません。これにより、データの機密性と完全性を確保し、規制遵守の維持にも役立ちます。
- レート制限を実装する。一定時間内にクライアントがAPIリクエストを実行できる頻度を制御することで、攻撃者が大量のトラフィックをAPIに送り込むのを防ぎ、分散型サービス拒否攻撃(DDoS)の防止に役立ちます。また、ログイン試行の繰り返しを遅延またはブロックすることで、クレデンシャルスタッフィング攻撃の防止にも役立ちます。
2. 入力と出力
API入力検証は、ハッカーによる悪意のあるAPIリクエストの送信を防ぎます。一方、出力管理は、APIから機密データが漏えいしないようにすることで、データ損失を防ぎます。
APIセキュリティを強化するための入出力チェックリストに関する主な推奨事項は、次のとおりです。
- Content-Typeヘッダーとデータ形式に関するユーザー入力を検証します。Content-Typeヘッダーは、送信されるデータの種類をAPIに伝えます。これを検証することで、APIは想定され、サポートされている形式のみを処理できます。データ形式を確認することで、ペイロードの構造がAPIの想定または意図したものと一致していることを確認できます。こうした検証により、想定外または不正な形式の入力を拒否し、インジェクション攻撃を防止できます。
- APIリクエストの種類ごとに適切なHTTPメソッドを適用します。 HTTPメソッドを厳格に適用することで、APIの動作の予測可能性を確保し、不正使用や権限昇格を防止できます。たとえば、GETはデータの取得のみに使用し、変更には使用しません。POSTは作成リクエスト、PUT/PATCHは置換または更新リクエスト、DELETEは削除リクエストに使用します。これらのHTTPメソッドが厳格に適用されていない場合、悪意のあるユーザーが、GETエンドポイントにPOSTやPUTを送信するなど、許可されていないメソッドを使用してAPIを悪用し、本来は閲覧しか許可されていないデータを変更する可能性があります。
- 悪意のある入力や誤って構成された入力をテストする。 インジェクションの脆弱性や構成ミスをテストするには、攻撃を防ぐために、APIがユーザー入力を適切に処理し、サニタイズしているかを能動的に確認します。SQLインジェクションは、攻撃者がデータベースクエリを操作するよう細工した入力を送信することで発生し、データが漏えい、改ざん、または削除される可能性があります。一方、入力設定に不備があると、攻撃者が制御を回避したり、機密データにアクセスしたりするおそれがあります。
- APIが機密データを返さないようにする。 APIのレスポンスで、機密情報やセキュリティ上重要な情報が公開されないように設定します。認証情報やパスワードは、傍受や悪用のおそれがあるため、エラーメッセージを含め、APIレスポンスに決して含めないでください。アクセストークン、リフレッシュトークン、セッションIDは保護し、管理された安全な状況でのみ返す必要があります。フィンガープリンティングに利用されるヘッダーからサーバーやアプリケーションスタックに関する情報が明らかになると、攻撃者が標的型エクスプロイトを作成する手掛かりとなる可能性があります。
- リクエストの完了時に、APIが適切なステータスコードを返すようにします。 APIは、標準のステータスコードを使用してリクエストの結果を正確に伝える必要があります。これにより、明確性、一貫性、セキュアな動作の確保に役立ちます。ステータスコードには、200 OK、400 Bad Request、401 Unauthorized、405 Method Not Allowedなどがあります。
- APIが汎用的なエラーメッセージを返すようにします。詳細なエラーメッセージから、データベース構造、サーバー構成、認証ロジックなど、APIの内部動作が明らかになる可能性があります。攻撃者はこの情報を利用して、SQLインジェクション、権限昇格、認証情報へのブルートフォース攻撃など、標的を絞ったエクスプロイトを仕掛ける可能性があります。
3. APIセキュリティテスト
APIは動的で、頻繁に更新されたり新機能が追加されたりするため、APIセキュリティテストは初回導入時だけでなく、継続的に実施する必要があります。また、攻撃者が絶えず新たな手法を開発しているため、脅威の状況も変化し続けます。
APIセキュリティテストのチェックリストに含めるべき主な推奨事項は次のとおりです。
- 機能テストを実施する。 APIの中核機能が意図したとおりに動作し、新機能の導入後やパッチの適用後も安定性が維持されることを確認します。
- パフォーマンステストを実施します。APIの負荷テストを実施してパフォーマンスの限界を把握し、インシデント発生後の復旧に要する時間を確認します。
- 脆弱性スキャンとペネトレーションテストを実施する。 自動APIスキャナーを使用してソースコードをテストし、ランタイムエラーを検出します。また、定期的にペネトレーションテストを実施し、より高度な攻撃、新しい攻撃、または新種の攻撃に対するAPIの脆弱性を特定します。
4. 監視
APIの監視は、脅威のリアルタイム検知に役立つだけでなく、異常の特定に必要な「通常」のアクティビティのベースラインを構築できるため、極めて重要です。継続的に監視することで、セキュリティチームは、トラフィックの急増、ログイン失敗の繰り返し、エンドポイントの異常な使用など、攻撃の兆候であることが多い通常とは異なるパターンを迅速に発見できます。
API監視のチェックリストには、以下の項目を含める必要があります。
- 新しいAPIを継続的に監視して文書化するには、APIディスカバリツールを使用します。 存在を把握していないものを保護することはできません。開発者が正式な承認を得ずにAPIをデプロイまたはテストすると、追跡も文書化もされていないエンドポイント(「シャドーAPI」)が生じる可能性があります。こうしたエンドポイントはセキュリティチームに見落とされ、攻撃者に狙われやすくなります。継続的な検出により、公開されているすべてのAPIを確実にインベントリ化、評価、保護し、適切にガバナンスできます。
- すべてのAPIを一元管理するカタログを維持します。 APIエコシステム全体を一元的かつ体系的に把握することで、可視性が向上し、管理が効率化され、インシデント対応が迅速になり、APIの監視が容易になります。
- APIトラフィックを記録して分析する。DDoS攻撃の可能性を示す予期しないリクエスト量の急増を特定し、正規ユーザーには通常見られない地域からのリクエストを監視します。こうしたリクエストは、不正アクセスの試みを示す可能性があります。失敗したリクエストの急増は、クレデンシャルスタッフィングの活動、または設定に不備のあるクライアントが無効な入力でAPIに繰り返しアクセスしていることを示す可能性があります。
5. APIセキュリティ標準:OWASPとNIST
Open Worldwide Application Security Project(OWASP)とNational Institute of Standards and Technology(NIST)は、いずれもサイバーセキュリティのベストプラクティスを公開しています。
- OWASPはアプリケーションセキュリティに特化し、Webアプリケーションと大規模言語モデルに関する最も一般的なリスクのリストを公開しています。OWASP Top 10 API Security Risksは、安全なAPI設計とセキュリティテストに役立つ実践的なガイドです。
- NISTはサイバーセキュリティを幅広く対象とし、NIST Cybersecurity Framework (CSF)を公開しています。NIST CSFは、APIセキュリティをより広範な戦略と整合させるうえで役立ちます。このフレームワークは、特定、防御、検知、対応、復旧、ガバナンスという6つの柱で構成されています。
6. APIセキュリティツール
APIファーストのアプリケーション設計への移行とAPIの急増を背景に、包括的なWebアプリケーションおよびAPI保護(WAAP)ソリューションは、API資産を守るうえで最も強力な防御策となります。WAAPは包括的なセキュリティを提供し、Webアプリケーションファイアウォール(WAF)、APIの検出および保護サービス、DDoS攻撃の緩和、ボット管理を単一のソリューションに統合します。
WAAPの主なメリットは次のとおりです。
- オブザーバビリティの向上。ログ、メトリクス、リアルタイム分析を通じてWebアプリケーションとAPIのトラフィックを包括的に可視化することで、セキュリティチームは異常を特定し、問題をより迅速にトラブルシューティングできるほか、ユーザーアクティビティや新たな脅威パターンに関する実用的なインサイトを得られます。
- 統合された包括的な保護WAAPは、堅牢なAPI検出および可視化機能と、APIの脅威を制御・ブロックするための重要な適用機能を組み合わせています。これには、許可リスト/拒否リスト、レート制限、Geo-IPフィルタリングのための個別制御に加え、カスタムルールの生成も含まれます。さらにWAAPは、レイヤー7 DoS、機密データを検出してマスキングするデータ損失防止(DLP)機能、ボット管理、WAFを単一のソリューションで提供します。この包括的なアプローチにより、APIの可視化と保護を両立し、適切なガバナンスと信頼性の高いAPIパフォーマンスを実現します。
- 一元化されたポリシー管理 WAAPは、アプリケーションのホスティング先や基盤アーキテクチャにかかわらず、すべてのWebアプリケーションとAPIのセキュリティポリシーを単一の管理ポイントから管理します。この一元的なアプローチにより、一貫したポリシー適用を実現し、設定ミスを最小限に抑え、多様な環境にわたるセキュリティ運用を簡素化します。
- 効率化されたポリシー管理と保守。WAAPソリューションは、アプリケーションとAPI全体でポリシーの実装と更新を自動化・最適化することで、進化する脅威やアプリケーションの挙動に対処するためのポリシーを、必要に応じてすべてのアプリケーションとAPIに適用、調整、適応しやすくします。これにより、手作業を削減し、新たなエクスプロイトへの対応を迅速化するとともに、システム全体で一貫した適用を実現します。
- 明確な監査証跡。アクセス、ポリシー変更、セキュリティイベントに関する詳細なログと監査証跡は、API、インフラストラクチャ、データなど、アプリケーションのあらゆる脅威ベクトルと構成要素にわたって、規制および業界標準への準拠を証明するために不可欠です。
F5のAPIセキュリティ
F5は、APIセキュリティをWeb Application and API Protection(WAAP)ソリューションの一部として提供しています。このソリューションは、複雑なハイブリッドおよびマルチクラウドのファブリック環境全体でAPIを保護し、複雑さを軽減しながら運用効率を向上させます。F5のWAAPソリューションは、構築およびテストの段階からリリース、運用、監視に至るまで、ライフサイクル全体を通じてAPIを保護するための包括的なアプローチを提供します。
F5のWAAPソリューションは、WebアプリとAPIを支える重要なビジネスロジックを継続的に防御することで、リスクを軽減し、デジタルレジリエンスを向上させます。APIを動的に検出し、継続的に監視して脅威を検知することで、あらゆるAPIを可視化するとともに、重要な制御および適用メカニズムによってAPIエンドポイントを保護します。F5のWAAPソリューションは、オンプレミス、クラウド、as-a-serviceなど、あらゆる環境に導入できます。
関連するブログ記事

F5 Application Study Tool:OpenTelemetryによるF5 BIG-IP環境の監視
F5の新しいオープンソースツールは、BIG-IP環境を詳細に可視化し、データを追跡するとともに、強力でカスタマイズ可能なインサイトを得るための基盤を提供します。
F5 BIG-IPでAI防御を実現
F5 BIG-IP Advanced WAF、BIG-IP APM、BIG-IP SSL Orchestratorが、生成AIアプリ向けに包括的なセキュリティソリューションを提供する仕組みをご覧ください。
F5 Advanced WAFによるGraphQL APIの保護
ここ数年、多くの組織がデジタルトランスフォーメーションを進めており、COVID-19のパンデミックによってその動きは加速しています。
アプリケーションサービスの現状 通信業界版:リーダーとしての台頭
通信ネットワークが進化し、さまざまな業界の幅広いユースケースに対応するなか、通信業界の回答者がテクノロジーリーダーとしての存在感を高めていることがわかります。
デジタルトランスフォーメーションは、単なるペーパーレス化ではない
デジタルトランスフォーメーションは、単なるペーパーレス化ではありません。真のモダナイゼーションにアプリケーションアーキテクチャとセキュリティの再構築が必要な理由を、F5ブログでご覧ください。
やめましょう。もう本当にやめましょう。HTTPSはHTTPより高速ではありません。
もうやめましょう。HTTPSはHTTPより高速ではありません。プロトコルのパフォーマンスに関する微妙な違いと、暗号化トラフィックを適切に最適化する方法については、F5ブログをご覧ください。
