F5 NGINX App Protect WAFでGraphQLおよびgRPC双方向ストリーミングAPIを保護

NGINX | 2023年4月27日

COVID-19のパンデミック以降、デジタル経済は拡大を続けており、組織の90%がモダンアプリのアーキテクチャを拡張しています。F5の「2023年版アプリケーション戦略の現状レポート」によると、調査対象となった世界のIT意思決定者1,000人のうち、40%以上が自社のアプリポートフォリオを「モダン」と回答しています。この割合はここ数年着実に増加しており、2025年までに50%を超えると予測されています。しかし、モダンアプリの増加とマイクロサービスの利用拡大に伴い、APIとAPIエンドポイントも急増しています。その結果、脆弱性が生じる可能性と攻撃対象領域が飛躍的に拡大しています。

F5 Office of the CTOのレポート「Continuous API Sprawl」によると、2021年には世界中に約2億のAPIが存在し、2030年までに20億近くに達すると予測されています。APIの急増による複雑さに加え、ハイブリッド環境やマルチクラウド環境に分散したアプリケーションの管理も課題となっています。「2023 State of Application Strategy Report」の回答者は、マルチクラウド環境にアプリケーションを展開する際の最大の課題として、複数のツールとAPIを管理する複雑さを挙げています。一貫したセキュリティポリシーの適用とアプリケーションパフォーマンスの最適化が僅差で同率2位となりました。

図1:マルチクラウド環境へのアプリ導入における主な課題(出典:2023 State of Application Strategy Report)

APIセキュリティが収益に不可欠な理由

APIは、最新のアプリケーションを構成する要素であるだけでなく、デジタルビジネスの中核でもあります。F5の2023年版レポートの調査対象組織の58%が、収益の少なくとも半分をデジタルサービスから得ていると回答しています。APIはユーザーとアプリ間、およびアプリ間の通信を可能にします。一方で、顧客の非公開データや社内情報へのアクセスを提供するため、攻撃者にとって格好の標的となります。2022年には、APIが攻撃経路として多用されました。

アプリケーションセキュリティ戦略全体において、APIの保護は極めて重要です。攻撃は、消費者のプライバシー侵害(それ自体が深刻な問題です)にとどまらず、公共の安全を脅かしたり、知的財産の損失を招いたりするなど、さらに深刻で壊滅的な結果をもたらす可能性があります。以下では、2022年に発生した、こうした各種API攻撃の事例を紹介します。

  • 消費者のプライバシー — Twitterは数年にわたるAPI攻撃を受けました。2022年12月、ハッカーは2億人のTwitterユーザーのプロフィールデータとメールアドレスを盗みました。その4か月前には、CloudSEKの研究者が、有効なTwitter APIキーとシークレットを漏えいしている3,207個のモバイルアプリケーションを発見しました。さらにその1か月前には、ハッカーがAPIの脆弱性を悪用し、540万人のユーザーのデータを取得して販売していました。
  • 公共の安全 – ある研究チームが、Toyota、Mercedes、BMWを含む大手自動車メーカー約20社で、重大なAPIセキュリティ脆弱性を発見しました。現在、多くの自動車がスマートデバイスのように機能しているため、ハッカーはVINや所有者の個人情報を盗むだけでなく、車両の位置を追跡したり、リモート管理システムを制御したりできます。これにより、車両のロックを解除してエンジンを始動したり、車両を完全に動作不能にしたりすることが可能になります。
  • 知的財産 – 標的となった従業員が、CircleCI(世界中の100万人を超える開発者がコードのリリースに利用しているCI/CDプラットフォーム)で、マルウェア攻撃の被害に遭いました。この従業員には本番環境へのアクセストークンを生成する権限があったため、攻撃者は顧客のAPIキーとシークレットを窃取できました。この侵害は3週間近く検知されませんでした。顧客のシークレットが窃取され、第三者のシステムへの不正アクセスに使用されたかどうかを確認できなかったため、CircleCIは顧客に対し、プロジェクトおよび個人用のAPIトークンをローテーションするよう案内することしかできませんでした。

