APIセキュリティに不可欠なツールとベストプラクティスでAPI攻撃を防止

NGINX | 2023年7月18日

近年、APIの普及により、企業の事業運営のあり方は大きく変化しています。APIを利用すると、異なるアプリケーション間で通信やデータ交換が可能になり、ビジネスプロセスやソフトウェア開発の効率と効果を高めることができます。

しかし、APIの利用拡大に伴い、APIスプロールのリスクも高まります。APIスプロールとは、分散したチームやアーキテクチャ全体で、適切な監督や管理が行われないままAPIが作成、デプロイされる状況を指します。各APIが、攻撃者による機密データやシステムへの不正アクセスの侵入口となる可能性があるため、企業に新たなセキュリティリスクをもたらすおそれがあります。

APIファーストのソフトウェア開発の台頭

APIの無秩序な増加を招く主な要因の1つが、マイクロサービスの急増です。マイクロサービスアーキテクチャでは、大規模なアプリケーションを、APIを介して相互に通信する小規模な個別アプリケーションに分割します。これにより、複雑なアプリケーションを個々のチームが管理できる独立した単位に分け、トラフィック需要に応じてそれぞれを個別にスケーリングできます。

マイクロサービスは、柔軟性やスケーラビリティの向上など、開発者に多くのメリットをもたらします。ただし、こうしたメリットには、複雑さが増すなどのトレードオフも伴います。そのため、多くの企業が、マイクロサービスの構築にAPIファーストのアプローチを採用しています。この戦略では、アプリケーションやサービスの設計プロセスを、リクエストとレスポンスの形式に至るまでAPIの動作を定義したAPIコントラクトから開始します。

APIライフサイクル全体にセキュリティを統合

APIの急増に伴い拡大する攻撃対象領域

APIセキュリティを軽視すると、特に設計時やデプロイ時に、APIファーストのソフトウェア開発がもたらすメリットが容易に損なわれる可能性があります。端的に言えば、APIが増えるほど攻撃対象領域も拡大します。APIは現代のソフトウェア開発で重要な役割を果たす一方、悪用も容易になりつつあります。

2018年、Gartnerは予測しました2022年までに、APIがアプリケーションに対する最も一般的な攻撃経路になると。しかし、そこまで時間がかかるという予測は、むしろ楽観的すぎました。数百万人のユーザーに影響を及ぼす大手企業での注目度の高いAPI侵害は、当時すでに発生しており、その後さらに増加しています。

こうした攻撃の範囲の広さと多様性は、セキュリティおよびエンジニアリングの責任者が直面する課題を浮き彫りにしています。インターネットに誤って公開されたAPIを悪用する攻撃もあれば、コードリポジトリで誤って公開されたAPIキーやその他の認証手段を利用する攻撃もあります。また、VPNの脆弱性を悪用して内部環境に侵入し、内部APIを利用してデータを外部に持ち出す攻撃者もいます。

API攻撃の阻止には適切な戦略とツールが不可欠

APIの脅威から保護する最も一般的な方法は、従来のWebアプリケーションセキュリティ戦略と最新のAPIセキュリティ技術を組み合わせることです。今日の多様なAPI脅威に対しては、従来の戦略だけでは十分に対応できないことが少なくありません。自動API検出やAPIコントラストテストなどの最新技術は、こうしたギャップの解消を図ります。

企業にとって、シールドライト(グローバルな制御とセキュリティポリシーを実装し、デプロイ済みのアプリとAPIを保護する)と、シフトレフト(アプリとAPIが本番環境に移行する前に脆弱性を排除できるよう、コードにセキュリティを組み込む)の両方が不可欠です。どちらの戦略も単独では包括的なAPIセキュリティを実現できないため、侵害を防ぐ鍵となるのは、APIセキュリティ対策の3つのカテゴリーを網羅する包括的なアプローチです。

エンドツーエンドのAPIセキュリティ

