使用 Google Cloud Armor、負載平衡和 Cloud CDN 部署可程式設計的全域前端

Last reviewed 2025-04-02 UTC

本文提供網頁應用程式的參考架構,該應用程式託管於 Google Cloud。這項架構採用全域前端,並納入 Google Cloud 最佳做法,協助您擴充、保護及加速傳遞連線至網際網路的應用程式。架構包括支援 Cloud Build,以及 Jenkins 和 GitLab 等第三方持續整合 (CI) 和持續推送軟體更新 (CD) 工具。這個架構適用於想透過負載平衡器擴充應用程式,並使用網頁應用程式防火牆 (WAF) 防範分散式阻斷服務 (DDoS) 和網路攻擊的開發人員和應用程式擁有者。

架構

下圖顯示本文說明的架構。

網頁應用程式架構。

在這個架構中,應用程式會透過全域外部應用程式負載平衡器進行負載平衡,將 HTTP 和 HTTPS 流量分配到多個區域的多個後端執行個體。Cloud CDN 會使用 Google 的邊緣 PoP (存在點),加快面向網際網路的應用程式速度,並與全域外部應用程式負載平衡器搭配運作,將內容傳遞給使用者。後端受到 Google Cloud Armor 安全性政策保護,可透過清除常見網路攻擊或其他第 7 層屬性的傳入要求,提供第 7 層的篩選功能,協助在流量抵達負載平衡後端服務前加以封鎖。系統預設會啟用防護機制,抵禦巨流量 DDoS 攻擊。

使用者要求服務內容時,要求會傳送至面向網際網路的應用程式全域前端,該前端由 Cross-Cloud Network 提供。Google Cloud Armor 安全性政策會評估要求,首先是 Google Cloud Armor 邊緣安全性政策。如果要求獲得允許,且 Cloud CDN 可以完成要求,系統會從 Google Cloud Armor 快取擷取內容,並傳送給使用者。如果要求導致快取未命中,系統會評估後端政策,然後根據政策規則拒絕或由後端伺服器滿足要求。

架構元件

上圖包含下列元件:

  • 全域外部應用程式負載平衡器:這類應用程式負載平衡器是以 Proxy 為基礎的第 7 層負載平衡器,可讓您執行及調度服務資源。應用程式負載平衡器會將 HTTP 和 HTTPS 流量分配至各種 Google Cloud 平台上的後端。應用程式負載平衡器具備下列功能:

    • 可設定的後端:這個架構使用不同區域中的兩個代管執行個體群組 (MIG),但您可以設定全域外部應用程式負載平衡器支援的任何後端。您可以為 GKE、Cloud Run、Cloud Run functions 和 App Engine 應用程式使用相同的負載平衡器,也可以為代管於地端和其他雲端的應用程式使用負載平衡器,但須採用不同的後端設定。詳情請參閱應用程式負載平衡器總覽
    • 流量分配:您可以使用應用程式負載平衡器管理流量,包括將不同使用者傳送至不同後端伺服器,藉此管理軟體版本。本文所述架構採用 60/40 的簡單流量分配方式。不過,您可以變更這項分配比例,建立更複雜的流量管理機制。如要瞭解其他設定選項,請參閱可設定的逾時和重試,並決定偏好的平衡模式
  • Cloud CDN:Cloud CDN 平台會做為快取。這個負載平衡器會與來源伺服器一併部署,提供完整的 Cloud CDN 功能,包括 QUIC 和 HTTP/2,以及轉送和快取控制項。這種做法可讓應用程式在全球擴展規模,同時維持效能,並降低頻寬和前端運算成本。全域前端使用的預設設定,是以 Cloud CDN 內容傳遞最佳做法網路安全最佳做法為依據。

  • Google Cloud Armor:這個元件包含 DDoS 防護和 WAF 規則。這個架構具有下列基本 Google Cloud Armor 設定,可協助減輕常見的威脅向量:

使用的產品

這項參考架構使用下列 Google Cloud 產品:

設計須知

本節提供指引,協助您以本文為起點,開發符合特定安全性、可靠性、作業效率、成本和效能需求的架構。

安全性、隱私權和法規遵循

本節說明使用這個參考架構部署網頁應用程式時,應考量的其他因素。

建立安全基準

為進一步提升安全性,本文所述架構也與企業基礎藍圖相容。藍圖可協助使用 Google Cloud 的機構,為日後的所有工作負載建立安全基準,包括設定 Identity and Access Management (IAM)Cloud Key Management ServiceSecurity Command Center

使用 Cloud CDN 保護使用者資料

在這個架構中,建議您不要快取使用者專屬內容。如要快取 HTML (text/html) 和 JSON (application/json) 內容類型,請在 Cloud CDN 回應中設定明確的 cache-control 標頭。請確保您不會快取某位使用者的資料,然後提供給所有使用者。

使用 IAP 控管應用程式存取權

這個架構也與 Identity-Aware Proxy (IAP) 相容。IAP 會驗證使用者身分,然後判斷是否應允許該使用者存取應用程式。如要在全域外部模式或傳統模式下,為應用程式負載平衡器啟用 IAP,請在負載平衡器的後端服務上啟用 IAP。應用程式負載平衡器會先將傳入的 HTTP/HTTPS 要求傳送至 Google Cloud Armor 進行評估,再進行負載平衡。如果 Google Cloud Armor 封鎖要求,IAP 就不會評估該要求。如果 Google Cloud Armor 允許要求,IAP 接著會評估該要求。如果 IAP 未驗證要求,系統就會封鎖要求。詳情請參閱「整合 Google Cloud Armor 與其他 Google 產品」。

成本最佳化

一般而言,搭配使用 Cloud CDN 和 Google Cloud Armor 有助於盡量降低資料傳輸輸出費用的影響。

Cloud CDN

從快取提供給用戶端的靜態物件不會經過負載平衡器。有效的快取策略可減少負載平衡器處理的傳出資料量,進而降低成本。

Google Cloud Armor

Google Cloud Armor 可防止系統向您的帳戶收取不必要流量的費用,有助於降低成本。遭 Google Cloud Armor 封鎖的要求不會產生應用程式回應,因此負載平衡器處理的傳出資料量會大幅減少。其對成本的影響程度取決於所導入 Google Cloud Armor 安全性政策封鎖的非預期流量百分比。

最終費用也可能因您想保護的服務或應用程式數量、Google Cloud Armor 政策和規則數量、快取填入和輸出,以及資料量而異。詳情請參閱下列資源:

部署作業

如要部署這項參考架構,請使用 Terraform 範例。詳情請參閱 README 檔案web_app_protection_example 資料夾包含 (main.tf) 檔案。這個檔案中的程式碼會建立本文所述的架構,並提供自動部署的額外支援。

Terraform 資料夾中的資料夾結構如下:

當您將變更提交至管道所依據的任何分支版本時,這些變更會觸發管道執行作業,並在完成後整合至新版本。首次提取工具包時,解決方案會載入您選擇的 Google Cloud 專案。

後續步驟

進一步瞭解此參考架構中使用的 Google Cloud 產品最佳做法:

貢獻者

作者:

其他貢獻者: