Gestisci le policy di sicurezza di Cloud Armor

Questa pagina descrive come gestire le policy di sicurezza di Google Cloud Armor e filtrare il traffico in entrata verso la tua applicazione. I criteri di sicurezza di Cloud Armor aiutano a proteggere le tue applicazioni e i tuoi servizi web da attacchi distributed denial of service (DDoS) e altre minacce su internet. L'applicazione di una solida security posture richiede la gestione delle tue norme di sicurezza tramite creazione, test e consolidamento. Per creare o visualizzare le policy di sicurezza, consulta Creare e visualizzare le policy di sicurezza di Cloud Armor.

Gestisci le policy di sicurezza

Le sezioni seguenti descrivono come elencare, aggiornare, eliminare o testare le policy di sicurezza.

Elenca policy di sicurezza

Segui i passaggi descritti in questa sezione per elencare le policy di sicurezza di Cloud Armor nel tuo progetto.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Per visualizzare una policy, fai clic sul nome della policy specifica nell'elenco.

gcloud

gcloud compute security-policies list

Ad esempio:

gcloud compute security-policies list

Output:

NAME: my-policy
REGION: us-central1

Per saperne di più, consulta gcloud compute security-policies list.

Aggiorna le policy di sicurezza

I passaggi descritti in questa sezione mostrano come aggiornare una policy di sicurezza di Cloud Armor. Puoi modificare la descrizione della policy, la regola predefinita, il servizio di backend di destinazione o aggiungere regole.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Trova il nome della policy che vuoi aggiornare nell'elenco delle policy e fai clic su Menu per quella policy.

    • Per aggiornare la descrizione o l'azione della regola predefinita, seleziona Modifica, apporta le modifiche e poi fai clic su Aggiorna.
    • Per aggiungere una regola, seleziona Aggiungi regola e segui i passaggi descritti in Aggiungi regole a una policy di sicurezza.
    • Per sostituire il servizio di backend di destinazione, seleziona Applica policy alla destinazione, fai clic su Aggiungi destinazione, seleziona una destinazione e poi fai clic su Aggiungi.

gcloud

Per aggiornare una policy di sicurezza, segui questi passaggi di Google Cloud CLI:

Elimina policy di sicurezza

Questa sezione descrive come eliminare una policy di sicurezza di Cloud Armor. Rimuovi tutti i servizi di backend dalla policy prima di eliminarla.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Seleziona la casella di controllo accanto alle norme da eliminare.

  3. Fai clic su Elimina nell'angolo in alto a destra della pagina.

gcloud

Utilizza gcloud compute security-policies delete NAME. Sostituisci NAME con il nome della policy di sicurezza:

gcloud compute security-policies delete NAME

Testa le policy di sicurezza

Ti consigliamo di eseguire il deployment di tutte le nuove regole in modalità di anteprima, quindi esamina i log delle richieste per verificare che le policy e le regole si comportino come previsto.

Gestisci le regole delle policy di sicurezza

Le sezioni seguenti descrivono come elencare, aggiungere, aggiornare o eliminare le regole della policy di sicurezza.

Elenca le regole in una policy di sicurezza

Segui i passaggi descritti in questa sezione per elencare le regole in una policy di sicurezza di Cloud Armor.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza specifica. La pagina Dettagli policy mostra le regole della policy nella scheda Regole.

gcloud

Utilizza il seguente comando gcloud per elencare tutte le regole in una policy di sicurezza:

gcloud compute security-policies describe NAME \

Utilizza il seguente comando gcloud per elencare tutte le regole in una singola policy di sicurezza in una regione specificata insieme a una descrizione della policy:

gcloud compute security-policies describe NAME \
  --region REGION

Utilizza il seguente comando gcloud per descrivere una regola:

gcloud compute security-policies rules describe PRIORITY \
    --security-policy POLICY_NAME

Ad esempio, il comando seguente descrive la regola con priorità 1000 nella policy di sicurezza my-policy:

gcloud compute security-policies rules describe 1000 \
    --security-policy my-policy

Output:

action: deny(403)
description: block traffic from 192.0.2.0/24 and 198.51.100.0/24
kind: compute#securityPolicyRule
match:
  srcIpRanges:
  - '192.0.2.0/24'
  - '198.51.100.0/24'
preview: false
priority: 1000

Per saperne di più, consulta gcloud compute security-policies describe.

