Configurazione dei criteri di sicurezza di Google Cloud Armor

Segui queste istruzioni per creare criteri di sicurezza Google Cloud Armor per filtrare il traffico in entrata destinato ai bilanciatori del carico HTTP(S) esterni. Per informazioni concettuali sui criteri di sicurezza, consulta la panoramica dei criteri di sicurezza di Google Cloud Armor.

Per informazioni sulla configurazione di Google Cloud Armor su Google Kubernetes Engine (GKE), consulta il criterio di sicurezza di Google Cloud Armor nella sezione Configurare le funzionalità Ingress tramite i parametri BackendConfig.

Prima di iniziare

Prima di configurare i criteri di sicurezza, esegui le seguenti operazioni:

  • Assicurati di conoscere i concetti di bilanciamento del carico HTTP(S).

  • Esamina i servizi di backend esistenti per determinare a quali non è già associato un criterio di sicurezza. Questi servizi di backend e i relativi backend associati non sono protetti da Google Cloud Armor. Per aggiungere la protezione fornita da Google Cloud Armor, segui le istruzioni contenute in questo documento per collegare al servizio di backend un criterio di sicurezza appena creato o esistente.

Configurare le autorizzazioni IAM per i criteri di sicurezza di Google Cloud Armor

Le seguenti operazioni richiedono il ruolo IAM (Gestione di identità e accessi) Amministratore sicurezza sicurezza (roles/compute.securityAdmin):

  • configurazione, modifica, aggiornamento ed eliminazione di un criterio di sicurezza di Google Cloud Armor
  • Metodi API consentiti:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Un utente con il ruolo di amministratore di rete Compute (roles/compute.networkAdmin) può eseguire le seguenti operazioni:

  • Impostazione di un criterio di sicurezza di Google Cloud Armor per un servizio di backend
  • Metodi API consentiti:
    • BackendServices setSecurityPolicy

Gli utenti con i ruoli Amministratore sicurezza e Amministratore di rete possono visualizzare i criteri di sicurezza di Google Cloud Armor utilizzando i metodi API SecurityPolicy get, list e getRule.

Configurazione delle autorizzazioni IAM per i ruoli personalizzati

La tabella seguente elenca le autorizzazioni di base dei ruoli IAM e i metodi API associati.

Autorizzazioni IAM Metodi API
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

Configurazione dei criteri di sicurezza per il bilanciamento del carico HTTP(S)

Di seguito sono riportati i passaggi avanzati per configurare i criteri di sicurezza di Google Cloud Armor per attivare le regole che consentono o negano il traffico verso bilanciatori del carico HTTP(S) esterni:

  1. Crea un criterio di sicurezza di Google Cloud Armor.
  2. Aggiungi regole al criterio di sicurezza in base a elenchi di indirizzi IP, espressioni personalizzate o set di espressioni preconfigurati.
  3. Associa il criterio di sicurezza a un servizio di backend del bilanciatore del carico HTTP(S) esterno di cui vuoi controllare l'accesso.
  4. Aggiornare il criterio di sicurezza in base alle esigenze.

Nell'esempio seguente, crei due criteri di sicurezza di Google Cloud Armor e li applichi a diversi servizi di backend.

Esempio in cui due criteri di sicurezza vengono applicati a servizi di backend diversi.
Esempio di utilizzo di due criteri di sicurezza a diversi servizi di backend (fai clic per ingrandire)

Nell'esempio, questi sono i criteri di sicurezza di Google Cloud Armor:

  • mobile-clients-policy si applica agli utenti esterni dei tuoi servizi games.
  • internal-users-policy si applica al team test-network della tua organizzazione.

Applichi mobile-clients-policy al servizio games, il cui servizio di backend è chiamato games, e applichi internal-users-policy al servizio test interno per il team di test, il cui servizio di backend corrispondente è chiamato test-network.

Se le istanze di backend per un servizio di backend si trovano in più aree geografiche, il criterio di sicurezza di Google Cloud Armor associato al servizio è applicabile alle istanze in tutte le aree geografiche. Nell'esempio precedente, il criterio di sicurezza mobile-clients-policy è applicabile alle istanze 1, 2, 3 e 4 in us-central e alle istanze 5 e 6 in us-east.

Creare l'esempio

Utilizza queste istruzioni per creare la configurazione di esempio descritta nella sezione precedente.

console

Configura il criterio di sicurezza per gli utenti esterni:

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Norme, fai clic su Crea criterio.

  3. Nel campo Nome, inserisci mobile-clients-policy.

  4. Nel campo Descrizione, inserisci Policy for external users.

  5. In Azione di regola predefinita, seleziona Rifiuta.

  6. In Stato di negazione, seleziona 404 (Non trovato).

  7. Fai clic su Passaggio successivo.

Aggiungi altre regole:

  1. Fai clic su Aggiungi regola.
  2. Nel campo Descrizione, inserisci allow traffic from 192.0.2.0/24.
  3. In Modalità, seleziona Modalità di base (solo indirizzi/intervalli IP).
  4. Nel campo Corrispondenza, inserisci 192.0.2.0/24.
  5. Per Azione, seleziona Consenti.
  6. Nel campo Priority (Priorità), inserisci 1000.
  7. Fai clic su Fine.
  8. Fai clic su Passaggio successivo.

Applica criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Seleziona un target nell'elenco Target.
  3. Fai clic su Fine.
  4. Fai clic su Crea criterio.

