ケーススタディ
Project Shield

「Apache Beam は、お客様へのトラフィックデータのほぼリアルタイムでの可視化を提供し、防御の継続的な分析と調整を行い、DDoS攻撃時のトラフィックスパイクがプラットフォームのパフォーマンスと効率に与える影響を無効化することで、ウェブをより安全で良い場所にするという私たちの使命をサポートしています。」

Marc Howard
Project Shield ファウンディングエンジニア

効率的なストリーミング分析:Project Shield でウェブをより安全な場所にする

背景

Google Cloud と Jigsaw(Google の子会社)が提供する Project Shield は、分散型サービス拒否 (DDoS) 攻撃に対抗するサービスです。Project Shield は、メディア、選挙、人権関連のコンテンツを掲載する対象のウェブサイトに無料で提供されています。2013 年に設立された Project Shield の使命は、言論の自由を保護し、人々が民主主義関連の情報にアクセスできる場合、その情報が政治的に動機付けられた方法で改ざん、検閲、または黙殺されないようにすることです。

2022 年上半期、Project Shield は、人権、ニュース、市民社会団体、または緊急事態下の政府などの脆弱なユーザーのウェブサイトを 25,000 件以上の攻撃から防御しました。特に、Project Shield は、米国 2022 年中間選挙シーズン中に選挙関連の情報への妨げられないアクセスを確保するのに役立ちました。また、ウクライナの重要なインフラストラクチャとメディアのウェブサイトが絶え間ない攻撃から身を守ることを可能にし、ウクライナ侵攻中も重要なサービスと情報を提供し続けられるようにしました。

共同設立エンジニアである Marc Howard と Chad Hansen は、Project Shield が Apache Beam を使用して主要な価値の一部を実現する方法を説明しています。ストリーミング Apache Beam パイプラインは、毎秒 10,000 件を超えるクエリで、毎日約 3 TB のログデータを処理します。これらのパイプラインは、複数の製品ニーズに対応します。たとえば、Apache Beam は 150 カ国、3000 を超える顧客ウェブサイトに対してリアルタイムの分析と重要な指標を作成します。これらの指標は、大規模な長期的な攻撃分析の原動力となり、Project Shield の防御を微調整し、ウェブを安全で自由な空間にするという取り組みをサポートします。

Beam への道のり

Project Shield プラットフォームは Google Cloud テクノロジーを使用して構築されており、多層防御を提供します。トラフィックの一部を吸収し、サーバーがダウンしていてもウェブサイトをオンラインの状態に保つために、Cloud CDNキャッシングに使用します。DDoS その他の悪意のある攻撃からウェブサイトを保護するために、適応型保護、レート制限、ボット管理などの Cloud Armor 機能を活用します。

Project Shield は リバースプロキシとして機能します。ウェブサイトに代わってトラフィックリクエストを受信し、キャッシングによってトラフィックを吸収し、有害なトラフィックをフィルタリングし、攻撃者を禁止し、安全なトラフィックをウェブサイトのオリジンサーバーに送信します。この構成により、DDoS 攻撃でウェブサイトをダウンさせようとした場合でも、ウェブサイトは稼働を維持できます。課題は、トラフィックの大部分がブロックされているため、顧客のオリジンサーバーのログには、ウェブサイトのトラフィックに関する正確な分析情報がなくなっていることです。代わりに、顧客は Project Shield がすべてのトラフィック分析を提供することに依存しています。

Project Shield メカニズム Project Shield メカニズム

当初、Project Shield はトラフィックログを BigQuery に保存していました。1 つの大きなクエリを使用して、トラフィック量、QPS、キャッシュされたトラフィックの割合、攻撃データなど、さまざまなトラフィック指標を含む分析とグラフを作成していました。しかし、特にトラフィックが劇的に増加した場合、すべてのログをクエリすることは遅く、高価でした。

多くの場合、人々は重要な時期のトラフィック指標を知りたいと思っています。たとえば、ウェブサイトが攻撃を受けている場合、現在何が起こっているかを知りたいのです。UI にデータポイントを迅速に表示する必要があります。

Marc Howard
Project Shield ファウンディングエンジニア

その後、Project Shield チームは中間ステップとして Firestore を追加し、毎分 cron を実行して BigQuery からログをクエリし、中間レポートを Firestore に書き込み、これらのレポートを使用してグラフを作成しました。このステップによりパフォーマンスはわずかに向上しましたが、重要なビジネスのタイムラインを満たすには不十分であり、顧客の過去のトラフィックに対する適切な可視性も提供しませんでした。

BigQuery とは異なり、Firestore は中規模のワークロード向けに設計されています。そのため、多くのモデルを同時に取得して、顧客に長期的な期間の累積統計を提供することは不可能でした。コストの観点から、毎分ログをクエリすることは非効率でした。さらに、一部のログは遅延して BigQuery に到着しており、遅れて到着したログを二重チェックするために、24 時間後に cron を再度実行する必要がありました。

すべてのトラフィックログを毎分クエリすることは非常に高価です。特に、DDoS 防御サービスであることを考えると、確認するログの数は劇的に増加することがよくあります。

Marc Howard
Project Shield ファウンディングエンジニア

Project Shield チームは、エンドツーエンドのレイテンシを最小限に抑え、顧客の可視性を向上させるためのスケーリングニーズを満たし、コスト効率を確保するデータ処理フレームワークを探していました。

彼らは、強力な処理保証、ストリーミング機能、BigQuery と Pub/Sub のすぐに使える I/O を備えた Apache Beam を選択しました。Apache Beam を Dataflow ランナー と組み合わせることで、組み込みの自動スケーリングの利点も得られました。さらに、Apache Beam Python SDK を使用すると、全体で Python を使用でき、消費するバックエンドとそれを書き込むパイプラインで同じでなければならないデータモデルタイプを読むことを簡素化します。