これらのAPI攻撃は、教訓とすべき事例です。APIにセキュリティ上の脆弱性があり、保護されないまま放置されると、長期的な影響は金銭的損失だけにとどまりません。APIセキュリティは極めて重要です。

F5 NGINXがAPIのセキュリティ確保を支援する仕組み

The NGINX API Connectivity Stackソリューションは、マルチクラウド環境全体でAPIゲートウェイとAPIを管理するのに役立ちます。APIゲートウェイとしてのNGINX PlusをNGINX App Protect WAFとともに導入することで、前のセクションで説明したAPI攻撃に加え、F5の『2023 State of Application Strategy Report』で特定されたAPIに関する3つの主要課題(マルチクラウド環境全体にわたるAPIの複雑性の管理、セキュリティポリシーの確保、アプリケーションパフォーマンスの最適化)に対処し、一般的なAPIエクスプロイトの防止と緩和に役立ちます。NGINX Plusは、さまざまな方法で使用できます。たとえば、APIゲートウェイとして使用すれば、APIリクエストを迅速にルーティングし、APIクライアントを認証および認可してAPIを保護できるほか、トラフィックをレート制限してAPIベースのサービスを過負荷から保護できます。

NGINX Plusは、標準機能としてOWASP API Security Top 10の脆弱性に対する保護を提供するだけではありません。不正な形式のCookie、JSON、XMLをチェックし、許可されたファイルタイプとレスポンスステータスコードを検証するほか、攻撃を隠蔽するために使用される回避手法も検出します。NGINX Plus APIゲートウェイは、REST、GraphQL、gRPCなど、HTTPまたはHTTP/2を使用するAPIプロトコルを保護します。

NGINX App Protect WAFは、OWASP API Security Top 10およびOWASP(Application)Top 10に対する基本的な保護にとどまらず、7,500を超える高度なシグネチャ、ボットシグネチャ、脅威キャンペーンから保護する、軽量で高性能なアプリケーションおよびAPIセキュリティを提供します。また、シフトレフト戦略を実現し、APIセキュリティを容易に自動化できるため、Security as CodeをCI/CDパイプラインに統合できます。AWS、Azure、Cloudflareの各WAFとの比較テストでは、NGINX App Protect WAFは、より優れたパフォーマンスと低いレイテンシを維持しながら、堅牢なアプリケーションおよびAPIセキュリティを提供することが確認されました。詳しくは、こちらのGigaOmレポートをご覧ください。

NGINX App Protect WAFはNGINX Plus APIゲートウェイに組み込まれているため、APIトラフィックのホップ数を1つ削減できます。レイヤー間のホップ数が減ることで、レイテンシ、複雑さ、障害点も低減します。これは、WAFと統合されていない一般的なAPI管理ソリューションとは大きく異なります(WAFを別途導入する必要があり、セットアップ後もAPIトラフィックはWAFとAPIゲートウェイを個別に通過しなければなりません)。NGINXの緊密な統合により、セキュリティを損なうことなく高いパフォーマンスを実現します。

GraphQLとgRPCの普及が加速

アプリとAPIの開発者は、柔軟性、速度、使いやすさ、導入のしやすさを向上させる新たな方法を常に模索しています。Postmanの「2022 State of the API Report」によると、現在もRESTが最も広く利用されているAPIプロトコル(89%)ですが、GraphQL(28%)とgRPC(11%)も引き続き普及が進んでいます。最終的に、APIプロトコルの選択は、アプリケーションの目的とビジネスに最適なソリューションによって大きく異なります。各プロトコルには、それぞれ固有のメリットがあります。

GraphQL APIを使用する理由

GraphQL APIを使用する主なメリットは次のとおりです。

  • 適応性 – クライアントが、リクエストするデータ、その型、形式を決定します。
  • 効率性 – 過剰なデータ取得は発生せず、リクエストは作成済みのスキーマに対して実行され、要求されたデータだけが正確に返されます。リクエストとレスポンスのデータ形式が同一であるため、GraphQL APIは高速で予測可能となり、容易にスケールできます。
  • 柔軟性 – 12を超える言語とプラットフォームをサポートします。