Se vuoi, attiva Adaptive Protection:

  1. Per attivare Adaptive Protection, seleziona la casella di controllo Abilita.

Configura il criterio di sicurezza per gli utenti interni:

  1. Nella pagina Norme, fai clic su Crea criterio.
  2. Nel campo Nome, inserisci internal-users-policy.
  3. Nel campo Descrizione, inserisci Policy for internal test users.
  4. In Azione di regola predefinita, seleziona Rifiuta.
  5. In Stato di negazione, seleziona 502 (Gateway non valido).
  6. Fai clic su Passaggio successivo.

Aggiungi altre regole:

  1. Fai clic su Aggiungi regola.
  2. Nel campo Descrizione, inserisci allow traffic from 198.51.100.0/24.
  3. In Modalità, seleziona Modalità di base (solo indirizzi/intervalli IP).
  4. Nel campo Corrispondenza, inserisci 198.51.100.0/24.
  5. Per Azione, seleziona Consenti.
  6. Per Solo anteprima, seleziona la casella di controllo Attiva.
  7. Nel campo Priority (Priorità), inserisci 1000.
  8. Fai clic su Fine.
  9. Fai clic su Passaggio successivo.

Applica criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Seleziona un target nell'elenco Target.
  3. Fai clic su Fine.
  4. Fai clic su Crea criterio.

gcloud

  1. Crea i criteri di sicurezza di Google Cloud Armor:

    gcloud compute security-policies create mobile-clients-policy \
        --description "policy for external users"
    
    gcloud compute security-policies create internal-users-policy \
        --description "policy for internal test users"
    
  2. Aggiorna le regole predefinite nei criteri di sicurezza per rifiutare il traffico:

    gcloud compute security-policies rules update 2147483647 \
        --security-policy mobile-clients-policy \
        --action "deny-404"
    
    gcloud compute security-policies rules update 2147483647 \
        --security-policy internal-users-policy \
        --action "deny-502"
    
  3. Aggiungere regole ai criteri di sicurezza:

    gcloud compute security-policies rules create 1000 \
        --security-policy mobile-clients-policy \
        --description "allow traffic from 192.0.2.0/24" \
        --src-ip-ranges "192.0.2.0/24" \
        --action "allow"
    
    gcloud compute security-policies rules create 1000 \
        --security-policy internal-users-policy \
        --description "allow traffic from 198.51.100.0/24" \
        --src-ip-ranges "198.51.100.0/24" \
        --action "allow"
    
  4. Collega i criteri di sicurezza ai servizi di backend:

    gcloud compute backend-services update games \
        --security-policy mobile-clients-policy
    
    gcloud compute backend-services update test-network \
        --security-policy internal-users-policy
    
  5. Se vuoi, attiva Adaptive Protection:

    gcloud compute security-policies update mobile-clients-policy \
       --enable-layer7-ddos-defense
    
    gcloud compute security-policies update internal-users-policy \
       --enable-layer7-ddos-defense
    

Configurazione di criteri di sicurezza, regole ed espressioni

Puoi configurare i criteri di sicurezza, le regole e le espressioni di sicurezza di Google Cloud Armor utilizzando Google Cloud Console, l'interfaccia a riga di comando di Google Cloud o l'API REST. Quando utilizzi l'interfaccia a riga di comando gcloud per creare criteri di sicurezza, utilizza il flag --type per specificare se il criterio di sicurezza è un criterio di sicurezza backend o un criterio di sicurezza perimetrale.

Test dei criteri di sicurezza

Ti consigliamo di eseguire il deployment di tutte le nuove regole in modalità di anteprima e poi esaminare i log delle richieste per verificare che i criteri e le regole funzionino come previsto.

Espressioni di esempio

Di seguito sono riportate espressioni di esempio. Per ulteriori informazioni sulle espressioni, consulta il riferimento per il linguaggio delle regole personalizzate di Google Cloud Armor.

Se configuri una regola o un'espressione che utilizza i codici paese o area geografica ISO 3166-1 alpha 2, Google Cloud Armor tratta ogni codice in modo indipendente. Le espressioni e le regole di Google Cloud Armor utilizzano questi codici di area geografica in modo da consentire o rifiutare le richieste.

  • La seguente espressione corrisponde alle richieste dall'indirizzo IP 1.2.3.4 e contiene la stringa Godzilla nell'intestazione user-agent:

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

    has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
    
  • La seguente espressione corrisponde alle richieste dall'area geografica AU:

    origin.region_code == 'AU'
    
  • La seguente espressione corrisponde alle richieste dell'area geografica 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 con un percorso variabile numerato a un file specifico se l'URI corrisponde a un'espressione regolare:

    request.path.matches('/path/[0-9]+/target_file.html')
    
  • La seguente espressione corrisponde alle richieste se il valore decodificato in Base64 dell'intestazione user-id contiene un valore specifico:

    has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
    
  • La seguente espressione utilizza una corrispondenza di set di espressioni preconfigurate contro gli attacchi SQLi:

    evaluatePreconfiguredExpr('sqli-stable')
    

Utilizzo di analisi JSON

Puoi attivare o disattivare l'analisi dei contenuti del corpo JSON delle richieste POST per ogni criterio di sicurezza. Se l'intestazione Content-Type è impostata su application/json, utilizza il flag --json-parsing nell'interfaccia a riga di comando di Google Cloud.

