Google Cloud Armor Adaptive Protection 總覽

Google Cloud Armor 自動調整防護機制可保護應用程式、網站和服務,防範第 7 層分散式阻斷服務 (DDoS) 攻擊,例如 HTTP 洪水攻擊和其他高頻率第 7 層 (應用程式層級) 惡意活動。 Google Cloud 自動調整式防護機制會建構機器學習模型,執行下列操作:

  1. 偵測異常活動並發出警報
  2. 產生描述潛在攻擊的簽章
  3. 產生自訂 Google Cloud Armor 網路應用程式防火牆規則,封鎖簽章

您可以針對個別安全性政策啟用或停用 Adaptive Protection。

系統會在 Adaptive Protection 事件資訊主頁中顯示異常流量 (潛在攻擊) 的快訊,包括攻擊的簽章,並將事件記錄檔傳送至 Cloud Logging,供您直接分析或轉送至下游記錄檔或安全性事件監控工作流程。系統也會在 Security Command Center 中,將潛在攻擊的快訊生成為發現項目。

Adaptive Protection 的適用情形

您必須訂閱 Google Cloud Armor Enterprise,才能取得完整的 Adaptive Protection 警告。否則只會收到基本快訊。基本快訊只會提供最少的資訊,例如偵測的信賴分數和攻擊規模。基本快訊不包含攻擊簽章或建議使用者部署的規則。

如果專案尚未註冊 Cloud Armor Enterprise,請參閱「使用 Cloud Armor Enterprise」一文,瞭解如何註冊。

Cloud Logging 和 Cloud Monitoring

有效使用 Adaptive Protection 需要瞭解 Google Cloud的記錄和警報運作方式,因此建議您熟悉 Cloud Logging、警報和警報政策。

為確保記錄和報表正確無誤,Google Cloud Armor 需要存取下列記錄。這些記錄必須儲存在 Cloud Logging 中,或傳送至 Google Cloud Armor 可存取的記錄值區

  • networksecurity.googleapis.com/dos_attack
  • networksecurity.googleapis.com/network_dos_attack
  • networksecurity.googleapis.com/network_dos_attack_mitigations

設定及調整快訊

如果專案中的 Google Cloud Armor 安全性政策已保護您的應用程式,您就可以啟用自動調整式防護機制。為特定安全性政策啟用 Adaptive Protection 後,與該政策相關聯的所有後端服務都會受到保護。

啟用 Adaptive Protection 後,系統會先進行至少一小時的訓練,然後才會建立可靠的基準,並開始監控流量及產生快訊。在訓練期間,Adaptive Protection 會模擬每個後端服務的專屬輸入流量和使用模式,藉此為每個後端服務建立基準。訓練期結束後,當 Adaptive Protection 在導向與該安全性政策相關聯的任何後端服務的流量中,偵測到高頻率或高用量的異常狀況時,您就會收到即時快訊。

您可以根據多項指標調整自我調整保護措施快訊。系統會將警報傳送至 Cloud Logging,其中包含信賴度攻擊簽章、建議規則,以及與建議規則相關聯的預估受影響基準率

  • 信心水準是指 Adaptive Protection 模型預測觀察到的流量模式變化是否異常時的信心程度。
  • 與建議規則相關聯的受影響基準比率,代表規則擷取的現有基準流量百分比。我們提供兩種費率。第一種是相對於遭受攻擊的特定後端服務流量百分比。第二個是相對於通過安全性政策的所有流量 (包括所有已設定的後端服務目標,而不只是受攻擊的目標) 的百分比。

您可以在 Cloud Logging 中,根據信賴度或受影響的基準費率 (或兩者並用) 篩選快訊。如要進一步瞭解如何調整快訊,請參閱管理快訊政策

自動調整式防護機制旨在保護後端服務,免於遭受大量第 7 層 DDoS 攻擊。在下列情況中,要求不會計入「自動防護」:

  • 直接從 Cloud CDN 放送的要求
  • 遭 Google Cloud Armor 安全性政策拒絕的要求

精細模型

根據預設,Adaptive Protection 會偵測攻擊,並根據導向各後端服務的典型流量,建議採取緩解措施。也就是說,後端服務後方的後端可能會過載,但 Adaptive Protection 不會採取任何行動,因為攻擊流量對後端服務而言並非異常。

精細模型功能可讓您將特定主機或路徑設為精細單位,供 Adaptive Protection 分析。使用精細模型時,Adaptive Protection 會根據相符的主機或網址路徑前置字元篩選流量,有助於減少誤判。這些主機或路徑都稱為「細微流量單位」

