Cloud Armor の高度なレート制限機能で DDoS 攻撃に対するレジリエンスを高める方法
Google Cloud Japan Team
※この投稿は米国時間 2024 年 3 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。
近年、分散型サービス拒否(DDoS)攻撃の数、量、複雑さが急激に増加しています。2023 年 9 月には、これまでで最大の DDoS 攻撃が発生し、ピーク時には 1 秒あたり 3 億 9800 万リクエストを記録しました。脅威の状況が進化するにつれ、企業にとってこれらの攻撃を軽減するための効果的な対策を講じることが急務となっています。Google Cloud Armor のレイヤ 3 およびレイヤ 4 DDoS に対する常時稼働防御、ウェブ アプリケーション ファイアウォール(WAF)、適応型保護、bot 管理、脅威インテリジェンス、レート制限機能は、企業が包括的な DDoS 軽減戦略を構築するために効果を発揮します。
インターネットに接続されているアプリケーションは、アプリケーション レイヤ DDoS 攻撃(HTTP フラッドなど)に対して脆弱です。これらの攻撃は、大量のリクエストを送りつけることでサービスを利用不能にする、あるいは、クレデンシャル スタッフィングのような不正プログラムを実行する低容量攻撃を使用してアプリケーションにアクセスすることを意図したものです。Cloud Armor の新しいレート制限機能を使用すると、リクエスト量に応じてバックエンド リソースへのトラフィックを制限する、あるいは望ましくないトラフィックによりサービスの可用性に影響が出るのを防ぐ、といったことが可能です。
Uber Technologies は、DDoS 攻撃を防御するために最新の戦略とツールに依存している多くの企業のうちの 1 社です。同社は、DDoS 攻撃による事業運営への影響を軽減するために包括的なアプローチを採用しています。
「Uber は、DDoS 攻撃によるビジネスの中断を軽減するために多面的なアプローチを採用しています。Cloud Armor のレート制限は、当社が過去のインシデントで採用したツールキットで効果的だった部分です」と Uber のシニア エンジニアリング マネージャーである Avinash Palayadi 氏は述べています。
Cloud Armor のレート制限によるアプリケーションの保護
Cloud Armor のレート制限機能は、誤って構成された信頼できるクライアントによるバックエンドへの過負荷の防止、悪意あるクライアントからの大量のリクエスト送信の防止、各クライアントまたは特定のリージョンからのリクエストの制限など、お客様の主要なユースケースに対応します。
Cloud Armor には、レートベースのルールに対して実行できる 2 種類のアクションがあります。
-
スロットル: レート制限しきい値を使用して、クライアントごと、または全クライアントに対して最大リクエスト数の上限を適用します。
-
レートベースの禁止: ユーザーが構成した禁止しきい値を超えたクライアントを特定の期間禁止します。
レート制限のデプロイ計画
スロットル アクションは、サービス全体のレート制限に対処し、ベースラインのトラフィック量を大幅に上回るボリューム型攻撃から保護するのに有効です。ベスト プラクティスとして、リクエスト数をベースラインのトラフィック量より 10~30% 多い範囲に設定します。新製品のプロモーションや特別販売イベントなど、トラフィック量の多いイベントを想定して、レート制限のしきい値を一時的に引き上げることをおすすめします。あるいは、悪意のあるクライアントが再利用されるのを防ぐために、禁止期間を長くしたレートベースの禁止アクションを使用することも可能です。
禁止しきい値とレート制限しきい値に異なる値を設定したレートベースの禁止アクションを使用すると、誤って構成された信頼できるクライアントからのリクエストがバックエンド サーバーに意図せず負荷をかけるのを防止できます。スロットル アクションとレートベースの禁止アクションを組み合わせて使用すると、リクエストはレート制限しきい値でスロットリングされ、リクエスト レートが禁止しきい値を超えると一時的に禁止されます。ベスト プラクティスとして、レート制限の約 10 倍という高い禁止制限を設定し、禁止期間を短くすることをおすすめします。これにより、信頼できるクライアントからの短期間のバーストは許可され、長期間の禁止によって優良なクライアントにペナルティが課されることがなくなります。
最後に、受信トラフィックが同程度のボリュームで正規のトラフィックと同じように見える手動または自動の悪意のあるアクティビティに対しては、レート制限を備えた適応型保護を使用することをおすすめします。Cloud Armor の適応型保護は、ML を使用してレイヤ 7 DDoS 攻撃からアプリケーションを保護し、単一または分散ソースからの大量のトラフィックをブロックします。
仕組み: スロットルとレートベースの禁止の組み合わせ
レートベースの禁止ルールは、レート制限しきい値、レート制限の評価期間、禁止しきい値、禁止期間、レート制限を超えたときに実行するアクションなどのレートベースの禁止パラメータとスロットルを組み合わせることで、ユースケースに合わせて微調整できます。以下は、レート制限と禁止しきい値の両方を指定したレートベースの禁止ルールの gcloud コマンド サンプルです。
レート制限と禁止しきい値の両方を指定したレートベースの禁止ルールの例
次のグラフは、レート制限と禁止しきい値の両方を指定してレートベースの禁止を使用した場合に、Cloud Armor が実行するアクションを示しています。


わかりやすくするために、このグラフでは、interval_sec と ban_interval_sec が同じになるように選択されています。Cloud Armor は、interval_sec ウィンドウごとに累積受信リクエストをカウントします。
-
許可アクション (1) - interval_sec の間クライアントからの累積リクエスト数が rate_limit_threshold を超えない場合、Cloud Armor はバックエンドへのクライアント リクエストを許可します。
-
スロットル アクション (2) - interval_sec の間に累積リクエスト数が rate_limit_threshold を超える場合、超過したリクエストは拒否されます(または、exceed_action で指定した処理を行います)。interval_sec が終了すると、累積リクエスト数は 0 に戻り、新しいリクエストが許可されます(許可アクション - 1)。
-
レートベースの禁止アクション (3) - interval_sec の間の累積リクエスト数が rate_limit_threshold を超えた場合、超過リクエストは拒否されます(または、選択された exceed_action に従います)。ban_interval_sec の間、すべての「余分な」リクエストは拒否され(スロットル アクション - 2 と同じ)、ban_interval_sec が完了すると、クライアントは ban_duration_sec の間完全に禁止されます。ban_duration_sec が終了すると、リクエストの評価が再び開始されます(許可アクション - 1)。
今後の対応
レート制限は、アプリケーションを DDoS 攻撃からプロアクティブに保護する重要なツールです。ユースケースに基づいて使用できる、おすすめの Cloud Armor 機能を以下にまとめました。


ユースケースと適用可能な Cloud Armor 機能の概要
今回のブログ投稿で概説している特定のユースケースのベスト プラクティスを実践することで、正当なユーザーに優れたユーザー エクスペリエンスを提供しながら、アプリケーションを悪意のあるトラフィックから確実に保護できます。Cloud Armor とレート制限の詳細については、こちらをご覧ください。
-ネットワーキング スペシャリスト、Navya Dwarakanath
-プロダクト マネージャー、Lihi Shadmi