Per impostazione predefinita, questa opzione è disattivata. La sintassi per il flag è la seguente:

--json-parsing=[STANDARD | DISABLED]

Il flag è disponibile solo con gcloud compute security-policies update. Non puoi creare un nuovo criterio di sicurezza con questa opzione, a meno che non crei un criterio di sicurezza in un file e poi importi quel file. Per ulteriori informazioni, vedi Importare i criteri di sicurezza.

Per scoprire di più sull'analisi JSON, consulta Analisi JSON e logging dettagliato.

Utilizzo del logging dettagliato

Puoi configurare il livello di logging di Google Cloud Armor per attivare un logging più dettagliato per ogni criterio di sicurezza usando il flag --log-level nell'interfaccia a riga di comando gcloud.

Per impostazione predefinita, questa opzione è disattivata. La sintassi per il flag è la seguente:

--log-level=[NORMAL | VERBOSE]

Il flag è disponibile solo con gcloud compute security-policies update. Non puoi creare un nuovo criterio di sicurezza con questa opzione, a meno che non crei un criterio di sicurezza in un file e poi importi quel file. Per ulteriori informazioni, vedi Importare i criteri di sicurezza.

Per ulteriori informazioni sul logging dettagliato, consulta l'articolo sull'analisi JSON e il logging dettagliato.

Configurare le regole per la limitazione di frequenza

Questa sezione contiene informazioni sulla configurazione delle regole di Google Cloud Armor per applicare i limiti di frequenza per client configurando un'azione di esclusione limitazione o basata sulla frequenza.

Regole per la limitazione basata sulla frequenza

Le regole per la limitazione basata sulla frequenza hanno il seguente formato nell'interfaccia a riga di comando gcloud:

gcloud compute security-policies rules create PRIORITY
   --security-policy=SECURITY_POLICY
   (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE)
   --action "throttle"
   --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT
   --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC
   --conform-action=[allow]
   --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect]
   --exceed-redirect-type=[google-recaptcha|external-302]
   --exceed-redirect-target=REDIRECT_URL
   --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE]
   --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]

Ad esempio, il seguente comando gcloud crea una regola throttle con priorità 105 con un limite di frequenza di 100 richieste ogni 60 secondi per ogni indirizzo IP in 1.2.3.0/24. Le richieste che superano il limite di limitazione restituiscono un codice di errore 429.

gcloud compute security-policies rules create 105 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=100 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=IP

Ad esempio, il seguente comando gcloud crea una regola throttle con priorità 110 con un limite di frequenza di 10 richieste ogni 60 secondi per ogni valore univoco dell'intestazione HTTP User-Agent per tutte le richieste provenienti dagli indirizzi IP in 1.2.3.0/24. Le richieste che superano il limite di limitazione restituiscono un codice di errore 429.

gcloud compute security-policies rules create 110 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=10 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=HTTP-HEADER \
    --enforce-on-key-name='User-Agent'

Puoi anche emettere divieti basati sulla tariffa per gli utenti che dispongono di un cookie di esenzione reCAPTCHA valido. Ad esempio, il seguente comando gcloud crea una regola throttle con priorità 115 con un limite di frequenza di 20 richieste ogni 5 minuti per ogni cookie di esenzione reCAPTCHA univoco per tutte le richieste con un cookie di esenzione reCAPTCHA valido. Le richieste che superano il limite di limitazione vengono reindirizzate per la valutazione di reCAPTCHA Enterprise. Per ulteriori informazioni sui cookie di esenzione e sulla valutazione di reCAPTCHA Enterprise, consulta la panoramica sulla gestione dei bot.

gcloud compute security-policies rules create 115 \
    --security-policy sec-policy     \
    --expression="token.recaptcha_exemption.valid"     \
    --action=throttle                \
    --rate-limit-threshold-count=20 \
    --rate-limit-threshold-interval-sec=300 \
    --conform-action=allow           \
    --exceed-action=redirect         \
    --exceed-redirect-type=google-recaptcha         \
    --enforce-on-key=HTTP-COOKIE         \
    --enforce-on-key-name="recaptcha-ca-e"

Regole per l'esclusione basata sulla tariffa

Le regole per i divieti basati sulla tariffa hanno il seguente formato nell'interfaccia a riga di comando gcloud:

gcloud compute security-policies rules create PRIORITY \
     --security-policy=SECURITY_POLICY \
     (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE) \
     --action "rate-based-ban" \
     --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \
     --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \
     --ban-duration-sec=BAN_DURATION_SEC \
     --ban-threshold-count=BAN_THRESHOLD_COUNT \
     --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \
     --conform-action=[allow] \
     --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect]
     --exceed-redirect-type=[google-recaptcha|external-302]
     --exceed-redirect-target=REDIRECT_URL
     --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE]
     --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]

Ad esempio, il seguente comando gcloud crea una regola di esclusione basata sulla tariffa con priorità 100 per ogni indirizzo IP le cui richieste corrispondono a un'intestazione fish con valore tuna e la escludi per 300 secondi quando la sua frequenza supera il limite di 50 richieste ogni 120 secondi. Le richieste escluse restituiscono un codice di errore 404.