Aggiungi regole a una policy di sicurezza

Segui i passaggi descritti in questa sezione per aggiungere regole a una policy di sicurezza di Cloud Armor.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza per aprire la pagina Dettagli policy.

  3. Al centro della pagina, fai clic sulla scheda Regole.

  4. Fai clic su Aggiungi regola.

  5. (Facoltativo) Inserisci una descrizione della regola.

  6. Seleziona la modalità:

    • Modalità di base: consente o nega il traffico in base agli indirizzi IP o agli intervalli IP.
    • Modalità avanzata: consente o nega il traffico in base alle espressioni della regola.
  7. Nel campo Corrispondenza, specifica le condizioni a cui si applica la regola:

    • Modalità base: inserisci da uno (1) a 10 intervalli di indirizzi IP a cui deve corrispondere la regola. Puoi aggiungere un massimo di 10 intervalli di indirizzi IP. Per i limiti, consulta Quote e limiti di Cloud Armor.

    • Modalità avanzata:

    • La seguente espressione corrisponde alle richieste provenienti dall'indirizzo IP 1.2.3.4 che contengono la stringa example nell'intestazione User-Agent:

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')
      
    • La seguente espressione corrisponde alle richieste che hanno un cookie con un valore specifico:

          has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        

    • La seguente espressione corrisponde alle richieste provenienti dalla regione AU:

          origin.region_code == 'AU'
        

    • La seguente espressione corrisponde alle richieste provenienti dalla regione AU che non rientrano nell'intervallo IP specificato:

          origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
        

    • La seguente espressione corrisponde alle richieste se l'URI corrisponde a un'espressione regolare:

          request.path.matches('/example_path/')
        

    • La seguente espressione corrisponde alle richieste se l'intestazione user-id contiene un valore codificato in Base64 che, una volta decodificato, contiene una stringa specifica:

          has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        

    • La seguente espressione utilizza un insieme di espressioni preconfigurato per la corrispondenza con gli attacchi SQLi:

          evaluatePreconfiguredWaf('sqli-stable')
        

  8. Nell'elenco Azione, seleziona Consenti o Nega.

  9. Se stai configurando una regola Nega, seleziona un messaggio di Stato di negazione.

  10. Per attivare la modalità di anteprima per la regola, seleziona Attiva.

  11. Nel campo Priorità, inserisci un numero intero positivo.

  12. Fai clic su Aggiungi.

gcloud

Utilizza il comando gcloud compute security-policies rules create PRIORITY. Sostituisci PRIORITY con la priorità della regola nella policy:

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME \
    --description DESCRIPTION \
    --src-ip-ranges IP_RANGES | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ] \
    --preview

Ad esempio, il seguente comando aggiunge una regola con priorità 1000 per bloccare il traffico proveniente dagli intervalli di indirizzi IP 192.0.2.0/24 e 198.51.100.0/24:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
    --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
    --action "deny-403"

Utilizza il flag --expression per specificare una condizione. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP 1.2.3.4 che contiene la stringa example nell'intestazione User-Agent:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
    --action allow \
    --description "Block User-Agent 'example'"

Il seguente comando aggiunge una regola per bloccare le richieste se il cookie della richiesta contiene un valore specifico:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
    --action deny-403 \
    --description "Cookie Block"

Il seguente comando aggiunge una regola per bloccare le richieste provenienti dalla regione AU:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == 'AU'" \
    --action deny-403 \
    --description "AU block"

Il seguente comando aggiunge una regola per bloccare le richieste provenienti dalla regione AU che non rientrano nell'intervallo IP specificato:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
    --action deny-403 \
    --description "country and IP block"

Il seguente comando aggiunge una regola per bloccare le richieste con un URI che corrisponde a un'espressione regolare:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "request.path.matches('/example_path/')" \
    --action deny-502 \
    --description "regex block"

Il seguente comando aggiunge una regola per bloccare le richieste se il valore decodificato in Base64 dell'intestazione user-id contiene un valore specifico:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
    --action deny-403 \
    --description "country and IP block"

Il seguente comando aggiunge una regola che utilizza un set di espressioni preconfigurate per mitigare gli attacchi SQLi:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "evaluatePreconfiguredWaf('sqli-stable')" \
    --action deny-403

Aggiorna una singola regola in una policy di sicurezza

