案例研究
盾牌計畫

「Apache Beam 支援我們的使命,藉由為客戶提供近乎即時的流量數據可見性、持續分析與調整我們的防禦措施,以及中和 DDoS 攻擊期間流量高峰對我們平台效能和效率的影響,讓網路成為更安全、更好的地方。」

Marc Howard
「盾牌計畫」創始工程師

高效串流分析:透過「盾牌計畫」讓網路更安全

背景

「盾牌計畫」Google CloudJigsaw (Google 的子公司) 提供,是一項對抗 分散式阻斷服務 (DDoS) 攻擊的服務。「盾牌計畫」免費提供給符合資格且具有媒體、選舉和人權相關內容的網站。「盾牌計畫」於 2013 年成立,其使命是保護言論自由,並確保當人們可以存取與民主相關的資訊時,這些資訊不會以政治動機遭到洩露、審查或噤聲。

在 2022 年上半年,「盾牌計畫」防禦超過 25,000 次攻擊,保護了弱勢使用者的網站,例如人權、新聞和公民社會組織或處於緊急情況下的政府。值得注意的是,「盾牌計畫」協助確保在美國 2022 年期中選舉期間,不受阻礙地存取與選舉相關的資訊。它也讓烏克蘭的關鍵基礎設施和媒體網站能夠抵禦持續不斷的攻擊,並在烏克蘭遭到入侵期間繼續提供關鍵服務和資訊。

創始工程師 Marc Howard 和 Chad Hansen 解釋「盾牌計畫」如何使用 Apache Beam 來提供其部分核心價值。串流 Apache Beam 管線每天處理約 3 TB 的記錄資料,每秒查詢次數顯著超過 10,000 次。這些管線滿足多種產品需求。例如,Apache Beam 為 150 個國家/地區的 3000 多個客戶網站產生即時分析和關鍵指標。這些指標為大規模的長期攻擊分析提供動力,微調「盾牌計畫」的防禦措施,並支持他們努力讓網路成為安全自由的空間。

Beam 之旅

「盾牌計畫」平台是使用 Google Cloud 技術建構的,並提供多層防禦。為了吸收部分流量並讓網站保持線上狀態 (即使其伺服器當機),它使用 Cloud CDN 進行 快取。為了保護網站免受 DDoS 和其他惡意攻擊,它利用 Cloud Armor 功能,例如自適應保護、速率限制和機器人管理。

「盾牌計畫」充當 反向代理:它代表網站接收流量請求、透過快取吸收流量、篩選有害流量、封鎖攻擊者,然後將安全流量傳送到網站的原始伺服器。這種配置允許網站在有人試圖以 DDoS 攻擊將其關閉時保持運作。挑戰在於,由於大部分流量被封鎖,客戶原始伺服器上的記錄不再具有關於網站流量的精確分析。相反地,客戶依賴「盾牌計畫」來提供所有流量分析。

「盾牌計畫」機制 「盾牌計畫」機制

最初,「盾牌計畫」將流量記錄儲存在 BigQuery 中。它使用一個大型查詢來產生具有不同流量指標 (例如流量總量、每秒查詢次數、快取流量的比例和攻擊資料) 的分析和圖表。然而,查詢所有記錄,尤其是在流量急劇飆升的情況下,速度很慢而且成本高昂。

人們通常想知道關鍵時刻的流量指標:如果他們的網站受到攻擊,他們想看看現在發生了什麼事。我們需要讓資料點快速出現在 UI 上。

Marc Howard
「盾牌計畫」創始工程師

然後,「盾牌計畫」團隊新增 Firestore 作為中間步驟,每分鐘執行一次 cron,從 BigQuery 查詢記錄並將中期報告寫入 Firestore,然後使用這些報告來建立圖表。此步驟稍微提高了效能,但所獲得的收益不足以滿足關鍵的業務時程,並且未能為客戶提供足夠的歷史流量可見性。

與 BigQuery 不同,Firestore 是為中等規模的工作負載而設計的。因此,無法同時提取許多模型,為客戶提供較長時間範圍的累積統計資料。從成本角度來看,每分鐘查詢記錄的效率很低。此外,部分記錄會延遲到達 BigQuery,因此必須在 24 小時後再次執行 cron,以仔細檢查遲到的記錄。