gcloud compute security-policies rules create 100 \
    --security-policy=sec-policy     \
    --expression="request.headers['fish'] == 'tuna'" \
    --action=rate-based-ban                   \
    --rate-limit-threshold-count=50           \
    --rate-limit-threshold-interval-sec=120   \
    --ban-duration-sec=300           \
    --conform-action=allow           \
    --exceed-action=deny-404         \
    --enforce-on-key=IP

Ad esempio, il seguente comando gcloud crea una regola di esclusione basata sulla tariffa con priorità 101 per limitare tutte le richieste il cui codice regione corrisponde a US per 10 richieste ogni 60 secondi. La regola inoltre esclude le richieste dall'area geografica US per 300 secondi quando la frequenza supera un limite di 1000 richieste ogni 600 secondi. Le richieste vietate restituiscono un codice di errore 403.

 gcloud compute security-policies rules create 101 \
    --security-policy sec-policy     \
    --expression "origin.region_code == 'US'" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 10         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 300           \
    --ban-threshold-count 1000       \
    --ban-threshold-interval-sec 600 \
    --conform-action allow           \
    --exceed-action deny-403         \
    --enforce-on-key ALL

Ad esempio, il seguente comando gcloud crea una regola di esclusione basata sulla tariffa con priorità 102 per limitare tutte le richieste provenienti da qualsiasi intervallo di indirizzi IP di origine a 20 richieste ogni 60 secondi. La regola inoltre esclude le richieste da qualsiasi intervallo di indirizzi IP di origine per 600 secondi quando la loro frequenza supera il limite di 500 richieste ogni 400 secondi. Le richieste escluse restituiscono un codice di errore 429.

 gcloud compute security-policies rules create 102 \
    --security-policy sec-policy     \
    --src-ip-ranges="*" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 20         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 600           \
    --ban-threshold-count 500       \
    --ban-threshold-interval-sec 400 \
    --conform-action allow           \
    --exceed-action deny-429         \
    --enforce-on-key ALL

Usare Google Cloud Console e l'interfaccia a riga di comando gcloud per creare criteri di sicurezza

Le istruzioni riportate in questa sezione presuppongono che vengano configurati criteri di sicurezza da applicare a un bilanciatore del carico HTTP(S) esterno esistente e un servizio di backend. Per un esempio di come completare i campi, consulta la sezione Creare l'esempio.

console

Crea i criteri di sicurezza e le regole di Google Cloud Armor e collega un criterio di sicurezza a un servizio di backend:

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Norme, fai clic su Crea criterio.

  3. Nel campo Nome, inserisci il nome del criterio.

  4. (Facoltativo) Inserisci una descrizione del criterio.

  5. In Tipo di criterio, scegli Criterio di sicurezza di backend o Criterio di sicurezza di Edge.

  6. Per l'azione Regola predefinita, seleziona Consenti per una regola predefinita che consente l'accesso oppure seleziona Rifiuta per una regola predefinita che vieta l'accesso a un indirizzo IP o a un intervallo di indirizzi IP.

    La regola predefinita è la regola con la priorità più bassa e avrà effetto solo se non sono applicate altre regole.

  7. Se stai configurando una regola Nega, seleziona un messaggio Stato di rifiuto. Questo è il messaggio di errore visualizzato da Google Cloud Armor se un utente senza accesso tenta di ottenere l'accesso.

  8. Indipendentemente dal tipo di regola che stai configurando, fai clic su Passaggio successivo.

Aggiungi altre regole:

  1. Fai clic su Aggiungi regola.
  2. (Facoltativo) Inserisci una descrizione per la regola.
  3. Seleziona la modalità:

    • Modalità di base: consenti o nega il traffico in base a indirizzi IP o intervalli IP.
    • Modalità avanzata: consenti o nega il traffico in base alle espressioni delle regole.
  4. Nel campo Corrispondenza, specifica le condizioni in cui viene applicata la regola:

    • Modalità base: inserisci gli indirizzi IP o gli intervalli IP corrispondenti alla regola.
    • Modalità avanzata: inserisci un'espressione o delle sottoespressioni da valutare in base alle richieste in entrata. Per informazioni su come scrivere le espressioni, consulta il riferimento per il linguaggio delle regole personalizzate.
  5. Per Azione, seleziona Consenti o Rifiuta per consentire o negare il traffico se la regola corrisponde.

  6. Per attivare la modalità di anteprima, seleziona la casella di controllo Attiva. In modalità di anteprima puoi vedere il comportamento della regola, ma non è abilitata.

  7. Inserisci la priorità della regola. Può essere qualsiasi numero intero positivo compreso tra 0 e 2.147.483.646 inclusi. Per ulteriori informazioni sull'ordine di valutazione, consulta Ordine di valutazione delle regole.

  8. Fai clic su Fine.

  9. Per aggiungere altre regole, fai clic su Aggiungi regola e ripeti i passaggi precedenti. In caso contrario, fai clic su Passaggio successivo.

Applica criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Seleziona un target nell'elenco Target.
  3. Per aggiungere altri target, fai clic su Aggiungi target.
  4. Fai clic su Fine.
  5. Fai clic su Crea criterio.

