您可以調整規則,在評估作業中排除要求欄位,減少偽陽性的情形。
設定規則的排除條件時,您可以將下列欄位排除在檢查範圍之外:
從規則評估作業中排除要求欄位
如要為規則設定要求欄位排除項目,請將設定與安全性政策規則建立關聯。
這些規則不使用規則 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:安全性政策名稱