調整安全性政策規則

您可以調整規則,在評估作業中排除要求欄位,減少偽陽性的情形。

設定規則的排除條件時,您可以將下列欄位排除在檢查範圍之外:

從規則評估作業中排除要求欄位

如要為規則設定要求欄位排除項目,請將設定與安全性政策規則建立關聯。

這些規則不使用規則 ID。您可以改為使用下列其中一個值設定 --target-rule-set 標記:

  • cel (--target-rule-set "cel"):僅將排除條件套用至該安全性政策規則中的自訂 CEL 規則。
  • * (--target-rule-set "*",全域排除):將排除項目套用至該安全性政策附加的所有規則,包括自訂 CEL 規則和使用 evaluatePreconfiguredWaf() 的規則。

在後端安全性政策 (全域和區域) 中,每個目標 (cel 或 *) 最多可設定 100 個下列項目:

  • 要求標頭
  • 要求 Cookie
  • 要求查詢參數
  • 要求網址
  • 要求主體

可用的欄位運算子如下:

  • EQUALS:如果欄位值等於指定值,則視為相符。
  • STARTS_WITH:如果欄位值開頭為指定值,則視為相符。
  • ENDS_WITH:如果欄位值結尾為指定值,則視為相符。
  • CONTAINS:如果欄位值包含指定值,則視為相符。
  • EQUALS_ANY:如果欄位值為任何值,則視為相符。

要求標頭

在評估規則時,您可以在排除欄位中使用標頭名稱,將特定要求標頭排除在檢查範圍之外。

如果要求標頭與排除項目相符,系統會在評估規則前,從 request.headers 對應中移除整個標頭項目 (包括名稱和值)。

範例

下列範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,從規則評估 (cel) 中排除開頭為 abc 或結尾為 xyz 的要求標頭:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc" \
    --request-header-to-exclude "op=ENDS_WITH,val=xyz"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱

要求 Cookie

在排除欄位中輸入 Cookie 名稱,即可在規則評估期間排除特定要求 Cookie,不進行檢查。

如果要求 Cookie 符合排除條件,系統會在評估規則前,從要求屬性中排除整個 Cookie 項目 (包括名稱和值)。

範例

以下範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,將開頭為 session_ 的要求 Cookie 排除在規則評估 (cel) 之外:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-cookie-to-exclude "op=STARTS_WITH,val=session_"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱

要求查詢參數

在規則評估期間,您可以在排除欄位中使用參數名稱,將特定要求參數排除在檢查範圍之外。--request-query-param-to-exclude 旗標適用於網址查詢參數和剖析的要求主體參數 (JSON、表單資料和 GraphQL)。

如果參數符合排除條件,系統會在評估規則前,從 request.params 中移除整個參數項目 (包括鍵和值),因此 has(request.params.param_name) 會評估為 false。

對於剖析後的要求主體,您可以使用點標記法指定巢狀欄位和陣列項目:

  • 頂層欄位:val=user
  • 巢狀欄位:val=user.name
  • 陣列項目:val=items.0.name

範例

下列範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,從規則評估 (cel) 中排除網址查詢參數 bad-param、巢狀 JSON 欄位 user.name 和 JSON 陣列項目欄位 items.0.name:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-query-param-to-exclude "op=EQUALS,val=bad-param" \
    --request-query-param-to-exclude "op=EQUALS,val=user.name" \
    --request-query-param-to-exclude "op=EQUALS,val=items.0.name"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱

要求網址

您可以在規則評估期間,從要求行 (不含查詢字串資料) 排除 URI,不進行檢查。

排除 URI 時,系統會從檢查範圍中排除整個 URI 欄位。

範例

以下範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,將包含 /bad-path 的要求 URI 從規則評估 (cel) 中排除:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-uri-to-exclude "op=CONTAINS,val=/bad-path"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱

要求主體

在規則評估期間,您可以排除特定要求主體值,不進行檢查。

如果要求主體與排除項目相符,系統就不會將 request.body 屬性納入規則評估。

範例

以下範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,從規則評估 (cel) 中排除含有 bad-body-value 的要求主體:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-body-to-exclude "op=CONTAINS,val=bad-body-value"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱

欄位值

如果使用的欄位運算子不是 EQUALS_ANY,則必須指定欄位值。

要求標頭、要求 Cookie 和要求查詢參數的欄位值,允許使用的字元集包含下列字元:

  • !、#、$、%、&、*、+、-、.、^、_、`、|、~
  • 英文字母 A 到 Z (大小寫皆可)
  • 數字字元 0 到 9

如果是要求主體,欄位值允許的字元集包含所有可列印的 ASCII 字元,但不包括 '、\`,(, and)`:

  • 空格 () 和特殊字元:!、"、#、$、%、&、*、+、,、-、.、/、:、;、<、=、>、?、@、[、]、^、_、`、{、|、}、~
  • 英文字母 A 到 Z (大小寫皆可)
  • 數字字元 0 到 9

對這些要求欄位套用排除項目時,系統會將設定的欄位值 (val=) 與下列項目進行不區分大小寫的比較 (轉換後),判斷要從檢查中排除哪些實體:

  • 要求標頭:比對標頭名稱 (鍵),排除整個標頭 (名稱和值)。
  • 要求 Cookie:比對 Cookie 名稱,排除整個 Cookie (名稱和值)。
  • 要求查詢參數:比對參數名稱或巢狀 JSON 路徑 (鍵),排除整個參數 (鍵和值)。
  • 要求主體:比對要求主體內容字串,排除整個 request.body 屬性。

如要排除不屬於允許字元集的特定字元,則不需執行額外編碼。

如果是要求 URI,欄位值必須採用 URI 格式,並遵守下列元件限制:

元件 限制
配置 允許,但僅限http或https
主機 允許 (可以是 IP 位址)
通訊埠 已允許
路徑 已允許
查詢 不允許
Fragment 不允許

套用要求 URI 排除項目時,系統會將設定的欄位值與要求行中的 URI 進行比較 (不區分大小寫,且不含查詢字串)。要求行中的 URI 可以是相對或絕對路徑。設定要求 URI 的排除條件時,請考量這一點。

移除排除條件

如要從安全性政策規則中移除要求欄位排除項目,請使用 remove-preconfig-waf-exclusion 指令。您可以指定對應的欄位排除旗標,移除特定欄位排除項目,也可以省略欄位旗標,移除該目標規則集 (cel 或 *) 的所有排除項目。

範例

以下範例會更新 PRIORITY 的安全性政策 POLICY_NAME 中的規則,從規則評估 (cel) 中移除開頭為 abc 的要求標頭排除項目:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc"

下列範例省略欄位旗標,移除為規則評估 (cel) 設定的所有要求欄位排除項目,規則位於 PRIORITY:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel"

更改下列內容:

  • PRIORITY:規則的優先順序
  • POLICY_NAME:安全性政策名稱