gcloud

  1. Per creare un nuovo criterio di sicurezza di Google Cloud Armor, utilizza il comando gcloud compute security-policies create. Sostituisci NAME e DESCRIPTION con il nome e la descrizione del criterio di sicurezza. Nel campo type, utilizza CLOUD_ARMOR per creare un criterio di sicurezza di backend o CLOUD_ARMOR_EDGE per creare un criterio di sicurezza perimetrale. Il flag type non è un flag obbligatorio; se non viene specificato alcun tipo, viene creato un criterio di sicurezza di backend per impostazione predefinita:

    gcloud compute security-policies create NAME \
       [--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \
       [--file-format=FILE_FORMAT | --description=DESCRIPTION] \
       [--file-name=FILE_NAME]
    
    

    Il seguente comando aggiorna un criterio creato in precedenza, attiva l'analisi JSON e modifica il livello di log in VERBOSE:

    gcloud compute security-policies update my-policy \
        --json-parsing=STANDARD
        --log-level=VERBOSE
    
  2. Per aggiungere regole a un criterio di sicurezza, utilizza il comando gcloud compute security-policies rules create PRIORITY. Sostituisci PRIORITY con la priorità assegnata alla regola nel criterio. Per informazioni sul funzionamento della priorità delle regole, consulta Ordine di valutazione delle regole.

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

    Ad esempio, il seguente comando aggiunge una regola per bloccare il traffico dagli intervalli di indirizzi IP 192.0.2.0/24 e 198.51.100.0/24. La regola ha priorità 1000 ed è una regola in un criterio chiamato my-policy.

    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"
    

    Con il flag --preview aggiunto, la regola viene aggiunta al criterio, ma non viene applicata e qualsiasi traffico che attiva la regola viene registrato solo.

    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" \
        --preview
    

    Utilizza il flag --expression per specificare una condizione personalizzata nel riferimento per la lingua delle regole personalizzate. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP 1.2.3.4 e contiene la stringa Godzilla nell'intestazione dello user-agent:

    gcloud beta 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('Godzilla')" \
        --action allow \
        --description "Block User-Agent 'Godzilla'"
    

    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('cookie_name=cookie_value')" \
        --action "deny-403" \
        --description "Cookie Block"
    

    Il seguente comando aggiunge una regola per bloccare le richieste dall'area geografica 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 dell'area geografica AU che non rientrano nell'intervallo di indirizzi 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('/bad_path/)')" \
        --action "deny-403" \
        --description "regex block"
    

    Il seguente comando aggiunge una regola per bloccare le richieste se il valore decodificato nell'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 "evaluatePreconfiguredExpr('sqli-stable')" \
        --action "deny-403"
    

    Il comando seguente aggiunge una regola che utilizza un'espressione preconfigurata per consentire l'accesso da tutti gli indirizzi IP in un elenco di indirizzi IP denominato:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \
        --action "allow"
    

Configurazione delle regole per la gestione dei bot

Questa sezione contiene informazioni sulla configurazione delle regole dei criteri di sicurezza di Google Cloud Armor per la gestione dei bot. Per ulteriori informazioni, consulta la panoramica sulla gestione dei bot.

Utilizzare una verifica manuale per reCAPTCHA Enterprise per distinguere tra client umani o automatizzati

Per associare o annullare l'associazione della chiave del sito reCAPTCHA WAF a un criterio di sicurezza, utilizza il comando seguente, sostituendo il nome del criterio di sicurezza (SECURITY_POLICY) e la chiave del sito di verifica WAF reCAPTCHA (SITE_KEY).

gcloud compute security-policies update SECURITY_POLICY \
   --recaptcha-redirect-site-key SITE_KEY

L'esempio seguente associa una chiave di sito reCAPTCHA WAF a un criterio di sicurezza. La chiave di sito associata viene applicata a tutte le regole che utilizzano la funzionalità di verifica manuale in base al criterio di sicurezza specificato.

gcloud compute security-policies update my-policy \
   --recaptcha-redirect-site-key "SITE_KEY"

Puoi anche annullare l'associazione di una chiave di sito WAF reCAPTCHA a un criterio di sicurezza come segue:

gcloud compute security-policies update my-policy \
   --recaptcha-redirect-site-key ""

Per creare una regola per reindirizzare il traffico internamente alla valutazione reCAPTCHA Enterprise, utilizza il seguente formato in gcloud:

gcloud compute security-policies rules create PRIORITY \
   --security-policy SECURITY_POLICY \
   (--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE) \
   --action redirect \
   --redirect-type google-recaptcha

L'esempio seguente crea una regola che reindirizza il traffico nel tentativo di raggiungere /login.html per la verifica manuale di reCAPTCHA Enterprise.

gcloud compute security-policies rules create 1000 \
   --security-policy my-policy \
   --expression "request.path.matches(\"/login.html\")" \
   --action redirect \
   --redirect-type google-recaptcha

Applica la valutazione senza problemi di reCAPTCHA Enterprise

Prima di procedere, consulta la panoramica della gestione dei bot per i prerequisiti per l'utilizzo dei token di azione o dei token di sessione reCAPTCHA Enterprise.

Puoi utilizzare token.recaptcha_action.ATTRIBUTE (sostituendo ATTRIBUTE con un attributo token valido nel linguaggio delle regole di Google Cloud Armor) per estrarre gli attributi da un token d'azione reCAPTCHA Enterprise. Analogamente, puoi utilizzare token.recaptcha_session.ATTRIBUTE per un token di sessione reCAPTCHA Enterprise. Per maggiori informazioni sulla sintassi degli attributi del token reCAPTCHA Enterprise disponibili, consulta le informazioni di riferimento sul linguaggio delle regole.