已識別的攻擊簽章只會針對進入細微流量單位的攻擊流量,但篩選作業仍會套用至已部署規則比對到的所有要求,就像沒有細微設定一樣。舉例來說,如果您希望自動部署的規則只比對特定流量細微單位,請考慮使用 evaluateAdaptiveProtectionAutoDeploy() && request.headers['host'] == ... && request.path == ... 等比對條件。

除了主機和網址路徑前置字元,您也可以根據下列部分或所有選項設定快訊門檻。您可以將這些門檻套用至精細流量單位或整個後端服務,但負載門檻只能套用至後端服務:

  • 負載:根據設定的應用程式負載平衡器,後端服務的負載上限。這個選項不適用於細微流量單位,也不適用於無伺服器後端,例如 Cloud Run、Cloud Run 函式或外部來源後端。
  • 每秒查詢次數 (QPS) 絕對值:後端服務或流量單位收到的尖峰流量 (以每秒查詢次數呈現)。
  • 基準 QPS 倍數:平均長期基準流量的倍數。舉例來說,2 值代表的 QPS 是基準流量的兩倍。

如要進一步瞭解如何設定精細模型,請參閱「設定 Google Cloud Armor 自動調整式防護機制」。

查看及解讀快訊

Adaptive Protection 偵測到疑似攻擊時,會立即在 Adaptive Protection 事件資訊主頁中產生事件,並在 Cloud Logging 中產生記錄項目。警報位於記錄項目的 JSON 酬載中。記錄項目會在 Cloud Logging 的「網路安全政策」資源下產生。記錄訊息會指出遭到攻擊的後端服務,並提供信賴分數,表示 Adaptive Protection 認為偵測到的流量模式變化異常的程度。記錄訊息也會包含攻擊簽章,說明攻擊流量的特徵,以及建議您套用哪些 Google Cloud Armor 規則來減輕攻擊影響。

瞭解攻擊特徵

自我調適防護警示會包含攻擊簽章,說明潛在攻擊的流量屬性。您可以使用簽章識別並封鎖攻擊。簽章有兩種形式:使用者可讀取的表格,以及預先建構的 Google Cloud Armor WAF 規則,可部署在相關安全性政策中。如果您未訂閱 Cloud Armor Enterprise,基本快訊就不會包含攻擊特徵

簽章包含一組屬性,例如來源 IP 位址、地理區域、Cookie、使用者代理程式、參照網址和其他 HTTP 要求標頭,以及與潛在攻擊流量相關聯的這些屬性值。這組屬性無法由使用者設定。屬性值取決於後端服務的傳入流量值。

如果屬性值可能代表潛在攻擊,Adaptive Protection 會列出下列資訊:

  • 攻擊可能性
  • 攻擊中屬性的比例,也就是偵測到攻擊時,具有這個值的潛在攻擊流量百分比
  • 基準中的屬性比例,也就是在偵測到攻擊時,具有這項屬性值的基準流量百分比

Cloud Logging 項目規格包含每則快訊的詳細資訊。

以下是使用者可解讀的表格範例,其中包含潛在攻擊的簽章:

屬性名稱 比對類型 攻擊可能性 攻擊比例 基準比例
UserAgent "foo" 完全比對 0.7 0.85 0.12
UserAgent "bar" 完全比對 0.6 0.7 0.4
來源 IP "a.b.c.d" 完全比對 0.95 0.1 0.01
來源 IP a.b.c.e 完全比對 0.95 0.1 0.01
來源 IP a.b.c.f 完全比對 0.05 0.1 0.1
RegionCode 英國 完全比對 0.64 0.3 0.1
RegionCode IN 完全比對 0.25 0.2 0.3
RequestUri /urlpart 子字串 0.7 0.85 0.12

Adaptive Protection 警告和相關的 Cloud Logging 事件記錄包含下列資訊:

  • 專屬快訊 ID 或 alertID,用於在回報使用者意見時參照特定快訊 (詳情請見下文)
  • 遭受攻擊的後端服務,或 backendService
  • 信賴度分數 (或 confidence) 是介於 0 到 1 之間的數字,表示 Adaptive Protection 系統將偵測到的事件評估為惡意攻擊的強度

您也會收到一組特徵碼和規則,用來描述偵測到的攻擊。具體來說,這個集合會提供 headerSignatures 清單,每個 headerSignatures 都對應一個 HTTP 標頭,並包含特定標頭的 significantValues 清單。每個重要值都是觀察到的標頭值,或是該值的子字串。

以下是簽章範例:

