POST 主體內容剖析

本頁面說明如何設定 POST 主體內容剖析功能。這項選用功能可搭配 Google Cloud Armor 安全性政策使用。

根據預設,Google Cloud Armor 會評估 POST 主體的完整內容,並以統一字串 (須遵守主體大小限制) 比對預先設定的網頁應用程式防火牆規則中的簽章。如果要求包含 JSON 等替代編碼,訊息的結構化元件 (非使用者指定) 可能會觸發與預先設定的 WAF 簽章相符的項目。為避免雜訊並降低誤判風險,如果受保護的工作負載符合下列條件,建議您設定 Google Cloud Armor,針對任何支援的內容類型啟用替代剖析方式:

  • 提供 REST API
  • 使用 GraphQL
  • 接收任何含有 JSON 編碼內容的要求。

您可以針對每項安全性政策,啟用或停用 POST 要求 JSON 主體內容的剖析功能。如果 Content-Type 標頭設為 application/json,請在 Google Cloud CLI 中使用 --json-parsing 旗標。

這項功能預設為停用。標記的語法如下:

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

這個旗標僅適用於 gcloud compute security-policies update。除非您在檔案中建立安全性政策,然後匯入該檔案,否則無法使用這個選項建立新的安全性政策。詳情請參閱「匯入安全性政策」。

使用 JSON 剖析

在下列範例中,您會設定自訂 Content-Type 標頭值清單,並套用替代剖析方式。這個範例會更新安全性政策 POLICY_NAME,啟用 JSON 剖析功能,並指定內容類型 application/jsonapplication/vnd.api+jsonapplication/vnd.collection+jsonapplication/vnd.hyper+json

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

使用 GraphQL 剖析

如要設定 GraphQL 剖析功能,請更新安全性政策,將 --json-parsing 標記設為 STANDARD_WITH_GRAPHQL

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

記錄

系統會透過 Cloud Logging 記錄每個經過 Google Cloud Armor 安全性政策評估的 HTTP(S) 要求。記錄檔會提供詳細資料,例如套用的安全性政策名稱、相符的規則,以及是否強制執行規則。系統預設會停用新後端服務資源的記錄要求。如要記錄 Google Cloud Armor 要求,您必須為受安全性政策保護的每個後端服務啟用 HTTP(S) 記錄設定。 詳情請參閱「全域外部應用程式負載平衡器記錄與監控」。

限制

設定 JSON 剖析時,請注意下列限制:

  • Google Cloud Armor 預設會檢查前 8 KB 的 HTTP POST 主體。您可以將這個限制設為 8 KB、16 KB、32 KB、48 KB 或 64 KB。如果 JSON 內容超過設定的檢查上限,Google Cloud Armor 會將 JSON 剖析至上限,然後由任何預先設定的 WAF 規則檢查。

    如要進一步瞭解如何在使用預先設定的網頁應用程式防火牆規則時,設定要求主體的檢查限制,請參閱「POST 和 PATCH 主體檢查限制」。

  • 如果 JSON 剖析器未傳回任何結果,系統可能會嘗試剖析 URI。如果 URI 剖析器未傳回任何名稱/值參數,或只傳回部分名稱/值參數,系統可能會將整個或部分字串視為檢查的參數名稱。

後續步驟