個別要求記錄

Google Cloud Armor 會記錄安全性政策名稱、相符規則優先順序、相關聯的動作和相關資訊,並將這些資訊納入外部應用程式負載平衡器和外部 Proxy 網路負載平衡器的記錄中。新後端服務的記錄功能預設為停用,因此您必須啟用記錄功能,才能記錄 Cloud Armor 的完整記錄資訊。

Cloud Armor 記錄檔是 Cloud Load Balancing 記錄檔的一部分。 也就是說,Cloud Armor 記錄檔的產生作業會受到負載平衡器設定的記錄檔取樣率影響。如果降低負載平衡器的取樣率,Cloud Armor 要求記錄的取樣率也會隨之降低。此外,如果您使用跨專案服務參照,系統會在包含負載平衡器前端和網址對應的主機或服務專案下產生記錄。因此,建議前端專案的管理員將讀取記錄和指標的權限授予後端專案的管理員。

透過記錄功能,您可以查看 Cloud Armor 安全性政策評估的每個要求,以及根據優先順序最高的相符規則採取的結果或動作。舉例來說,如要查看遭拒的請求,可以使用 jsonPayload.enforcedSecurityPolicy.outcome="DENY" 或 jsonPayload.statusDetails="denied_by_security_policy" 等篩選器。

如要啟用外部應用程式負載平衡器的記錄功能,請參閱區域性外部應用程式負載平衡器記錄與監控頁面的「記錄」一節。 如要使用外部 Proxy 網路負載平衡器,請使用 Google Cloud CLI 指令,如先前「外部應用程式負載平衡器記錄和監控」頁面所列。您無法使用 Cloud de Confiance 控制台,為外部 Proxy 網路負載平衡器啟用記錄功能。

此外,您也可以設定不同的記錄層級,評估安全性政策及其規則是否正常運作。如需完整資訊,請參閱「詳細記錄」。

安全政策記錄項目

Logs Explorer中的下列記錄項目適用於 Cloud Armor 安全性政策和規則記錄。項目包含 jsonPayload 中的下列結構。HTTP 要求詳細資料會顯示在 httpRequest 訊息中。

  • statusDetails:回應代碼的文字說明。
    • redirected_by_security_policy:要求已由重新導向規則 (GOOGLE_RECAPTCHA 或 EXTERNAL_302) 重新導向。
    • denied_by_security_policy:要求遭負載平衡器拒絕,原因是 Cloud Armor 安全性政策。
    • body_denied_by_security_policy:由於 Cloud Armor 安全性政策,負載平衡器拒絕了要求主體。
  • enforcedSecurityPolicy:強制執行的安全性政策規則。
    • name:安全性政策的名稱。
    • priority:安全性政策中相符規則的優先順序數值。
    • configuredAction:相符規則中已設定的動作名稱,例如 ALLOW、DENY、GOOGLE_RECAPTCHA、EXTERNAL_302、THROTTLE (適用於節流規則)、RATE_BASED_BAN (適用於以速率為準的禁止規則)。
    • rateLimitAction:當系統比對到節流規則或根據頻率封鎖規則時,速率限制動作的相關資訊。
      • key:速率限制鍵值 (最多 36 個位元組)。如果金鑰類型為 ALL,或金鑰類型為 HTTP-HEADER 或 HTTP-COOKIE,且要求中沒有指定的標頭或 Cookie,則會省略這個欄位。
      • outcome:可能的值如下:
        • "RATE_LIMIT_THRESHOLD_CONFORM" (低於設定的頻率限制門檻時)。
        • "RATE_LIMIT_THRESHOLD_EXCEED" (高於設定的速率限制門檻時)。
        • "BAN_THRESHOLD_EXCEED" 如果高於設定的禁止門檻。
    • outcome:執行已設定動作的結果,例如 ACCEPT、DENY、REDIRECT、EXEMPT。
    • preconfiguredExprIds:觸發規則的所有預先設定 WAF 規則運算式 ID。
    • ruleNumber:安全政策規則的永久專屬 ID,設定後會持續存在。
    • rulesetId:觸發的代管規則類別名稱或 ID (例如 google:sqli:stable)。
    • rulesetVersion:相符規則中定義的版本設定 (例如 stable 或 canary)。
    • rulesetArtifact:對應用於評估的版次構件登錄檔的不透明專屬 ID。
    • threatIntelligence:適用的威脅情報比對 IP 位址清單相關資訊。
      • categories:相符的 IP 位址清單名稱。
  • previewSecurityPolicy:如果要求符合專為預覽設定的規則,則會填入 (只有在預覽規則優先順序高於強制執行規則時才會提供)。
    • name:安全性政策的名稱
    • priority:安全性政策中相符規則的優先順序數值。
    • configuredAction:相符規則中已設定的動作名稱,例如 ALLOW、DENY、GOOGLE_RECAPTCHA、EXTERNAL_302、THROTTLE (適用於節流規則)、RATE_BASED_BAN (適用於以速率為準的禁止規則)。
    • rateLimitAction:當系統比對到節流規則或根據頻率封鎖規則時,速率限制動作的相關資訊。
      • key:速率限制鍵值 (最多 36 個位元組)。如果金鑰類型為 ALL,或金鑰類型為 HTTP-HEADER 或 HTTP-COOKIE,且要求中沒有指定的標頭或 Cookie,則會省略這個欄位。
      • outcome:可能的值如下:
        • "RATE_LIMIT_THRESHOLD_CONFORM" (低於設定的頻率限制門檻時)。
        • "RATE_LIMIT_THRESHOLD_EXCEED" (高於設定的速率限制門檻時)。
        • "BAN_THRESHOLD_EXCEED" 如果高於設定的禁止門檻。
    • outcome:執行已設定動作的結果,例如 ACCEPT、DENY、REDIRECT、EXEMPT。
    • preconfiguredExprIds:觸發規則的所有預先設定 WAF 規則運算式 ID。
    • ruleNumber:安全政策規則的永久專屬 ID,設定後會持續存在。
    • rulesetId:觸發的代管規則類別名稱或 ID (例如 google:sqli:stable)。
    • rulesetVersion:相符規則中定義的版本設定 (例如 stable 或 canary)。
    • rulesetArtifact:對應用於評估的版次構件登錄檔的不透明專屬 ID。
    • threatIntelligence:適用的威脅情報比對 IP 位址清單相關資訊。
      • categories:相符的 IP 位址清單名稱。
  • enforcedEdgeSecurityPolicy: 強制執行的邊緣安全性政策規則。
    • name:安全性政策的名稱。
    • priority:安全性政策中相符規則的優先順序數值。
    • configuredAction:相符規則中已設定的動作名稱,例如 ALLOW、DENY。
    • outcome:執行設定動作的結果,例如 ACCEPT、DENY。
  • previewEdgeSecurityPolicy:如果要求符合專為預覽設定的邊緣安全政策規則,則會填入 (只有在預覽規則優先順序高於強制執行規則時才會提供)。

    • name:安全性政策的名稱。
    • priority:安全性政策中相符規則的優先順序數值。
    • configuredAction:相符規則中已設定的動作名稱,例如 ALLOW、DENY。
    • outcome:執行設定動作的結果,例如 ACCEPT、DENY。
  • evaluatedSecurityPolicies:針對這項政策評估的非終端比對規則清單 (例如僅供參考和候選人預覽比對)。

    • ruleNumber:安全政策規則的永久專屬 ID,設定後會持續存在。
    • rulesetId:觸發的代管規則類別名稱或 ID (例如 google:sqli:stable)。
    • rulesetVersion:相符規則中定義的版本設定 (例如 stable 或 canary)。
    • rulesetArtifact:對應用於評估的版次構件登錄檔的不透明專屬 ID。