...
headerSignatures: [
  0: {
   name: "Referer"
   significantValues: [
    0: {
     attackLikelihood: 0.95
     matchType: "MATCH_TYPE_EQUALS"
     proportionInAttack: 0.6
     proportionInBaseline: 0.01
     value: "foo.attacker.com"
    }
   ]
  }
...

這項快訊表示標頭 Referer 中的值 foo.attacker.com 對於描述攻擊行為非常重要。具體來說,在所有流量 (proportionInBaseline) 中,有 60% 的攻擊流量 (proportionInAttack) 具有這個 Referer 值,而只有 1% 的基準流量具有相同的 Referer 值。此外,在所有符合這個 Referer 值的流量中,有 95% 是攻擊流量 (attackLikelihood)。

這些值表示,如果您封鎖 Referer 標頭欄位中含有 foo.attacker.com 的所有要求,就能成功封鎖 60% 的攻擊,以及 1% 的基準流量。

matchType 屬性會指定攻擊流量中的屬性和顯著值之間的關係。可以是 MATCH_TYPE_CONTAINSMATCH_TYPE_EQUALS

下一個簽章會比對要求 URI 中含有子字串 /api? 的流量:

...
headerSignatures: [
  0: {
   name: "RequestUri"
   significantValues: [
    0: {
     attackLikelihood: 0.95
     matchType: "MATCH_TYPE_CONTAINS"
     proportionInAttack: 0.9
     proportionInBaseline: 0.01
     value: "/api?"
    }
   ]
  }
...

部署建議規則

此外,Adaptive Protection 警報也會提供以自訂規則語言表示的建議 Google Cloud Armor 規則。您可以使用這項規則,在 Google Cloud Armor 安全性政策中建立規則,以減輕攻擊影響。除了簽章外,這項快訊還會提供受影響基準流量的比例,協助您評估部署規則的影響。受影響的基準流量比率是預估的基準流量比例,與 Adaptive Protection 識別的攻擊特徵碼相符。如果您未訂閱 Cloud Armor Enterprise,Adaptive Protection 傳送的基本快訊不會包含建議您套用的 Google Cloud Armor 規則。

您可以在傳送至 Cloud Logging 的記錄訊息中,找到部分快訊簽章和受影響的基準費率。以下範例是範例快訊的 JSON 酬載,以及可用來篩選記錄的資源標籤。

...
 jsonPayload: {
   alertId: "11275630857957031521"
   backendService: "test-service"
   confidence: 0.71828485
   headerSignatures: [

    0: {
     name: "RequestUri"
     significantValues: [
      0: {
       attackLikelihood: 0.88
       matchType: "MATCH_TYPE_EQUALS"
       proportionInAttack: 0.85
       proportionInBaseline: 0.01
       value: "/"
      }
     ]
    }
    1: {
     name: "RegionCode"
     significantValues: [
      0: {
       attackLikelihood: 0.08
       matchType: "MATCH_TYPE_EQUALS"
       proportionInAttack: 0.17
       proportionInBaseline: 0.28
       value: "US"
      }
      1: {
       attackLikelihood: 0.68
       matchType: "MATCH_TYPE_EQUALS"
       proportionInAttack: 0.09
       proportionInBaseline: 0.01
       value: "DE"
      }
      2: {
       attackLikelihood: 0.74
       matchType: "MATCH_TYPE_EQUALS"
       proportionInAttack: 0.05
       proportionInBaseline: 0
       value: "MD"
      }
     ]
    }
     2: {
     name: "UserAgent"
     significantValues: [
      0: {
       attackLikelihood: 0.92
       matchType: "MATCH_TYPE_EQUALS"
       proportionInAttack: 0.85
       proportionInBaseline: 0
       value: "Unusual browser"
      }
      1: {
       attackLikelihood: 0.87
       proportionInAttack: 0.7
       proportionInBaseline: 0.1
       missing: true
      }
     ]
    }
   ]
   suggestedRule: [
    0: {
     action: "DENY"
     evaluation: {
       impactedAttackProportion: 0.95
       impactedBaselineProportion: 0.001
       impactedBaselinePolicyProportion: 0.001
     }
     expression: "evaluateAdaptiveProtection('11275630857957031521')"
    }
   ]
   ruleStatus: RULE_GENERATED
   attackSize: 5000
 }
 resource: {
    type: "network_security_policy",
    labels: {
      project_id: "your-project",
      policy_name: "your-security-policy-name"
    }
 },
}
}
...

如要部署建議規則,請從規則簽章複製 CEL 運算式,然後將運算式貼到新建立規則的相符條件中,或在 Google Cloud Armor 使用者介面的適應性防護資訊主頁上,按一下「套用」按鈕。

