エッジ WAF の仕組み
- English
- 日本語
エッジ WAF は、Fastly の Edge Cloud Platform 上で、当社のグローバルな POP ネットワークを通じて Next-Gen WAF をホストし、キャッシュレイヤーと統合します。セキュリティ処理はエッジで行われるため、エッジ WAFはオリジンインフラストラクチャに入る前にすべてのトラフィックを検査し、攻撃が発生した場所の近くでブロックできます。エッジ WAF は数ミリ秒以内にリクエストを処理できます。
南北トラフィック
エッジ WAF のデプロイでは、エッジ WAF を含む Fastly プラットフォームがクライアントとオリジンの間に位置します。ネットワークの境界に位置するエッジ WAF は、受信リクエストやレスポンスヘッダー、ステータスコードを分析することで、Web アプリケーションを検査して南北のトラフィックから保護します。このように、エッジ WAF は家の周りのフェンスのように機能し、望まない訪問者が侵入しようと近づく前に遠ざけます。
エッジ WAF のデプロイは内部ネットワーク内に存在できないため、ネットワーク内を移動するトラフィック (東西トラフィックとも呼ばれます) を検査することはできません。南北と東西の両方のトラフィックを検査するには、エッジ WAF デプロイとオンプレミス WAF デプロイを組み合わせます。内部ネットワーク内にオンプレミス WAF デプロイをインストールし、東西トラフィックを検査するように設定できます。
リクエストフロー
ウェブクライアントがエッジ WAF デプロイで保護されている Web アプリケーションにリクエストを行うと、そのリクエストはまず CDN または Compute サービスに送信されます。サービスは要求されたレスポンスオブジェクトがキャッシュされているかどうかをチェックします。もしオブジェクトがキャッシュにある場合、リクエストの検査はスキップされ、サービスはキャッシュされたオブジェクトで応答します。キャッシュされたオブジェクトはオリジンから取得されたときにすでに検査されているため、リクエストの検査はスキップされます。
オブジェクトがキャッシュにない場合、Fastly はエッジ WAF のインスタンスを作成してリクエストを検査します。各エッジ WAF インスタンス (エッジセキュリティサービスとも呼ばれます) は、1つのリクエストの WAF 機能を処理する一時的な Compute サービス です。複数のリクエストを処理することはありません。
エッジ WAF インスタンスが作成されると、クラウドエンジンはエッジ WAF に WAF の設定 (ルールなど) と固有のデータ (フラグが設定された IP アドレスのリストなど) を送信します。エッジ WAF はこの情報を使用して、リクエストに対して何をすべきか (許可またはブロックなど) を決定し、リクエストに適切なリクエストシグナルをタグ付けします。
リクエストに悪意があると思われる場合、エッジ WAF はリクエストがオリジンにアクセスするのをブロックし、サイト(ワークスペース) に設定されたブロッキングレスポンスコード を使って応答を生成し、その応答をサービスに送信します。サービスは、リクエストを開始したウェブクライアントに応答を転送します。
リクエストが正当であれば、エッジ WAF はリクエストをオリジンに転送します。オリジンはレスポンスを生成し、そのレスポンスをエッジ WAF に送信します。エッジ WAF はその他の WAF 機能を実行し、その後レスポンスをサービスへ転送します。サービスは、設定した最終アクションをすべて実行し、リクエストを開始した Web クライアントにレスポンスを送ります。
リクエストが完全に処理されるとすぐに、エッジ WAF はリクエストとレスポンスデータをクラウドエンジンに送信します。最後に、エッジ WAF インスタンスがシャットダウンし、完全に終了します。
しきい値のカウント
エッジ WAF デプロイでは、ローカルおよびグローバルのカウントメカニズムを使用して、クライアントごとのシグナル数を追跡し、クライアントがしきい値設定 (攻撃しきい値、サイトアラート (シグナルしきい値)、または Advanced Rate Limiting ルール) を超えたかどうかを判断します。
Fastly の配信拠点 (POP) レベルで、ローカルカウントメカニズムは、しきい値設定で定義された間隔中の60秒の時間枠でシグナルを追跡します。各時間枠の合計信号カウントは、間隔の期間中、次の時間枠に加算されます。最後に完了した時間枠からのカウントが、クライアントの合計シグナルカウントがしきい値設定によって定義された制限を超えた場合、そのクライアントからのそれ以降のリクエストは、違反した設定の指示に従って処理されます。ローカルのカウントメカニズムは、1つの POP 内の複数のキャッシュノードに分散されているため、同期に若干時間がかかる場合があります。
当社のクラウドエンジンにあるグローバルカウント機構は、当社の POP ネットワーク全体からの信号カウントを集約します。クラウドエンジンは、集計されたカウントをエッジ WAF デプロイに転送します。これには約1~2分かかります。
ヘルスチェック
エッジ WAF には、エッジ WAF の健全性を監視するヘルスチェック機能が含まれています。エッジ WAF が正常でない場合、リクエストは検査されずにオリジンに送信されます。ヘルスチェックはオリジンの状態を監視しません。
ヘルスチェックは、15秒ごとに定期的なプローブを送信し、予期されるレスポンスとしてHTTP ステータスコード 200 を確認します。チェックの結果、エッジ WAF が異常であることが判明した場合、エッジ WAF が再び正常になるまで、すべてのセキュリティ処理はスキップされます。すべてのセキュリティ処理がスキップされるまでに最大60秒かかる場合があります。
エッジ WAF は、バックエンドタイプを使用してオリジンとしてモデル化されます。ヘルスチェックは edge_security 関数内に存在し、backend.health プロパティを使用してエッジ WAF のステータスをチェックします。
メンテナンス
Fastly は、すべてのエッジ WAF のデプロイを管理しています。これには、検知エンジンの定期的な更新 (SQL インジェクション検知の改善など)、仮想パッチのリリース、共通脆弱性識別子 (CVE) に対応し、変動するトラフィック量に対応するための WAF の拡張などが含まれます。
Fastly コンソールを使用してエッジ WAFを有効にした場合は、実行する必要のあるメンテナンスタスクはありません。Next-Gen WAF APIを使用してエッジ WAFを有効にした場合、次のようなメンテナンスタスクが必要になることがあります:
Fastly が新しい Next-Gen WAF 機能をリリースしたときに、デプロイの VCL バージョンを更新します。
ダイナミックバックエンドが有効になっていなくて、Fastly コンソールでオリジンを変更した場合は、オリジンを同期させてください。
データの整合性とセキュリティ
エッジ WAF デプロイからのトラフィックは決して混在しません。Fastly は検査が必要なリクエストごとに一時的なエッジ WAF インスタンスを作成するため、各リクエストは個別に処理されます。たとえば、A 社と B 社の両方にエッジ WAF がデプロイされていて、A 社の Web アプリケーションにリクエストを行った場合、そのリクエストが別のリクエストと接触することはないため、B 社の Web アプリケーションから誤ってレスポンスが返されることはありません。
リクエストの分離は、悪意のある攻撃者から Web アプリケーションを保護します。万が一、ハッカーがエッジ WAF インスタンスにアクセスしてバックドアを残した場合、ハッカーはそのエッジ WAF インスタンスに割り当てられた単一のリクエスト以外はデータにアクセスしたり操作したりできなくなります。エッジ WAF インスタンスはリクエストが処理されると永続的に終了するため、ハッカーは作成したバックドアを使用して他のものにアクセスすることはできません。