Ottimizza le regole delle policy di sicurezza

Puoi ottimizzare le regole escludendo i campi di richiesta dalla valutazione per ridurre i falsi positivi.

Quando configuri le esclusioni per una regola, puoi escludere i seguenti campi dall'ispezione:

Escludi i campi di richiesta dalla valutazione delle regole

Per configurare un'esclusione di campi della richiesta per una regola, associa la configurazione a una regola della policy di sicurezza.

Queste regole non utilizzano ID regola. In alternativa, puoi configurare il flag --target-rule-set con uno dei seguenti valori:

  • cel (--target-rule-set "cel"): applica le esclusioni solo alle regole CEL personalizzate nella regola della policy di sicurezza.
  • * (--target-rule-set "*", esclusione globale): applica le esclusioni a tutte le regole associate alla policy di sicurezza, incluse le regole CEL personalizzate e quelle che utilizzano evaluatePreconfiguredWaf().

Nelle policy di sicurezza del backend (sia globali che regionali), puoi configurare fino a 100 di ciascuno dei seguenti elementi per target (cel o *):

  • Intestazioni delle richieste
  • Cookie della richiesta
  • Parametri di query della richiesta
  • URI della richiesta
  • Corpi delle richieste

Gli operatori di campo disponibili sono:

  • EQUALS: corrisponde se il valore del campo è uguale al valore specificato.
  • STARTS_WITH: corrisponde se il valore del campo inizia con il valore specificato.
  • ENDS_WITH: corrisponde se il valore del campo termina con il valore specificato.
  • CONTAINS: corrisponde se il valore del campo contiene il valore specificato.
  • EQUALS_ANY: corrisponde se il valore del campo è un valore qualsiasi.

Intestazioni delle richieste

Puoi escludere intestazioni della richiesta specifiche dall'ispezione durante la valutazione delle regole utilizzando i relativi nomi nel campo di esclusione.

Quando un'intestazione della richiesta corrisponde a un'esclusione, l'intera voce dell'intestazione (sia il nome che il valore) viene rimossa dalla mappa request.headers prima della valutazione della regola.

Esempio

L'esempio seguente aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per escludere dalla valutazione delle regole (cel) le intestazioni della richiesta che iniziano con abc o terminano con 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"

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza

Cookie della richiesta

Puoi escludere cookie di richiesta specifici dall'ispezione durante la valutazione delle regole utilizzando i relativi nomi nel campo di esclusione.

Quando un cookie di richiesta corrisponde a un'esclusione, l'intera voce del cookie (sia il nome che il valore) viene esclusa dagli attributi della richiesta prima della valutazione della regola.

Esempio