如要部署規則,請在 Google Cloud Armor 安全性政策中建立新規則,保護警報識別出的目標後端服務。接著,在設定規則時,將快訊中的 CEL 運算式複製並貼到規則的「符合條件」欄位,然後將規則動作設為 deny。在上述範例中,您會從快訊的 suggestedRule 區段複製 evaluateAdaptiveProtection('11275630857957031521') 運算式。

強烈建議您先在預覽模式中部署規則,評估規則對實際工作環境流量的影響,這麼做時,只要觸發規則,Google Cloud Armor 就會記錄動作和相關聯的流量,但不會對相符的流量採取任何動作。

此外,如果安全性政策附加至多個後端服務,請注意新規則的效果是否對任何後端服務造成不良影響。如果發生這種情況,請設定新的安全性政策,以減輕不必要的影響,並將政策附加至正確的後端服務。

建議您將新規則的優先順序設為高於任何動作設為允許的規則。這是因為為了達到預期影響,並盡可能減輕攻擊,規則應部署在最高邏輯優先順序位置,確保所有相符的流量都會遭到規則封鎖。系統會依優先順序評估 Google Cloud Armor 安全性政策中的規則,並在觸發第一個相符規則並採取相關規則動作後終止評估。如果需要為部分流量或特定用戶端授予這項規則的例外狀況,可以建立優先順序較高的「允許」規則,也就是數值較低的規則。如要進一步瞭解規則優先順序,請參閱「規則評估順序」。

自動部署建議的規則

您也可以設定 Adaptive Protection,自動部署建議的規則。如要啟用自動規則部署,請在比對條件中使用 evaluateAdaptiveProtectionAutoDeploy() 運算式,建立優先順序和動作自選的預留位置規則。如果 Adaptive Protection 將要求識別為攻擊流量,這項規則會評估為 true,而 Google Cloud Armor 會對攻擊要求套用動作。系統支援所有 Google Cloud Armor 動作類型,例如 allowdenythrottleredirect。此外,您也可以使用預覽模式記錄規則觸發情形,而不採取設定的動作。

如果您在外部應用程式負載平衡器前使用上游 Proxy (例如第三方 CDN),建議您設定 userIpRequestHeaders 欄位,將供應商的 IP 位址 (或 IP 位址範圍) 加入許可清單。這樣一來,Adaptive Protection 就不會誤將 Proxy 的來源 IP 位址視為參與攻擊。而是查看使用者設定的欄位,瞭解流量抵達 Proxy 前的來源 IP 位址。

如要進一步瞭解如何設定自動部署規則,請參閱「自動部署 Adaptive Protection 建議規則」一文。

規則狀態

如果您嘗試部署建議的規則時,系統未顯示任何規則,可以透過 ruleStatus 欄位判斷原因。

attackSize 欄位的值是以每秒查詢次數 (QPS) 為單位。

 ]
ruleStatus: RULE_GENERATED
attackSize: 5000
}

下表說明這個欄位可能的值及其意義。

規則狀態 說明
RULE_GENERATED 系統正常生成可用的規則。
BASELINE_TOO_RECENT 沒有足夠時間累積可靠的基準流量。系統最多需要一小時才能產生規則。
NO_SIGNIFICANT_VALUE_DETECTED 沒有任何標頭與攻擊流量相關聯,因此無法產生規則。
NO_USABLE_RULE_FOUND 無法建立可用的規則。
錯誤 建立規則時發生不明錯誤。

監控、意見回饋及回報事件錯誤

如要查看或使用「自動防護」資訊主頁,您必須具備下列權限。

  • compute.securityPolicies.list
  • compute.backendServices.list
  • logging.logEntries.list

在任何 Google Cloud Armor 安全性政策上啟用自動調整式防護機制後,您可以在「網路安全」>「Google Cloud Armor」面板下方看到下列頁面。系統會顯示所選安全政策和後端服務在所選時間範圍內的流量。圖表會標註 Adaptive Protection 偵測到的潛在攻擊事件,並列在圖表下方。按一下特定攻擊事件時,側邊視窗會以表格格式顯示攻擊簽章和建議規則。這與 Cloud Logging 項目規格所述的 Cloud Logging 記錄檔項目資訊相同。按一下「套用」按鈕,將建議的規則新增至同一項安全性政策。

Adaptive Protection 資訊主頁
「自動防護」資訊主頁 (按一下可放大)
自動調整式防護機制警報詳細資料
「自動防護」資訊主頁 (按一下可放大)