Questa sezione descrive come aggiornare una singola regola in una policy di sicurezza di Cloud Armor. Per aggiornare più regole in modo atomico, vedi Aggiornamento atomico di più regole in una policy di sicurezza.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza per aprire la pagina Dettagli policy.

  3. Al centro della pagina, fai clic sulla scheda Regole.

  4. Accanto alla regola che vuoi aggiornare, fai clic su Modifica. Viene visualizzata la pagina Modifica regola.

  5. Apporta le modifiche e fai clic su Aggiorna.

gcloud

Utilizza il seguente comando per aggiornare una regola. Puoi aggiornare una sola policy di sicurezza alla volta:

gcloud compute security-policies rules update PRIORITY [ \
    --security-policy POLICY_NAME  \
    --description DESCRIPTION  \
    --src-ip-ranges IP_RANGES  | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
    --preview
  ]
  

Ad esempio, il comando seguente aggiorna una regola con priorità 1111 per consentire il traffico dall'intervallo di indirizzi IP 192.0.2.0/24:

gcloud compute security-policies rules update 1111 \
    --security-policy my-policy \
    --description "allow traffic from 192.0.2.0/24" \
    --src-ip-ranges "192.0.2.0/24" \
    --action "allow"

Per ulteriori informazioni sul comando precedente, consulta gcloud compute security-policies rules update.

Per aggiornare la priorità di una regola, utilizza l'API REST. Consulta securityPolicies.patchRule.

Utilizzare il generatore di condizioni di corrispondenza

Il generatore di condizioni di corrispondenza è un'interfaccia visiva nella console Cloud de Confiance che ti aiuta a creare espressioni di regole Cloud Armor complesse senza scrivere codice Common Expression Language (CEL). Anziché scrivere codice, puoi utilizzare l'interfaccia utente strutturata del builder per combinare condizioni e logica di gruppo, il che può aiutarti a evitare errori di sintassi e a visualizzare meglio la struttura delle regole. Il generatore supporta elenchi piatti e logica nidificata fino a cinque livelli di espressioni. Utilizza questo strumento quando configuri le regole per proteggere i backend multicloud o le implementazioni ibride, in cui potrebbe essere necessario esaminare attributi di richiesta specifici prima di instradare il traffico.

Funzionalità del generatore di condizioni di corrispondenza

Il generatore di condizioni di corrispondenza include le seguenti funzionalità:

  • Logica e nidificazione: combina più condizioni utilizzando gli operatori AND e OR. Lo strumento supporta il raggruppamento e l'annidamento di un massimo di cinque espressioni.
  • Trasformazioni delle stringhe: per gli attributi basati su stringhe (ad esempio request.path o request.headers), applica le trasformazioni per normalizzare i dati prima della valutazione. Le trasformazioni supportate includono:
    • Minuscole e maiuscole
    • Decodifica Base64
    • Decodifica URL e Decodifica URL (Unicode)
    • Converti UTF-8 in Unicode
  • Analisi bidirezionale: passa dal generatore di condizioni di corrispondenza visivo all'editor di condizioni di corrispondenza di testo non elaborato. La UI analizza il codice CEL non elaborato in blocchi visivi automaticamente.
  • Supporto delle funzioni: il builder fornisce controlli UI per le espressioni basate su funzioni, come regole WAF preconfigurate, gruppi di indirizzi e Threat Intelligence.

Limitazioni

Il generatore di condizioni di corrispondenza è l'interfaccia predefinita per la creazione di regole avanzate. Se un'espressione contiene una logica non supportata (ad esempio macro sconosciute), il builder viene disattivato. In questi casi, utilizza il testo non elaborato nell'editor della condizione di corrispondenza per modificare la regola.

Inoltre, la disponibilità di determinate espressioni nel builder dipende dal livello Google Cloud Armor Enterprise del tuo progetto e dal tipo di policy di sicurezza.

Aggiorna in modo atomico più regole in una policy di sicurezza

Puoi utilizzare la funzionalità di aggiornamento atomico per applicare le modifiche a più regole in un unico aggiornamento. Gli aggiornamenti di una singola regola potrebbero causare un comportamento imprevisto, ad esempio errori, perché le regole vecchie e nuove potrebbero sovrapporsi per un breve periodo.

Per aggiornare più regole in modo atomico, esporta la policy di sicurezza corrente in un file JSON o YAML, quindi modificalo. Utilizza il file modificato per creare una policy di sicurezza, quindi cambia la policy di sicurezza per i servizi di backend.