GitHubは、GraphQLの著名なユーザーの1つです。スケーラビリティと柔軟性を理由に、2016年にGraphQLへ移行しました。

gRPC APIを使用する理由

gRPC APIを使用する主なメリットは次のとおりです。

  • パフォーマンス– 軽量でコンパクトなデータ形式により、リソース要件を最小限に抑え、メッセージを高速にエンコードおよびデコードできます
  • 効率性 – protobufsデータ形式は、構造化データをシリアル化することで通信を効率化します
  • 信頼性 – HTTP/2とTLS/SSLが必須であるため、デフォルトでセキュリティが向上します

処理能力の大部分はクライアント側で提供される一方、管理と計算処理は、リソースをホストするリモートサーバーにオフロードされます。gRPCは、マイクロサービス間の通信や、リクエスト元(IoTデバイスなど)が限られたリソースを節約する必要があるデータ収集など、一定量のデータや処理を日常的に必要とするユースケースに適しています。

Netflixは、gRPC APIの著名なユーザーの一例です。

NGINX App Protect WAFでGraphQL APIを保護

NGINX App Protect WAFは、GraphQL APIにも対応しました。REST APIとgRPC APIに加え、GraphQL APIに攻撃シグネチャを適用して悪意のあるエクスプロイトを排除し、攻撃から保護します。GraphQLトラフィックをネイティブに解析するため、NGINX App Protect WAFはGraphQLの構文とプロファイルに基づいて違反を検出し、攻撃シグネチャを適用できます。イントロスペクションクエリを可視化することで、NGINX App Protect WAFはこれらのクエリに加え、レスポンス内で検出されたパターンもブロックできます。この方法により、攻撃を検出し、ペイロード内の適切なセグメントでシグネチャを実行できるため、誤検知の削減に役立ちます。

このデモでは、NGINX App Protect WAFがGraphQL APIを攻撃から保護する方法をご紹介します。

 

NGINX App Protect WAFによるGraphQL APIセキュリティのメリット:

  • セキュリティパラメーターを定義– アプリセキュリティポリシーの一環として、組織のポリシーに従い、GraphQLテンプレートおよびコンテンツプロファイル内のパラメーターの合計長と値を設定します
  • 誤検知を削減 – 詳細な制御によりGraphQLリクエスト内の攻撃検知を強化し、攻撃防止の精度を向上
  • 悪意のあるエクスプロイトを抑制 – 1件のHTTPリクエストでバッチ処理できるクエリ数の上限を設定し、悪意のあるエクスプロイトや攻撃のリスクを軽減します
  • DoS攻撃を排除 – コンテンツプロファイルで構造の最大深度を設定し、再帰クエリによるDoS攻撃を阻止
  • APIのリスク露出を抑制 – 侵害につながるおそれのあるAPI構造を攻撃者に把握されないよう、イントロスペクションクエリに制約を適用します

NGINX App Protect WAFでgRPC双方向ストリーミングAPIを保護

NGINX App Protect WAFは、単項メッセージタイプに加えて、gRPC双方向ストリーミングを新たにサポートしました。これにより、メッセージストリーム(クライアント、サーバー、またはその両方)を使用するgRPCベースのAPIを保護できます。通信タイプを問わず、gRPC APIを包括的に保護します。

NGINX App Protect WAFは、スキーマの適用、サイズ制限の設定、不明なファイルのブロック、リソース枯渇型DoS攻撃の防止により、gRPC APIを保護します。Interface Definition Language(IDL)ファイルをNGINX App Protect WAFにインポートすると、gRPCメッセージの構造とスキーマを適用し、適切な箇所で攻撃をスキャンできます。これにより、gRPCを介してアプリケーションを悪用しようとする試みを正確に検出できるほか、コンテキストを考慮せず不適切な箇所でセキュリティスキャンを行うことで発生し得る誤検知を回避できます。

このデモでは、NGINX App Protect WAFを使用してgRPC双方向APIを攻撃から保護する方法をご紹介します。

 