每分鐘查詢我們所有的流量記錄非常昂貴,特別是當您考慮到我們是一項 DDoS 防禦服務時,我們看到的記錄數量通常會急劇飆升。

Marc Howard
「盾牌計畫」創始工程師

「盾牌計畫」團隊正在尋找一個資料處理架構,可以最大限度地減少端對端延遲,滿足他們對於提高客戶可見性的擴展需求,並確保成本效益。

他們選擇 Apache Beam,因為它具有強大的處理保證、串流功能,以及適用於 BigQuery 和 Pub/Sub 的現成I/O。藉由將 Apache Beam 與 Dataflow 執行器配對,他們也受益於內建的自動調整規模。此外,Apache Beam Python SDK 可讓您在各處使用 Python,並簡化讀取資料模型類型 (必須與消耗它們的後端和寫入它們的管線上的類型相同)。

使用案例

「盾牌計畫」成為 Apache Beam 的早期採用者之一,並在 2020 年將其工作流程移轉至串流 Apache Beam 管線。目前,Apache Beam 透過多個串流管線支援多種產品需求。

產生使用者導向分析的統一串流管線會從 Pub/Sub 讀取記錄,同時從 Cloud Logging 到達,每分鐘將記錄分組,依據請求的主機名稱分割,產生報告,並將報告寫入 BigQuery。此管線會彙總記錄資料、移除個人識別資訊 (PII),而不使用資料外洩防護 (DLP),並允許將資料長期儲存在 BigQuery 中,同時滿足法規要求。CombineFn 允許「盾牌計畫」團隊建立自訂累加器,在根據主機名稱和分鐘鍵入記錄資料時將鍵納入考量,合併每個鍵的記錄資料。如果記錄延遲到達,Apache Beam 會建立新的報告並彙總每個主機名稱每分鐘的多個報告。

我們可以鍵入資料、使用 CombinePerKey,而累加器像魔法般運作的事實對我們來說是一大勝利

Marc Howard
「盾牌計畫」創始工程師

Apache Beam 記錄處理管線讓「盾牌計畫」能夠僅查詢相關報告,因此讓「盾牌計畫」能夠在短短 2 分鐘內將資料載入到客戶儀表板。「盾牌計畫」的客戶也可以獲得更高的可見性,因為查詢的報告比流量記錄小得多,而且更容易儲存。

端對端管線延遲對我們來說非常有意義,而 Apache Beam 串流允許在 2 分鐘內在圖表上顯示所有流量指標,也可以回顧數天、數週或數月的資料,並以可擴展的時間框架向客戶顯示圖表。

Chad Hansen
「盾牌計畫」創始工程師

「盾牌計畫」延伸了串流 Apache Beam 記錄處理管線,以根據攻擊期間的記錄和請求產生不同類型的報告。Apache Beam 管線會分析攻擊並產生關鍵的防禦建議。然後,內部的長期攻擊分析系統會使用這些建議來微調「盾牌計畫」的防禦措施。

Apache Beam 也藉由分析流量記錄中的模式,支援「盾牌計畫」的流量速率限制決策。串流 Apache Beam 管線會收集關於網站合法使用的資訊、從該分析中排除濫用流量,並制定安全地劃分這兩組的流量速率限制。然後,這些限制以 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
「盾牌計畫」創始工程師

成果

採用 Apache Beam 使 Project Shield 能夠擁抱串流、擴展其管線、最大化效率並最小化延遲。串流的 Apache Beam 管線每天處理約 3 TB 的日誌資料,每秒超過 10,000 個查詢,為全球 3,000 多家客戶產生面向使用者的分析、客製化的流量速率限制以及防禦建議。Apache Beam 的串流處理和強大的轉換確保在短短 2 分鐘內交付關鍵指標,使客戶能夠了解歷史流量,與原始解決方案相比,計算效率提高了 91%。

Apache Beam 模型及其 Dataflow 執行器的自動擴展功能有助於防止 DDoS 攻擊期間的流量峰值對我們的平台在效率和財務方面產生重大影響。

Marc Howard
「盾牌計畫」創始工程師

Apache Beam 資料處理框架支持 Project Shield 消除 DDoS 攻擊作為壓制記者和其他說真話者的武器,使網路更加安全之目標。

這項資訊是否有用?