Google Cloud Armor 自動調整防護機制可協助您保護應用程式、網站和服務,防範 L7 分散式阻斷服務 (DDoS) 攻擊,例如 HTTP 洪水攻擊和其他高頻率第 7 層 (應用程式層級) 惡意活動。 Google Cloud 自動調整式防護機制會建構機器學習模型,執行下列動作:
- 偵測異常活動並發出警報
- 產生描述潛在攻擊的簽章
- 產生自訂 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、警報和警報政策。
- 如需一般記錄資訊,請參閱 Cloud Logging 說明文件。
- 如要瞭解快訊,請參閱 Cloud Monitoring 說明文件。
- 如需 Cloud Armor 專屬的記錄資訊,請參閱「使用要求記錄」。
為確保記錄和報表正確無誤,Cloud Armor 需要存取下列記錄。這些記錄必須儲存在 Cloud Logging 中,或傳送至 Cloud Armor 可存取的記錄值區。
networksecurity.googleapis.com/dos_attacknetworksecurity.googleapis.com/network_dos_attacknetworksecurity.googleapis.com/network_dos_attack_mitigations
設定及調整快訊
如果專案中的 Cloud Armor 安全性政策已保護您的應用程式,您可以在這些專案中啟用自動調整式防護機制。為特定安全性政策啟用 Adaptive Protection 後,與該政策相關聯的所有後端服務都會受到保護。
啟用 Adaptive Protection 後,系統會先進行至少一小時的訓練,然後才會建立可靠的基準,並開始監控流量及產生快訊。在訓練期間,Adaptive Protection 會模擬每個後端服務的專屬輸入流量和使用模式,藉此為每個後端服務建立基準。訓練期結束後,當 Adaptive Protection 在導向與該安全性政策相關聯的任何後端服務的流量中,偵測到高頻率或高用量的異常狀況時,您就會收到即時快訊。
您可以根據多項指標調整自我調整保護措施快訊。系統會將警報傳送至 Cloud Logging,其中包含信賴度、攻擊簽章、建議規則,以及與建議規則相關聯的預估受影響基準率。
- 信心水準是指 Adaptive Protection 模型預測觀察到的流量模式變化是否異常時的信心程度。
- 建議規則的受影響基準比率,代表規則擷取的現有基準流量百分比。我們提供兩種費率。第一種是相對於遭受攻擊的特定後端服務流量百分比。第二個是相對於通過安全性政策的所有流量百分比,包括所有已設定的後端服務目標 (不只是受攻擊的目標)。
您可以在 Cloud Logging 中,根據信賴度或受影響的基準費率 (或兩者並用) 篩選快訊。如要進一步瞭解如何調整快訊,請參閱管理快訊政策。
自動調整式防護機制旨在保護後端服務,免於遭受大量第 7 層 DDoS 攻擊。在下列情況中,要求不會計入「自動防護」:
- 直接從 Cloud CDN 提供的要求
- 遭 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 的「Network Security Policy」資源下產生。記錄訊息會指出遭到攻擊的後端服務,並提供信心分數,表示 Adaptive Protection 將偵測到的流量模式變化評估為異常的程度。記錄訊息也會包含攻擊簽章,說明攻擊流量的特徵,以及建議您套用哪些 Cloud Armor 規則來減輕攻擊。
瞭解攻擊特徵
自我調適防護警示會包含攻擊特徵,說明潛在攻擊的流量屬性。您可以使用簽章識別並封鎖攻擊。簽章有兩種形式:使用者可讀取的表格,以及預先建構的 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 對於描述攻擊特徵非常重要。具體來說,攻擊流量 (proportionInAttack) 中有 60% 具有這個 Referer 值,而所有流量 (proportionInBaseline) 中只有 1% 的基準流量具有相同的 Referer 值。此外,在所有符合這個 Referer 值的流量中,有 95% 是攻擊流量 (attackLikelihood)。
這些值表示,如果您封鎖 Referer 標頭欄位中含有 foo.attacker.com 的所有要求,就能成功封鎖 60% 的攻擊,以及 1% 的基準流量。
matchType 屬性會指定攻擊流量中的屬性與重要值之間的關係。可以是 MATCH_TYPE_CONTAINS 或 MATCH_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 警報也會提供以自訂規則語言表示的建議 Cloud Armor 規則。您可以使用這項規則,在 Cloud Armor 安全性政策中建立規則,以減輕攻擊影響。除了簽章外,這項快訊還會提供受影響基準流量的比例,協助您評估部署規則的影響。受影響的基準流量比率是預估的基準流量比例,與 Adaptive Protection 識別的攻擊特徵碼相符。如果您未訂閱 Cloud Armor Enterprise,Adaptive Protection 傳送的基本快訊不會包含建議您套用的 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 運算式,然後將運算式貼到新建立規則的相符條件中,或在 Cloud Armor 使用者介面的「Adaptive Protection」資訊主頁中,按一下「套用」按鈕。
如要部署規則,請在 Cloud Armor 安全性政策中建立新規則,保護警報所指的目標後端服務。接著,在設定規則時,將快訊中的 CEL 運算式複製並貼到規則的「相符條件」欄位,然後將規則動作設為 deny。在上述範例中,您會從快訊的 suggestedRule 區段複製 evaluateAdaptiveProtection('11275630857957031521') 運算式。
強烈建議您先在預覽模式中部署規則,評估規則對實際工作環境流量的影響,這麼做時,每當觸發規則,Cloud Armor 就會記錄動作和相關聯的流量,但不會對相符的流量採取任何動作。
此外,如果安全性政策附加至多個後端服務,請注意新規則的效果是否對任何後端服務造成不良影響。如果發生這種情況,請設定新的安全性政策,以減輕不必要的影響,並將政策附加至正確的後端服務。
建議您將新規則的優先順序設為高於任何動作設為允許的規則。這是因為為了達到預期影響,並盡可能減輕攻擊,規則應部署在最高邏輯優先順序位置,確保所有相符流量都會遭到規則封鎖。系統會依優先順序評估 Cloud Armor 安全性政策中的規則,並在觸發第一個相符的規則並採取相關規則動作後終止評估。如果需要為部分流量或特定用戶端授予這項規則的例外情況,可以建立優先順序較高的「允許」規則,也就是數值較低的規則。如要進一步瞭解規則優先順序,請參閱「規則評估順序」。
自動部署建議的規則
您也可以將 Adaptive Protection 設為自動部署建議規則。如要啟用自動規則部署功能,請在比對條件中使用 evaluateAdaptiveProtectionAutoDeploy() 運算式,建立優先順序和動作自選的預留位置規則。如果自動調整式防護機制將要求識別為攻擊流量,這項規則的評估結果為 true,Cloud Armor 會對攻擊要求套用動作。系統支援所有 Cloud Armor 動作類型,例如 allow、deny、throttle 和 redirect。此外,您也可以使用預覽模式,記錄規則是否已觸發,但不採取設定的動作。
如果您在外部應用程式負載平衡器前使用上游 Proxy (例如第三方 CDN),建議您設定 userIpRequestHeaders 欄位,將供應商的 IP 位址 (或 IP 位址範圍) 加入許可清單。這樣一來,系統就不會誤判 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 | 無法建立可用的規則。 |
| 錯誤 | 建立規則時發生不明錯誤。 |
監控、意見回饋及回報事件錯誤
如要查看或操作 Adaptive Protection 資訊主頁,您必須具備下列權限。
compute.securityPolicies.listcompute.backendServices.listlogging.logEntries.list
在任何 Cloud Armor 安全性政策上啟用自動調整式防護機制後,您可以在「網路安全」>「Cloud Armor」面板下方看到下圖所示頁面。圖表會顯示所選安全性政策和後端服務在所選時間範圍內的流量。圖表上會標註 Adaptive Protection 偵測到的潛在攻擊事件,圖表下方也會列出這些事件。按一下特定攻擊事件時,側邊視窗會以表格格式顯示攻擊簽章和建議規則。這與「Cloud Logging 項目規格」一文所述的 Cloud Logging 記錄檔項目資訊相同。按一下「套用」按鈕,將建議的規則新增至同一項安全性政策。
考量到受保護後端服務的獨特背景脈絡和環境因素,並非所有 Adaptive Protection 發現事項都會視為攻擊。如果您判斷快訊描述的潛在攻擊是正常或可接受的行為,可以回報事件錯誤,協助訓練 Adaptive Protection 模型。圖表下方列出的每個攻擊事件旁都有一個按鈕,點選後會彈出互動式視窗,讓您回報事件錯誤,並提供一些選用背景資訊。回報事件錯誤有助於降低日後發生類似錯誤的機率。隨著時間推移,這項功能會提高 Adaptive Protection 的準確度。
監控、快訊和記錄
自動調整式防護機制的遙測資料會傳送至 Cloud Logging 和 Security Command Center。本文前幾節已說明傳送至 Cloud Logging 的 Adaptive Protection 記錄訊息。每當自動防護偵測到潛在攻擊時,系統就會產生記錄項目,每個項目都包含可信度分數,說明模型有多確信觀察到的流量異常。如要微調快訊,可以在 Cloud Logging 中設定快訊政策,只有在 Adaptive Protection 記錄訊息的可信度分數高於使用者指定的門檻時,才觸發快訊。建議您先從低門檻開始,並將信賴度設為 > 0.5,以免錯過潛在攻擊的警告。如果快訊對基準率的影響程度令人無法接受,可以隨著時間提高快訊政策中的信賴度門檻。
Security Command Center 資訊主頁也會顯示 Adaptive Protection 的發現項目。這些指標位於「應用程式分散式阻斷服務攻擊」類別下方的 Cloud Armor 資訊卡中。每項發現結果都包含服務詳細資料、攻擊信心指數、與攻擊相關聯的簽章,以及 Adaptive Protection 資訊主頁上特定快訊的連結。以下螢幕截圖顯示應用程式 DDoS 攻擊嘗試的發現事項範例:
Cloud Logging 項目規格
傳送至 Cloud Logging 的 Adaptive Protection 快訊包含記錄項目,內含下列元素:
- 快訊可信度:Adaptive Protection 觀察到的事件是攻擊的可信度。
- 自動部署:布林值,表示是否已觸發自動防禦機制。
- 攻擊特徵
- 屬性名稱:與下方
Value相符的屬性名稱,例如特定要求標題名稱或地理來源。 - 值:惡意流量中屬性相符的值。
- 比對類型:
Value與攻擊流量中屬性之間的關係。這個值等於或屬於攻擊流量中的屬性子字串。 - 攻擊可能性:如果這項要求的相關屬性與
Value相符,則這項要求可能含有惡意內容。 - 攻擊比例:與
Value相符的潛在攻擊流量百分比。 - 基準比例:符合
Value的正常基準流量百分比。
- 屬性名稱:與下方
- 建議規則
- 相符條件:規則相符條件中使用的運算式,用於識別惡意流量。
- 受影響的基準率:建議規則預計可擷取的良好流量百分比,這些流量會傳送至遭受攻擊的特定後端服務。
- 政策的受影響基準率:建議規則預計會擷取相同安全性政策中,所有後端服務的良好流量百分比。
- 受影響的攻擊率:建議規則預計可攔截的攻擊流量百分比。
- 規則狀態:規則生成相關的其他詳細資料。
機器學習總覽和隱私權
- 訓練資料和偵測資料
- 自我調適防護會建立多個模型,偵測潛在攻擊並找出特徵碼。這些模型會根據專案傳入要求流量的中繼資料,判斷是否正在遭受攻擊。這類中繼資料包括:用戶端 IP 位址、用戶端地理位置,以及部分 HTTP 要求標頭的值。
- 模型實際使用的特徵是上述信號的衍生統計屬性。也就是說,模型的訓練資料不包含任何中繼資料的實際值,例如 IP 位址和/或要求標頭值。
- 首次啟用「自動調整防護」時,系統會為所有客戶共用一組常見的偵測模型 (僅以人工資料訓練),判斷是否發生攻擊。回報任何錯誤的攻擊事件後,系統會使用專案的特定流量信號更新模型,這些模型僅供專案使用,不會用於其他客戶。
- 簽名產生資料
- 當「適應性防護」判斷可能發生攻擊時,會產生有效的攻擊簽章,協助目標快速減輕攻擊影響。為達成上述目標,您在安全性政策中啟用 Adaptive Protection 後,系統會持續記錄後端服務 (與安全性政策相關聯) 的流量指標和要求中繼資料,以瞭解基準流量特徵。
- 由於 Adaptive Protection 需要瞭解基準流量,因此可能需要最多一小時,才會產生規則來防範潛在攻擊。