適切な戦略とツールを組み合わせることで、組織はAPIを攻撃からより効果的に保護し、ソフトウェアシステムのセキュリティを確保できます。APIのライフサイクル全体を保護するために、プラットフォームエンジニアリングのリーダーが導入すべき重要な機能とツールを見ていきましょう。

APIセキュリティポスチャ管理とは

APIセキュリティポスチャ管理により、APIの数、種類、場所、APIによって公開されるデータを可視化できます。この情報は、各APIに関連するリスクを把握し、APIを保護するための適切な対策を講じるうえで役立ちます。

主な機能:

  • APIの自動検出 – 環境にデプロイされたAPIを包括的に可視化するため、APIを継続的に自動検出
  • APIの特性把握 – プロトコルまたはアーキテクチャ(REST、GraphQL、SOAPなど)に基づいてAPIを識別・分類し、機密データのフローをマッピングしてリスクへのエクスポージャーを把握
  • APIのカタログ化 – APIの完全なリストを維持することで、ソフトウェアチームによる既存APIの再利用を促進し、SecOpsチームがセキュリティ態勢の全体像を把握できるよう支援します

代表的なテクノロジー:

  • Web application and API protection(WAAP) – APIインフラストラクチャにおける優位なグローバルポジションを活用して、環境に出入りするトラフィックを分析し、APIを特定して、リスクエクスポージャーを可視化します
  • インラインまたはエージェントベースの検出 – 既存のAPIゲートウェイ、ロードバランサー、またはKubernetes Ingressコントローラーにエージェントを接続し、APIトラフィックをミラーリングして分析します
  • 帯域外またはエージェントレスの検出 – トラフィックミラーリング、またはエクスポートされたログとメトリクスを使用してAPIトラフィックを分析します。通常、他のテクノロジーと比べてAPIや脅威の可視性は低くなります
  • ドメインクローラー– APIセキュリティプロバイダーは、ドメインを調査し、セキュリティポリシーを適用できるAPIゲートウェイやロードバランサーをトラフィックが迂回する原因となっている、外部に公開されたAPIエンドポイントを検出するクローラーを提供している場合があります

次の点に留意することが重要です。アーキテクチャ内のすべてのAPIを確実に検出できるテクノロジーはありません。ほとんどの検出手法は、既存のロードバランサー、APIゲートウェイ、Ingressコントローラーによって得られる可視性に依存しているため、これらのアーキテクチャコンポーネントを迂回する設定ミスを検出できない可能性があります。

最終的には、コードレビューを実施し、APIファーストのベストプラクティスに従うことが、より効果的な長期的予防策となります。一方、自動API検出ツールも、セキュリティ態勢を迅速に把握し、管理も保護もされないままになる可能性のあるAPIを検出するうえで有用です。

APIセキュリティテストとは

APIセキュリティポスチャ管理が企業全体のセキュリティを対象とするのに対し、APIセキュリティテストは個々のAPIに重点を置きます。基本的には、APIの背後で稼働するアプリケーションであるAPIランタイムをテストすることで、脆弱性とそれに伴うリスクの特定および防止に役立ちます。また、認証、認可、レート制限、暗号化の条件など、基本的なセキュリティ要件が満たされていることを確認するのにも役立ちます。

主な機能:

  • APIコントラクトテスト – APIのOpenAPI Specificationに基づいてクライアントリクエストとサーバーレスポンスを比較し、設計どおりに動作しているかを検証します。「インサイドアウト」アプローチにより、APIのデプロイ前に脆弱性の有無を確認します。
  • 動的アプリケーションセキュリティテスト(DAST) – APIランタイムに対する攻撃をシミュレートして脆弱性を検出し、悪意のあるユーザーと同様にAPIを「外側から内側へ」評価します。

代表的なテクノロジー:

  • APIコントラクトテストソフトウェア – APIのリクエストとレスポンスを分割してテストを実行し、クライアントとサーバーの動作がAPIコントラクトに準拠していることを検証する専用ツール
  • アプリケーションセキュリティテスト(AST)ソフトウェア – 攻撃をシミュレートして、APIを含むアプリケーションを分析およびテストするツール