ユースケース

Project Shield は Apache Beam の初期採用者の 1 つとなり、2020 年にワークフローをストリーミング Apache Beam パイプラインに移行しました。現在、Apache Beam は複数のストリーミングパイプラインで複数の製品ニーズに対応しています。

ユーザー向けの分析を作成する統合されたストリーミングパイプラインは、Cloud Logging から到着するログを Pub/Sub から読み取り、毎分毎分ホスト名でログをウィンドウ化し分割し、レポートを生成し、レポートを BigQuery に書き込みます。パイプラインはログデータを集計し、DLP を使用せずに 個人情報 (PII) を削除し、規制要件を満たしながら、データをより長く BigQuery に保存できるようにします。CombineFn を使用すると、Project Shield チームは、ホスト名と分をキーとしてログデータをキー処理するときにキーを考慮に入れるカスタムアキュムレータを作成し、キーごとのログデータを組み合わせることができます。ログが遅れて到着した場合、Apache Beam は新しいレポートを作成し、ホスト名と分ごとに複数のレポートを集計します。

データをキー処理し、CombinePerKey を使用し、アキュムレータが魔法のように機能するという事実は、私たちにとって大きな成果でした。

Marc Howard
Project Shield ファウンディングエンジニア

Apache Beam ログ処理パイプラインにより、Project Shield は関連するレポートのみをクエリできるため、Project Shield はわずか 2 分以内に顧客ダッシュボードにデータを読み込むことができます。また、クエリされたレポートはトラフィックログよりもサイズがはるかに小さく、保存が容易なため、パイプラインは Project Shield の顧客の可視性を向上させます。

エンドツーエンドのパイプラインレイテンシは非常に重要であり、Apache Beam ストリーミングにより、すべてのトラフィック指標を 2 分以内にチャートに表示できるだけでなく、数日、数週間、または数ヶ月間のデータを確認し、顧客にスケーラブルなタイムフレームでグラフを表示することもできました。

Chad Hansen
Project Shield ファウンディングエンジニア

Project Shield は、ログと攻撃中のリクエストに基づいて異なるタイプのレポートを生成するために、ストリーミング Apache Beam ログ処理パイプラインを拡張しました。Apache Beam パイプラインは攻撃を分析し、重要な防御の推奨事項を生成します。これらの推奨事項は、内部の長期的な攻撃分析システムで使用され、Project Shield の防御を微調整します。

Apache Beam は、トラフィックログのパターンを分析することにより、Project Shield のトラフィックレート制限の決定にも役立っています。ストリーミング Apache Beam パイプラインは、ウェブサイトの正当な使用に関する情報を収集し、その分析から不正なトラフィックを除外し、2 つのグループを安全に分割するトラフィックレート制限を作成します。これらの制限は、Cloud Armor のルールとポリシーの形で適用され、不正なトラフィックを制限するか、完全に禁止するために使用されます。

Apache Beam ストリーミングログ分析 Apache Beam ストリーミングログ分析

Apache Beam と Cloud Dataflow を組み合わせることで、Project Shield のストリーミングパイプラインの運用管理が大幅に簡素化されます。Apache Beam は使いやすいストリーミングプリミティブを提供する一方、Dataflow は すぐに使用できるパイプラインライフサイクル管理 を実現し、メッセージの重複排除と厳密に一度の順序付き処理で Pub/Sub の配信モデルを補完します。Apache Beam の Pub/Sub I/O は、Pub/Sub イベントのタイムスタンプからログデータをキー処理する機能を提供します。この機能により、Project Shield は、関連するすべてのログが到着した後にログデータをウィンドウ化することで、データの全体的な精度を向上させることができます。パイプラインライフサイクルを管理するためのさまざまなオプションにより、Project Shield はシンプルで信頼性の高い展開プロセスを採用できます。Apache Beam Dataflow ランナーの 自動スケーリングとマネージドサービス機能は、DDoS攻撃中のリソース消費の急増に対処し、顧客に即時の可視性を提供します。

攻撃が発生した場合、Apache Beam を使用して大量のトラフィックを処理し、重要なウィンドウ中に時間どおりに指標を提供する準備ができています。

Chad Hansen
Project Shield ファウンディングエンジニア

結果

Apache Beamの採用により、Project Shieldはストリーミングに対応し、パイプラインのスケーリング、効率の最大化、レイテンシの最小化を実現しました。ストリーミングApache Beamパイプラインは、毎日約3TBのログデータを処理し、毎秒1万件を超えるクエリを処理することで、世界中の3,000社を超える顧客向けに、ユーザー向けの分析、調整されたトラフィックレート制限、および防御に関する推奨事項を提供しています。Apache Beamのストリーミング処理と強力な変換により、重要な指標をわずか2分以内に配信できるようになり、顧客による過去のトラフィックの可視化が可能となり、元のソリューションと比較して91%の計算効率の向上が実現しました。

Apache BeamモデルとDataflowランナーの自動スケーリング機能により、DDoS攻撃時のトラフィックの急増が、効率と経済的な観点からプラットフォームに大きな影響を与えるのを防いでいます。

Marc Howard
Project Shield ファウンディングエンジニア

Apache Beamデータ処理フレームワークは、ジャーナリストや真実を語る人々の声を封じるための武器としてのDDoS攻撃を排除し、ウェブをより安全な場所にするというProject Shieldの目標を支援しています。

この情報は役に立ちましたか?