考量到受保護後端服務的獨特脈絡和環境因素,並非所有 Adaptive Protection 發現結果都會視為攻擊。如果您判斷快訊中描述的潛在攻擊是正常或可接受的行為,可以回報事件錯誤,協助訓練 Adaptive Protection 模型。圖表下方列出的每個攻擊事件旁都有一個按鈕,點選後會彈出互動式視窗,讓您回報事件錯誤,並提供一些選用背景資訊。回報活動錯誤有助於降低日後發生類似錯誤的機率。隨著時間推移,這項功能會提高 Adaptive Protection 的準確度。

監控、快訊與記錄功能

自動調整式防護機制的遙測資料會傳送至 Cloud Logging 和 Security Command Center。本文前幾節已說明傳送至 Cloud Logging 的 Adaptive Protection 記錄訊息。每當自動防護偵測到潛在攻擊時,系統就會產生記錄項目,每個項目都包含可信度分數,說明模型有多確信觀察到的流量異常。如要微調快訊,可以在 Cloud Logging 中設定快訊政策,只有在適應性保護記錄訊息的可信度分數高於使用者指定的門檻時,才觸發快訊。建議您先從低門檻開始,並將信賴度設為 > 0.5,以免錯過潛在攻擊的警告。如果快訊對基準率的影響程度無法接受,可以隨著時間提高快訊政策中的信賴度門檻。

Security Command Center 資訊主頁也會顯示 Adaptive Protection 的發現項目。這些指標位於「應用程式 DDoS 攻擊」類別下方的 Google Cloud Armor 資訊卡中。每項發現都包含服務詳細資料、攻擊信心度、與攻擊相關聯的簽章,以及 Adaptive Protection 資訊主頁上特定快訊的連結。以下螢幕截圖是應用程式 DDoS 攻擊嘗試的發現範例:

應用程式 DDoS 攻擊發現項目。
應用程式分散式阻斷服務攻擊發現結果 (按一下即可放大)。

Cloud Logging 項目規格

傳送至 Cloud Logging 的 Adaptive Protection 快訊包含記錄項目,內含下列元素:

  • 快訊可信度:Adaptive Protection 認為觀察到的事件是攻擊的可信度。
  • 自動部署:布林值,表示是否已觸發自動防禦機制。
  • 攻擊特徵
    • 屬性名稱:與下方 Value 相符的屬性名稱,例如特定要求標題名稱或地理來源。
    • 值:惡意流量中屬性相符的值。
    • 比對類型:Value 與攻擊流量中屬性之間的關係。這個值等於或屬於攻擊流量中的屬性子字串。
    • 攻擊可能性:如果這項要求的相關屬性與 Value 相符,則這項要求可能含有惡意內容。
    • 攻擊比例:與 Value 相符的潛在攻擊流量百分比。
    • 基準比例:符合 Value 的正常基準流量百分比。
  • 建議規則
    • 相符條件:規則相符條件中使用的運算式,用於識別惡意流量。
    • 受影響的基準率:建議規則預計會擷取受攻擊特定後端服務的良好流量百分比。
    • 政策的基準率受影響程度:建議規則預計會擷取同一安全性政策中,所有後端服務的良好流量百分比。
    • 受影響的攻擊率:建議規則預計可攔截的攻擊流量百分比。
  • 規則狀態:規則生成相關的其他詳細資料。

機器學習總覽和隱私權

  • 訓練資料和偵測資料
    • 自我調適保護機制會建立多個模型,偵測潛在攻擊並找出特徵碼。這些模型會根據專案傳入要求流量的中繼資料,判斷是否正在遭受攻擊。這類中繼資料包括:來源 IP 位址、來源地理位置,以及部分 HTTP 要求標頭的值。
    • 模型實際使用的特徵是上述信號的衍生統計屬性。也就是說,模型的訓練資料不包含任何中繼資料的實際值,例如 IP 位址和/或要求標頭值。
    • 啟用「自動防護」時,系統會為所有客戶提供一組通用的偵測模型 (僅以人工資料訓練),判斷是否發生攻擊。回報任何錯誤的攻擊事件後,系統會使用專案的專屬流量信號更新模型,這些模型僅供專案使用,不會用於其他客戶。
  • 簽名產生資料
    • 自我調適防護功能判斷可能發生攻擊後,會產生有效的攻擊簽章,協助目標快速減輕攻擊影響。為達成上述目標,您在安全性政策中啟用 Adaptive Protection 後,系統會持續記錄後端服務 (與安全性政策相關聯) 的流量指標和要求中繼資料,以瞭解基準流量特徵。
    • 由於 Adaptive Protection 需要瞭解基準流量,因此可能需要最多一小時,才會產生規則來減輕潛在攻擊。

後續步驟