L'esempio seguente crea una regola che consente il targeting per traffico per /login.html e con un token azione reCAPTCHA Enterprise il cui punteggio non è inferiore a 0.8.

gcloud compute security-policies rules create 1000 \
   --security-policy my-policy \
   --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
   --action allow

Reindirizzamento (risposta 302)

Per creare una regola per reindirizzare il traffico a un URL configurato dall'utente, utilizza il formato seguente in gcloud.

gcloud compute security-policies rules create PRIORITY \
   --security-policy SECURITY_POLICY \
   (--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE) \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target REDIRECT_URL

L'esempio seguente crea una regola che reindirizza il traffico proveniente da 10.10.10.0/24 a https://www.example.com.

gcloud compute security-policies rules create 1000 \
   --security-policy my-policy \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

Decora richiesta

Per creare una regola che consenta il traffico, ma aggiunga intestazioni personalizzate e valori statici definiti dall'utente prima di eseguirne il proxy su backend protetti, utilizza il seguente formato in gcloud:

gcloud compute security-policies rules create PRIORITY \
   --security-policy SECURITY_POLICY \
   (--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE) \
   --action allow \
   --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

L'esempio seguente crea una regola che consente, ma aggiunge un'intestazione personalizzata per il targeting del traffico per /login.html e con un punteggio token azione reCAPTCHA Enterprise inferiore a 0.2.

gcloud compute security-policies rules create 1000 \
   --security-policy my-policy \
   --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
   --action allow \
   --request-headers-to-add "reCAPTCHA-Warning=high"

Utilizzo di Adaptive Protection

Adaptive Protection viene applicato in base ai criteri di sicurezza.

console

Per attivare Adaptive Protection per un criterio di sicurezza:

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri, fai clic sul nome di un criterio di sicurezza.

  3. Fai clic su Modifica.

  4. In Adaptive Protection, seleziona Abilita.

  5. Fai clic su Aggiorna.

Per disattivare Adaptive Protection per un criterio di sicurezza:

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri, fai clic sul nome di un criterio di sicurezza.

  3. Fai clic su Modifica.

  4. In Adaptive Protection, deseleziona Abilita.

  5. Fai clic su Aggiorna.

gcloud

Per attivare Adaptive Protection per un criterio di sicurezza:

gcloud compute security-policies update MY-SECURITY-POLICY \
   --enable-layer7-ddos-defense

Per disattivare Adaptive Protection per un criterio di sicurezza:

gcloud compute security-policies update MY-SECURITY-POLICY \
   --no-enable-layer7-ddos-defense

Elenco delle regole preconfigurate disponibili

Elenca le regole preconfigurate per visualizzare le regole e le firme di protezione delle applicazioni predefinite, ad esempio il set di regole di sicurezza ModSecurity fornito da Google Cloud Armor. Queste regole preconfigurate contengono più firme integrate che Google Cloud Armor utilizza per eseguire valutazioni in base alle richieste in entrata. Per aggiungere queste regole preconfigurate a regole nuove o esistenti, utilizza il riferimento per le regole personalizzate.

Per saperne di più, consulta le regole preconfigurate.

gcloud

  1. Esegui il comando gcloud compute security-policies list-preconfigured-expression-sets:

    gcloud compute security-policies list-preconfigured-expression-sets
    

    L'esempio seguente mostra la forma dell'output dal comando:

    EXPRESSION_SET
    expression-set-1
       RULE_ID
       expression-set-1-id-1
       expression-set-1-id-2
    expression-set-2
       alias-1
       RULE_ID
       expression-set-2-id-1
       expression-set-2-id-2
    

    L'esempio seguente include un esempio di output effettivo del comando. Tieni presente che l'output effettivo includerà tutte le regole elencate nella sezione Regolazione delle regole WAF di Google Cloud Armor.

    gcloud compute security-policies list-preconfigured-expression-sets
    
    EXPRESSION_SET
    sqli-canary
        RULE_ID
        owasp-crs-v030001-id942110-sqli
        owasp-crs-v030001-id942120-sqli
        …
    xss-canary
        RULE_ID
        owasp-crs-v030001-id941110-xss
        owasp-crs-v030001-id941120-xss
    …
    sourceiplist-fastly
    sourceiplist-cloudflare
    sourceiplist-imperva
    

Criteri di sicurezza della scheda

Segui queste istruzioni per elencare tutti i criteri di sicurezza di Google Cloud Armor nel progetto corrente o in un progetto da te specificato.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Per visualizzare un criterio specifico, fai clic sul relativo nome nella pagina Criteri di sicurezza nell'elenco dei criteri.

gcloud

gcloud compute security-policies list

Ad esempio:

gcloud compute security-policies list
NAME
my-policy

Per ulteriori informazioni, consulta gcloud compute security-policies list.

Aggiornamento dei criteri di sicurezza in corso…

Segui queste istruzioni per aggiornare un criterio di sicurezza di Google Cloud Armor. Ad esempio, puoi modificare la descrizione del criterio, modificare il comportamento della regola predefinita, cambiare il servizio di backend di destinazione o aggiungere nuove regole.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Per aggiornare un criterio, nella pagina Criteri di sicurezza nell'elenco dei criteri fai clic su Menu relativo al criterio che vuoi aggiornare.

    • Per aggiornare la descrizione del criterio dell'azione della regola predefinita, seleziona Modifica, apporta le modifiche desiderate, quindi fai clic su Aggiorna.
    • Per aggiungere una regola, seleziona Aggiungi regola e segui le istruzioni riportate in Aggiungere regole a un criterio di sicurezza.
    • Per modificare il servizio di backend per il criterio, seleziona Applica criterio al target, fai clic su Aggiungi target, seleziona un target e fai clic su Aggiungi.