Il seguente esempio aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per escludere i cookie della richiesta che iniziano con session_ dalla valutazione delle regole (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_"

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza

Parametri di query della richiesta

Puoi escludere parametri di richiesta specifici dall'ispezione durante la valutazione delle regole utilizzando i relativi nomi nel campo di esclusione. Il flag --request-query-param-to-exclude si applica sia ai parametri di ricerca dell'URL sia ai parametri del corpo della richiesta analizzati (JSON, dati del modulo e GraphQL).

Quando un parametro corrisponde a un'esclusione, l'intera voce del parametro (sia la chiave sia il valore) viene rimossa da request.params prima della valutazione della regola, quindi has(request.params.param_name) restituisce false.

Per i corpi delle richieste analizzati, puoi utilizzare la notazione con punto per scegliere come target i campi nidificati e gli elementi dell'array:

  • Campo di primo livello: val=user
  • Campo nidificato: val=user.name
  • Elemento array: val=items.0.name

Esempio

L'esempio seguente aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per escludere dalla valutazione delle regole (cel) il parametro di query dell'URL bad-param, il campo JSON nidificato user.name e il campo dell'elemento dell'array 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"

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza

URI della richiesta

Puoi escludere gli URI dalla riga della richiesta (esclusi i dati della stringa di query) dall'ispezione durante la valutazione delle regole.

Quando escludi un URI, l'intero campo URI viene escluso dall'ispezione.

Esempio

L'esempio seguente aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per escludere gli URI della richiesta che contengono /bad-path dalla valutazione delle regole (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"

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza

Corpi delle richieste

Puoi escludere valori specifici del corpo della richiesta dall'ispezione durante la valutazione delle regole.

Quando un corpo della richiesta corrisponde a un'esclusione, l'attributo request.body viene escluso dalla valutazione della regola.

Esempio

L'esempio seguente aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per escludere dalla valutazione delle regole (cel) i corpi delle richieste che contengono 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"

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza

Valori del campo

Devi specificare un valore del campo se utilizzi un operatore di campo diverso da EQUALS_ANY.

Per le intestazioni della richiesta, i cookie della richiesta e i parametri di query della richiesta, il set di caratteri consentiti per i valori dei campi include i seguenti caratteri:

  • !, #, $, %, &, *, +, -, ., ^, _, `, |, ~
  • Caratteri alfabetici da A a Z (sia maiuscoli che minuscoli)
  • Caratteri numerici da 0 a 9

Per i corpi delle richieste, il set di caratteri consentiti per i valori dei campi include tutti i caratteri ASCII stampabili, ad eccezione di ', \`,(, and)`:

  • Spazio () e caratteri speciali: !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Caratteri alfabetici da A a Z (sia maiuscoli che minuscoli)
  • Caratteri numerici da 0 a 9

Quando applichi le esclusioni per questi campi della richiesta, il valore del campo di configurazione (val=) viene confrontato senza distinzione tra maiuscole e minuscole (dopo la trasformazione) con quanto segue per determinare quali entità escludere dall'ispezione:

  • Intestazioni della richiesta: corrisponde al nome dell'intestazione (chiave) per escludere l'intera intestazione (sia il nome che il valore).
  • Cookie della richiesta: corrisponde al nome del cookie per escludere l'intero cookie (sia il nome che il valore).
  • Parametri di query della richiesta: corrisponde al nome del parametro o al percorso JSON nidificato (chiave) per escludere l'intero parametro (sia la chiave che il valore).
  • Corpi delle richieste: corrisponde alla stringa di contenuti del corpo della richiesta per escludere l'intero attributo request.body.

Non è necessario eseguire una codifica aggiuntiva se vuoi escludere un carattere specifico che non fa parte del set di caratteri consentiti.

Per gli URI della richiesta, il valore del campo deve essere fornito in formato URI con le seguenti limitazioni dei componenti:

Componente Limitazione
Scheme Consentito, ma limitato a http o https
Host Consentito (può essere un indirizzo IP)
Porta Consentito
Percorso Consentito
Query Non consentito
Fragment Non consentito

Quando applichi le esclusioni per gli URI della richiesta, i valori dei campi di configurazione vengono confrontati senza distinzione tra maiuscole e minuscole (dopo la trasformazione) con gli URI della riga della richiesta, escludendo la stringa di query. Gli URI della riga della richiesta possono essere relativi o assoluti. Tieni presente questo aspetto quando configuri le esclusioni per gli URI della richiesta.

Rimuovi esclusioni

Per rimuovere le esclusioni dei campi della richiesta da una regola della policy di sicurezza, utilizza il comando remove-preconfig-waf-exclusion. Puoi rimuovere esclusioni di campi specifiche specificando i flag di esclusione dei campi corrispondenti oppure omettere i flag dei campi per rimuovere tutte le esclusioni per il set di regole di destinazione (cel o *).

Esempi

L'esempio seguente aggiorna la regola nella policy di sicurezza POLICY_NAME in PRIORITY per rimuovere l'esclusione per le intestazioni della richiesta che iniziano con abc dalla valutazione delle regole (cel):

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"

L'esempio seguente omette i flag dei campi per rimuovere tutte le esclusioni dei campi della richiesta configurate per la valutazione delle regole (cel) sulla regola in PRIORITY:

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

Sostituisci quanto segue:

  • PRIORITY: la priorità della regola
  • POLICY_NAME: il nome della policy di sicurezza