コンテンツにスキップ

API Discoveryの概要

WallarmプラットフォームのAPI Discoveryモジュールは、実際のAPI利用状況に基づいてアプリケーションのREST APIインベントリを構築します。モジュールは実トラフィックのリクエストを継続的に分析し、その結果に基づいてAPIインベントリを作成します。

APIインベントリには以下の要素が含まれます:

  • APIエンドポイント

  • リクエストメソッド(GET、POSTなど)

  • リクエストおよびレスポンスの必須/任意のGET、POST、ヘッダーの各パラメータ。以下を含みます:

    • 各パラメータで送られるデータの型/フォーマット
    • パラメータ情報が最後に更新された日時

レスポンスパラメータの可用性

レスポンスパラメータはノード4.10.1以上を使用している場合にのみ利用できます。

API Discoveryで解決する課題

「実態に即した完全なAPIインベントリの構築」が、API Discoveryモジュールが取り組む主な課題です。

APIインベントリを最新に保つことは難しい作業です。複数のチームが異なるAPIを使用しており、APIドキュメントを作成するために異なるツールやプロセスが用いられることは一般的です。その結果、企業は自社がどのAPIを保有し、どのデータを公開しているのか、そしてAPIドキュメントが最新であるかの把握に苦労します。

API Discoveryモジュールは実トラフィックをデータソースとして使用するため、実際にリクエストを処理しているすべてのエンドポイントをAPIインベントリに含めることで、最新かつ完全なAPIドキュメントの取得に役立ちます。

WallarmによってAPIインベントリが把握されると、次のことが可能です:

  • 外部と内部のAPI一覧を含む、APIエステート全体を可視化できます。

  • APIにどのようなデータが出入りしているかを確認できます。

  • 未解決の脆弱性があるエンドポイントの一覧を取得できます。

  • 任意のAPIエンドポイントごとに、過去7日間に発生した脅威の一覧を取得できます。

  • 攻撃されたAPIのみをフィルタリングし、Hitsの数で並べ替えできます。

  • 機密データを扱うAPIをフィルタリングできます。

  • APIインベントリの構造と問題点を、使いやすいdashboardで可視化されたサマリーとして確認できます。

  • どのエンドポイントが攻撃対象になりやすいかを把握できます。

  • シャドーAPI、オーファンAPI、ゾンビAPIを発見できます。

  • 選択した期間内にAPIで発生したTrack changesを確認できます。

  • BOLA auto protection stateでAPIエンドポイントをフィルタリングできます。

  • 開発者に、作成されたAPIインベントリの閲覧とダウンロードのためのアクセスを付与できます。

API Discoveryはどのように動作しますか?

API Discoveryはリクエスト統計に依拠し、実際のAPI利用に基づいた最新のAPI仕様を生成するために高度なアルゴリズムを使用します。

トラフィック処理

API DiscoveryはローカルとCloudの双方で分析を実施するハイブリッドアプローチを採用します。このアプローチにより、統計分析にはCloudの処理能力を活用しつつ、リクエストデータや機密データはローカルに保持するプライバシー最優先のプロセスが実現します:

  1. API Discoveryは正当なトラフィックをローカルで分析します。Wallarmは、リクエストが送られるエンドポイントや、どのパラメータが渡され、どのパラメータが返されるかを分析します。

  2. このデータに基づいて統計を作成し、Cloudに送信します。

  3. Wallarm Cloudは受信した統計を集約し、それに基づいてAPIの説明を構築します。

    ノイズ検出

    まれなリクエストや単発のリクエストはノイズとして判定され、APIインベントリには含まれません。

ノイズ検出

API Discoveryモジュールは、次の2つの主要なトラフィック特性に基づいてノイズを検出します:

  • エンドポイントの安定性 - 最初のリクエストから5分以内に、少なくとも5件のリクエストが記録される必要があります。

  • パラメータの安定性 - 当該エンドポイントへのリクエストにおけるそのパラメータの出現率が1パーセントを超えている必要があります。