gcloud

Per aggiornare un criterio di sicurezza, utilizza le seguenti istruzioni dell'interfaccia a riga di comando di Google Cloud:

Esportazione dei criteri di sicurezza

Puoi esportare un criterio di sicurezza di Google Cloud Armor come file YAML o JSON utilizzando l'interfaccia a riga di comando di Google Cloud. L'esportazione di un criterio consente di recuperarne una copia che puoi modificare o salvare nel controllo del codice sorgente.

gcloud

  1. Nel comando seguente, NAME è il nome del criterio di sicurezza. I formati di file validi sono YAML e JSON. Se non specifichi il formato del file, Google Cloud Armor utilizza il formato YAML predefinito.

    gcloud compute security-policies export NAME \
        --file-name FILE_NAME  \
        --file-format FILE_FORMAT
    

    L'esempio seguente esporta il criterio di sicurezza my-policy nel file my-file nel formato YAML:

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

    L'esempio seguente mostra un criterio di sicurezza esportato:

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: allow
      description: default rule
      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. Puoi modificare il file esportato con un qualsiasi editor di testo e poi importarlo in Google Cloud utilizzando il comando import.

Importazione dei criteri di sicurezza

Puoi importare i criteri di sicurezza di Google Cloud Armor da un file YAML o JSON utilizzando l'interfaccia a riga di comando di Google Cloud. Non puoi utilizzare il comando import per aggiornare le regole di un criterio esistente. Devi invece aggiornare le regole una alla volta utilizzando la procedura Aggiornare una singola regola in un criterio di sicurezza o tutte contemporaneamente utilizzando la procedura Aggiornare Atomica più regole in un criterio di sicurezza.

gcloud

Per importare i criteri di sicurezza, utilizza il comando gcloud compute security-policies import NAME. Sostituisci NAME con il nome del criterio di sicurezza che stai importando. Se non fornisci il formato del file, viene utilizzato il formato corretto in base alla struttura del file. Se la struttura non è valida, verrà visualizzato un errore.

gcloud compute security-policies import NAME \
    --file-name FILE_NAME  \
   [--file-format FILE_FORMAT]

Ad esempio, il comando seguente aggiorna il criterio my-policy importando il file my-file.

gcloud compute security-policies import my-policy \
    --file-name my-file \
    --file-format json

Se l'impronta del criterio non è aggiornata durante l'importazione, Google Cloud Armor mostra un errore. Ciò significa che il criterio è stato modificato dall'ultima esportazione. Per risolvere il problema, utilizza il comando describe nel criterio per scaricare l'ultima impronta. Unisci eventuali differenze tra le norme descritte e le tue norme, quindi sostituisci l'impronta obsoleta con l'ultima.

Eliminazione dei criteri di sicurezza

Segui queste istruzioni per eliminare un criterio di sicurezza di Google Cloud Armor. Prima di poter eliminare i servizi di backend, devi rimuoverli.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, seleziona la casella di controllo accanto al nome del criterio di sicurezza che vuoi eliminare.

  3. Nell'angolo in alto a destra della pagina, fai clic su Elimina.

gcloud

Usa la lingua gcloud compute security-policies delete NAME. Sostituisci NAME con il nome del criterio di sicurezza:

gcloud compute security-policies delete NAME

Collegamento di un criterio di sicurezza a un servizio di backend

Segui queste istruzioni per collegare un criterio di sicurezza di Google Cloud Armor a un servizio di backend. Un criterio di sicurezza può essere associato a più di un servizio di backend, ma a un servizio di backend può essere associato un solo tipo di criterio di sicurezza.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme.

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

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

  5. Fai clic su Aggiungi target.

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

gcloud

Quando colleghi un criterio di sicurezza di 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 un criterio 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

Rimozione di un criterio di sicurezza da un servizio di backend

Segui queste istruzioni per rimuovere un criterio di sicurezza di backend di Google Cloud Armor o un criterio di sicurezza perimetrale da un servizio di backend. Per rimuovere i criteri di sicurezza perimetrali, utilizza l'interfaccia a riga di comando di Google Cloud.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme.

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

  4. Seleziona il servizio di backend di destinazione da cui vuoi rimuovere il criterio.

  5. Fai clic su Rimuovi.

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

gcloud

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

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

Quando rimuovi un criterio 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 ""

Aggiungere regole a un criterio di sicurezza