gcloud

  1. Esporta la policy da aggiornare, come mostrato nell'esempio seguente:

    gcloud compute security-policies export my-policy \
        --file-name my-file \
        --file-format yaml
    

    La policy esportata sarà simile all'esempio seguente:

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  2. Utilizza un editor di testo per modificare la policy. Ad esempio, puoi modificare le priorità delle regole esistenti e aggiungere una regola:

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-new-rule
          match:
            config:
              srcIpRanges:
              - '1.2.3.1'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 10
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 11
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  3. Crea una nuova policy di sicurezza di Cloud Armor e specifica il nome file e il formato modificati, come mostrato nell'esempio seguente:

    gcloud compute security-policies create new-policy \
        --file-name modified-policy \
        --file-format yaml
    
  4. Rimuovi la vecchia policy di sicurezza dal servizio di backend pertinente, come mostrato nell'esempio seguente:

    gcloud compute backend-services update my-backend \
        --security-policy ""
    
  5. Aggiungi la nuova policy di sicurezza al servizio di backend, come mostrato nell'esempio seguente:

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. Se la vecchia policy non viene utilizzata, eliminala:

    gcloud compute security-policies delete my-policy
    

Elimina le regole da una policy di sicurezza

Segui i passaggi descritti in questa sezione per eliminare le regole da una policy di sicurezza di Cloud Armor.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza per aprire la pagina Dettagli policy.

  3. Al centro della pagina, nella scheda Regole, seleziona la casella di controllo accanto alla regola che vuoi eliminare.

  4. Fai clic su Elimina.

gcloud

Utilizza il seguente comando per rimuovere una regola. Puoi modificare una sola policy di sicurezza alla volta, ma puoi eliminare più regole contemporaneamente:

gcloud compute security-policies rules delete PRIORITY [...] [
    --security-policy POLICY_NAME \
  ]

Ad esempio:

gcloud compute security-policies rules delete 1000 \
    --security-policy my-policy

Allega e rimuovi le policy di sicurezza

Le sezioni seguenti descrivono come collegare e rimuovere le policy di sicurezza.

Collega una policy di sicurezza a un servizio di backend

Segui i passaggi descritti in questa sezione per collegare una policy di sicurezza di Cloud Armor a un servizio di backend. Puoi collegare una policy di sicurezza a più servizi di backend, ma un servizio di backend può avere collegato solo un tipo di policy di sicurezza.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza per aprire la pagina Dettagli policy.

  3. Al centro della pagina, fai clic sulla scheda Target.

  4. Fai clic su Applica policy a una nuova destinazione.

  5. Fai clic su Aggiungi target.

  6. Nell'elenco Target, seleziona un target e poi fai clic su Aggiungi.

gcloud

Quando colleghi una policy di sicurezza del backend a un servizio di backend, utilizza il comando gcloud compute backend-services e il flag --security-policy:

gcloud compute backend-services update my-backend \
    --security-policy my-policy

Quando colleghi una policy di sicurezza perimetrale a un servizio di backend, utilizza il comando gcloud compute backend-services e il flag --edge-security-policy:

gcloud compute backend-services update my-backend \
    --edge-security-policy my-policy

Rimuovi una policy di sicurezza da un servizio di backend

Segui i passaggi descritti in questa sezione per rimuovere una policy di sicurezza di Cloud Armor da un servizio di backend.

Console

  1. Nella console Cloud de Confiance , vai alla pagina Policy di Cloud Armor.

    Vai alle policy di Cloud Armor

  2. Fai clic sul nome della policy di sicurezza per aprire la pagina Dettagli policy.

  3. Al centro della pagina, fai clic sulla scheda Target.

  4. Seleziona il servizio di backend di destinazione da cui stai rimuovendo la policy.

  5. Fai clic su Rimuovi.

  6. Nel messaggio Rimuovi target, fai clic su Rimuovi.

gcloud

Quando rimuovi una policy di sicurezza del backend, utilizza il comando gcloud compute backend-services e il flag --security-policy:

gcloud compute backend-services update my-backend \
    --security-policy ""

Quando rimuovi una policy di sicurezza perimetrale, utilizza il comando gcloud compute backend-services e il flag --edge-security-policy:

gcloud compute backend-services update my-backend \
    --edge-security-policy ""