オープンソースのコントラクトテストツールに加え、APIセキュリティ専業ベンダーが提供する商用製品もあります。アプリケーションセキュリティテスト(AST)市場には数十年の歴史があり、API専用のスキャンおよびテストツールを提供するベンダーが増えています。

APIランタイム保護とは

APIランタイム保護とは、APIが動作し、リクエストを処理する際にAPIを保護することです。API自体のコードだけでなく、プラットフォームインフラストラクチャにもセキュリティを組み込むことを重視します。その目的は、デプロイ後に発生する悪意のあるAPIリクエストを特定し、防止することです。
主な機能:

  • アクセス制御 – 認証(authN)および認可(authZ)ポリシーを適用
  • Network security – ネットワーク全体の通信を暗号化して保護
  • アプリケーション保護 – 悪意のあるAPIリクエストや攻撃からAPIランタイムを保護
  • リアルタイム監視 – APIインフラストラクチャ全体にわたる攻撃を可視化、追跡、緩和

代表的なテクノロジー:

  • APIゲートウェイ – 認証、認可、レート制限、アクセス制御リスト、暗号化などのセキュリティポリシーを適用し、強制します
  • Webアプリケーションファイアウォール (WAF) – 攻撃シグネチャに基づいてトラフィックを能動的に監視およびフィルタリングし、高度なレイヤー7攻撃からAPIとアプリケーションを保護します
  • IDプロバイダー (IdP) – ユーザーIDを保存および検証し、通常はシングルサインオン(SSO)プロバイダーと連携してユーザーを認証するサービス

APIゲートウェイやWAF/WAAPは、どれも同等というわけではありません。サービスによっては、特にクラウドなどのプラットフォームで提供されるネイティブソリューションの場合、マルチクラウドおよびハイブリッドアーキテクチャに必要なグローバルな可視性と標準化が不足しています。

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

APIのセキュリティ確保は重要であるため、体系的に取り組むことが不可欠です。プラットフォームエンジニアリングとセキュリティの責任者は連携し、APIライフサイクル全体のセキュリティ要件に対応する必要があります。前述のとおり、これはおおむね、APIセキュリティポスチャ管理、APIセキュリティテスト、APIランタイム保護という3つの主要な実践領域に対応します。つまり、保有するAPIの数を把握すること、APIのエラーをテストする方法を確立すること、コードにセキュリティを組み込むことに注力する必要があります。

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

まとめ

あらゆるサイバーセキュリティ対策と同様に、APIセキュリティも継続的なプロセスであり、ネットワークエンジニア、セキュリティ運用責任者、プラットフォームエンジニアリング責任者、ソフトウェア開発エンジニアなど、多くの関係者との連携が必要です。幸い、APIを保護する方法は決して難解ではありません。

ほとんどの組織では、クロスサイトスクリプティング、インジェクション、分散型サービス拒否攻撃など、APIを標的とする既知の攻撃への対策をすでに講じています。また、経験豊富なセキュリティ担当者であれば、前述したベストプラクティスの多くはよくご存じでしょう。運用するAPIの数にかかわらず、強固なAPIセキュリティポリシーを確立し、継続的かつプロアクティブに管理することが重要です。

NGINX API Connectivity Stackの30日間無料トライアルを開始する。このスタックには、APIの管理、ガバナンス、セキュリティ確保を行うF5 NGINX Management Suite API Connectivity Manager、APIゲートウェイとしてのF5 NGINX Plus、高度なAPIセキュリティを実現するF5 NGINX App Protect WAFおよびDoSが含まれます。

関連リソース


共有

関連するブログ記事

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
NGINX | 2024/01/18

チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する

OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
NGINX | 2023/05/31

AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正

Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
NGINX | 2023/02/09

JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法

Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINX | 2022/05/24

F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング

NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
NGINX | 2018/08/17

SELinuxでNGINXおよびNGINX Plusを使用する

Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。

NGINX PlusによるAWS Auto Scalingグループの負荷分散
NGINX | 2017/03/06

NGINX PlusによるAWS Auto Scalingグループの負荷分散

新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります