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の処理能力を活用しつつ、リクエストデータや機密データはローカルに保持するプライバシー最優先のプロセスが実現します:
-
API Discoveryは正当なトラフィックをローカルで分析します。Wallarmは、リクエストが送られるエンドポイントや、どのパラメータが渡され、どのパラメータが返されるかを分析します。
-
このデータに基づいて統計を作成し、Cloudに送信します。
-
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は認証、アカウント管理、課金などの重要なビジネスフローや機能に不可欠なエンドポイントを自動的に特定できます。
自動識別に加えて、割り当てられたセンシティブなビジネスフロータグを手動で調整したり、任意のエンドポイントにタグを手動で設定したりできます。
エンドポイントにセンシティブなビジネスフロータグが割り当てられると、特定のビジネスフローで検出済みのエンドポイントをフィルタリングできるようになり、最重要のビジネス機能を保護しやすくなります。
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のセットアップに従って有効化と設定を行ってください。