查看記錄

您只能在Cloud de Confiance 控制台查看 Cloud Armor 安全性政策的記錄。

控制台

  1. 前往 Cloud de Confiance 控制台的「Cloud Armor policies」(Cloud Armor 政策) 頁面。

    前往 Cloud Armor 政策

  2. 按一下「動作」。

  3. 選取「查看記錄」。

要求記錄資料

與 Cloud Armor 搭配使用時,jsonPayload 具有下列額外欄位:

  • securityPolicyRequestData:安全政策處理要求時的相關資料,無論最終符合哪一項規則。
    • recaptchaActionToken:與 reCAPTCHA 動作權杖相關的資料。
      • score:內嵌在 reCAPTCHA 動作權杖中的使用者合法性分數。只有在要求附上 reCAPTCHA 動作權杖,且根據安全性政策規則成功解碼時,才會顯示這項屬性。詳情請參閱「強制執行 reCAPTCHA 評估」。
    • recaptchaSessionToken:與 reCAPTCHA 工作階段權杖相關的資料。
      • score:內嵌於 reCAPTCHA 工作階段權杖中的使用者合法性分數。只有在要求中附加 reCAPTCHA 工作階段權杖,且根據安全性政策規則成功解碼時,才會顯示這項屬性。
    • userIpInfo:與使用者 IP 用量相關的資料。
      • source:通常是解析使用者 IP 的標頭。
      • ipAddress:從來源欄位解析出的 IP 位址。
    • remoteIpInfo:與要求用戶端 IP 位址相關的資料。
      • ipAddress:要求的用戶端 IP 位址。
      • region_code:IP 位址的雙字母國家/地區代碼或區域代碼。
      • asn:與 IP 位址對應的五位數自治系統編號 (ASN)。
    • tlsJa4Fingerprint:如果用戶端使用 HTTPS、HTTP/2 或 HTTP/3 連線,則為 JA4 TTL/SSL 指紋。只有在指紋可供使用,且有安全性政策評估要求時才會顯示 (無論政策中的運算式是否與要求相符)。
    • tlsJa3Fingerprint:如果用戶端使用 HTTPS、HTTP/2 或 HTTP/3 連線,則為 JA3 TTL/SSL 指紋。只有在指紋可供使用,且有安全性政策評估要求時才會顯示 (無論政策中的運算式是否與要求相符)。

記錄檔範例

以下是節流規則的記錄詳細資料範例,該規則會封鎖要求:

jsonPayload: {
 enforcedSecurityPolicy: {
  priority: 100
  name: "sample-prod-policy"
  configuredAction: "THROTTLE"
  outcome: "DENY"
  rateLimitAction: {
    key:"sample-key"
    outcome:"RATE_LIMIT_THRESHOLD_EXCEED"
  }
 }
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:16:48.185763Z"

以下是封鎖要求的頻率限制規則記錄詳細資料範例:

jsonPayload: {
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 enforcedSecurityPolicy: {
  priority: 150
  name: "sample-prod-policy"
  outcome: "DENY"
  configuredAction: "RATE_BASED_BAN"
  rateLimitAction: {
    key:"sample-key"
    outcome:"BAN_THRESHOLD_EXCEED"
  }
 }
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:27:17.393244Z"

後續步驟