Segui queste istruzioni per aggiungere regole a un criterio di sicurezza di Google Cloud Armor.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme.

  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: consenti o nega il traffico in base a indirizzi IP o intervalli IP.
    • Modalità avanzata: consenti o nega il traffico in base alle espressioni delle regole.
  7. Nel campo Corrispondenza, specifica le condizioni in cui viene applicata la regola:

    • Modalità di base: inserisci da uno (1) a cinque (5) intervalli di indirizzi IP corrispondenti alla regola.
    • Modalità avanzata: inserisci un'espressione o delle sottoespressioni da valutare in base alle richieste in entrata. Per informazioni su come scrivere le espressioni e leggere gli esempi seguenti, consulta il riferimento per le regole personalizzate.

      • La seguente espressione corrisponde alle richieste dall'indirizzo IP 1.2.3.4 e contiene la stringa Godzilla nell'intestazione user-agent:

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

        has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        
      • La seguente espressione corrisponde alle richieste dall'area geografica AU:

        origin.region_code == 'AU'
        
      • La seguente espressione corrisponde alle richieste dell'area geografica 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('/bad_path/)')
        
      • La seguente espressione corrisponde alle richieste se il valore decodificato in Base64 dell'intestazione user-id contiene un valore specifico:

        has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        
      • La seguente espressione utilizza un set di espressioni preconfigurate per trovare una corrispondenza con gli attacchi SQLi:

        evaluatePreconfiguredExpr('sqli-stable')
        
  8. Per Azione, seleziona Consenti o Rifiuta.

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

  10. Se vuoi attivare la modalità di anteprima per la regola, seleziona la casella di controllo Abilita.

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

  12. Fai clic su Aggiungi.

gcloud

Usa il comando gcloud compute security-policies rules create PRIORITY. Sostituisci PRIORITY con la priorità della regola nel criterio:

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 per bloccare il traffico dagli intervalli di indirizzi IP 192.0.2.0/24 e 198.51.100.0/24. La regola ha priorità 1000 ed è una regola in un criterio chiamato my-policy:

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 nel riferimento per la lingua delle regole personalizzate. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP 1.2.3.4 e contiene la stringa Godzilla nell'intestazione dello 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('Godzilla')" \
    --action allow \
    --description "Block User-Agent 'Godzilla'"

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 consente di aggiungere una regola per bloccare le richieste nell'area geografica 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 dell'area geografica AU che non rientrano nell'intervallo di indirizzi 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('/bad_path/)')" \
    --action deny-502 \
    --description "regex block"

Il seguente comando aggiunge una regola per bloccare le richieste se il valore decodificato nell'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 comando seguente aggiunge una regola che utilizza un set di espressioni preconfigurate per attenuare gli attacchi SQLi:

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

Elenco delle regole di un criterio di sicurezza

Segui queste istruzioni per elencare le regole in un criterio di sicurezza di Google Cloud Armor.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme e le regole delle norme sono elencate nella scheda Regole al centro della pagina.

gcloud

Utilizza il comando gcloud seguente per elencare tutte le regole in un singolo criterio di sicurezza, insieme a una descrizione del criterio:

gcloud compute security-policies describe NAME \

Utilizza il comando gcloud seguente per descrivere una regola con la priorità specificata nel criterio di sicurezza specificato:

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

Ad esempio, il seguente comando descrive la regola con priorità 1000 nel criterio 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

Aggiornamento di una singola regola in un criterio di sicurezza

Segui queste istruzioni per aggiornare una singola regola in un criterio di sicurezza di Google Cloud Armor. Per aggiornare in modo atomico più regole, consulta la sezione Aggiornare atomicamente più regole in un criterio di sicurezza.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme.

  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 desiderate, quindi fai clic su Aggiorna.

gcloud

Utilizza questo comando per aggiornare una regola con la priorità specificata in un criterio di sicurezza designato. Puoi aggiornare un solo criterio di sicurezza alla volta utilizzando questo comando:

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 seguente comando 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 su questo comando, consulta gcloud compute security-policies rules update.

Per aggiornare la priorità di una regola, devi utilizzare l'API REST. Per ulteriori informazioni, consulta securityPolicies.patchRule.

Aggiornamento atomico di più regole in un criterio di sicurezza

Un aggiornamento atomico applica le modifiche a più regole in un singolo aggiornamento. Se aggiornassi le regole una alla volta, potresti notare alcuni comportamenti indesiderati perché regole precedenti e nuove potrebbero funzionare insieme per un breve periodo di tempo.

Per aggiornare a livello atomico più regole, esporta il criterio di sicurezza corrente in un file JSON o YAML, quindi modificalo. Usa il file modificato per creare un nuovo criterio di sicurezza, quindi cambia il criterio per i servizi di backend pertinenti.

gcloud

  1. Esporta il criterio da aggiornare, come mostrato nell'esempio seguente:

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

    Il criterio esportato 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: evaluatePreconfiguredExpr('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 qualsiasi editor di testo per modificare il criterio. Ad esempio, puoi modificare le priorità delle regole esistenti e aggiungere una nuova regola:

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: deny(404)
      description: my-rule-1
      match:
        expr:
          expression: evaluatePreconfiguredExpr('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 un nuovo criterio di sicurezza di Google Cloud Armor e specifica il nome e il formato del file modificato, come mostrato nell'esempio seguente:

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

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

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. Se il criterio precedente non è utilizzato, eliminalo:

    gcloud compute security-policies delete my-policy
    

Eliminazione di regole da un criterio di sicurezza

Segui queste istruzioni per eliminare le regole da un criterio di sicurezza di Google Cloud Armor.

console

  1. In Google Cloud Console, vai alla pagina Sicurezza di rete.

    Vai a Sicurezza di rete

  2. Nella pagina Criteri di sicurezza, fai clic sul nome del criterio di sicurezza. Viene visualizzata la pagina Dettagli norme.

  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 questo comando per rimuovere una regola con la priorità specificata da un criterio di sicurezza designato. Puoi modificare un solo criterio 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

Passaggi successivi