これらの閾値を満たしたエンドポイントとパラメータのみがAPIインベントリに表示されます。完全なAPIインベントリの構築に要する時間は、トラフィックの多様性と量に依存します。

また、API Discoveryは次の基準に基づいてリクエストをフィルタリングします:

  • サーバーが2xxの範囲で応答したリクエストのみを処理します。

  • REST APIの設計原則に適合しないリクエストは処理しません。

    これはレスポンスのContent-Typeヘッダーを確認することで行います。ヘッダーにapplication/json(例: Content-Type: application/json;charset=utf-8)が含まれていない場合、そのリクエストは非REST APIと見なされ、分析しません。

    ヘッダーが存在しない場合は、API Discoveryはリクエストを分析します。

  • Acceptなどの標準的なフィールドは除外します。

  • localhostやループバックアドレスを対象とするリクエストは処理しません。

機密データの検出

API Discoveryは、APIが扱う機密データを検出してハイライト表示します:

  • IPアドレスやMACアドレスなどの技術的データ

  • シークレットキーやパスワードなどの認証情報

  • クレジットカード番号などの金融データ

  • 医療免許番号などの医療関連データ

  • 氏名、パスポート番号、社会保障番号(SSN)などの個人を特定できる情報(PII)

API Discoveryは検出プロセスの調整や独自の機密データパターンの追加が可能です(NGINX Node 5.0.3またはNative Node 0.7.0以上が必要です)。

センシティブなビジネスフロー

センシティブなビジネスフロー機能により、API Discoveryは認証、アカウント管理、課金などの重要なビジネスフローや機能に不可欠なエンドポイントを自動的に特定できます。

自動識別に加えて、割り当てられたセンシティブなビジネスフロータグを手動で調整したり、任意のエンドポイントにタグを手動で設定したりできます。

エンドポイントにセンシティブなビジネスフロータグが割り当てられると、特定のビジネスフローで検出済みのエンドポイントをフィルタリングできるようになり、最重要のビジネス機能を保護しやすくなります。

API Discovery - センシティブなビジネスフローによるフィルタリング

Wallarm Cloudにアップロードされるデータのセキュリティ

API Discoveryはほとんどのトラフィックをローカルで分析します。モジュールがWallarm Cloudに送信するのは、検出されたエンドポイント、パラメータ名、および各種の統計データ(到着時刻、件数など)のみです。すべてのデータは安全なチャネルで送信されます。統計をWallarm Cloudにアップロードする前に、API DiscoveryモジュールはSHA-256アルゴリズムを使用してリクエストパラメータの値をハッシュ化します。

クラウド側では、ハッシュ化されたデータは統計分析(例えば、同一パラメータのリクエスト件数の集計など)に使用されます。

その他のデータ(エンドポイントの値、リクエストメソッド、パラメータ名)はWallarm Cloudにアップロードする前にハッシュ化しません。ハッシュは元の値に復元できないため、ハッシュ化するとAPIインベントリの構築が不可能になるためです。

重要

Wallarmは、パラメータに指定された値そのものをCloudに送信しません。送信するのはエンドポイント、パラメータ名、およびそれらに関する統計のみです。

API Discoveryのデモ動画

API Discoveryのデモ動画をご覧ください:

PlaygroundでAPI Discoveryを試す

サインアップやノードのデプロイ前にモジュールを試したい場合は、Wallarm PlaygroundのAPI Discoveryを探索してください。

Playgroundでは、実データで満たされたかのようにAPI Discoveryのviewにアクセスでき、モジュールの動作を学んで試すことができ、読み取り専用モードで有用な使用例も確認できます。

API Discovery – サンプルデータ

API Discoveryの有効化と設定

API Discoveryを使い始めるには、API Discoveryのセットアップに従って有効化と設定を行ってください。