NGINX App Protect WAFによるgRPC APIセキュリティのメリット:

  • 包括的なgRPC保護 – 単項RPCから双方向ストリーミングまで、通信タイプを問わず包括的に保護
  • 誤検知を削減 – gRPCメッセージの構造とスキーマを適用することで精度を向上し、gRPCリクエストに対する攻撃をより的確に検知
  • 悪意のあるエクスプロイトをブロック – gRPCメッセージ内の各フィールドが正しい型と想定される内容であることを強制し、不明なフィールドをブロック可能
  • DoS攻撃を排除 – リソース枯渇型のDoS攻撃を防ぐためのメッセージサイズ制限

SecOpsチームとAPI開発チームの双方がAPIセキュリティを管理・自動化

Postmanの「2022 State of the API Report」によると、調査対象となった37,000人の開発者およびAPI担当者のうち20%が、所属組織でAPIインシデントが少なくとも月に1回発生し、データやサービスの喪失、不正利用、不適切なアクセスにつながっていると回答しました。一方、API攻撃を受ける頻度が年1回未満だった回答者は52%でした。この結果は、APIセキュリティのシフトレフト戦略の一環として、開発の早期段階からセキュリティを組み込むことの重要性を示しています。APIはアプリケーションよりも頻繁に公開されるため、APIセキュリティにもシフトレフト戦略を適用する動きが広がっています。組織がシフトレフトの文化を取り入れ、Security as CodeをCI/CDパイプラインに統合することで、API開発の各段階にセキュリティを組み込みながら、開発者のアジリティを維持し、デプロイを迅速化できます。

NGINX App Protect WAF、Jenkins、Ansibleを使用し、セキュリティをコードとして実装してシフトレフトする方法を示す図
図2:NGINX App Protect WAFにより、APIセキュリティをCI/CDパイプラインに統合し、APIライフサイクル全体にわたる保護を自動化できます。

APIに特化した保護が必要となる重要な領域の1つが、gRPC IDLファイルやGraphQLクエリを含むAPIスキーマの検証です。スキーマはAPIごとに固有であり、APIのバージョンごとに変更されます。APIスキーマを自動化する場合、APIを更新するたびに、そのファイル内の設定とコードも更新する必要があります。WAF設定は、APIのバージョン変更に対応できるよう自動的にデプロイできます。NGINX App Protect WAFはスキーマを検証し、リクエストがAPIでサポートされている仕様(メソッド、エンドポイント、パラメーターなど)に準拠していることを確認できます。NGINX App Protect WAFでは、SecOpsチームが作成できる宣言型ポリシーによって一貫したアプリセキュリティを実現し、API開発チームがAPIセキュリティを管理およびデプロイできるため、よりきめ細かな制御と俊敏性が得られます。ハイブリッド環境やマルチクラウド環境全体でAPIセキュリティを大規模に自動化する際に、NGINX App Protect WAFが役立ちます。

まとめ

最新のアプリポートフォリオは拡大を続けており、マイクロサービスの利用に伴ってAPIはさらに急増しています。APIセキュリティは複雑で対応が難しく、特にハイブリッド環境やマルチクラウド環境を運用する組織にとって大きな課題です。APIセキュリティの欠如は、金銭的損失にとどまらず、長期にわたって深刻な影響を及ぼす可能性があります。NGINX App Protect WAFは、REST、GraphQL、gRPC APIの保護を含む包括的なAPIセキュリティを提供します。また、SecOpsチームとAPIチームによるセキュリティのシフトレフトを支援し、APIライフサイクル全体および分散環境全体でセキュリティを自動化できるようにします。

30日間の無料トライアルで、NGINX App Protect WAFを今すぐお試しください。

関連リソース

ブログ:NGINX App Protect WAFでAPIゲートウェイを保護
eBook:最新のアプリとAPIのセキュリティ
eBook:O’Reillyで学ぶAPIアーキテクチャの極意
データシート:NGINX App Protect WAF


共有

著者について

Thelen Blum
Thelen Blumシニアプロダクトマーケティングマネージャー、NGINX App Protect | F5

Thelen Blumのその他のブログ記事

関連するブログ記事

チュートリアル: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グループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります