Criteri di sicurezza di esempio

In questa pagina vengono descritti esempi di configurazioni dei criteri di sicurezza per diversi tipi di bilanciatori del carico e criteri di sicurezza.

Configura criteri di sicurezza per bilanciatori del carico delle applicazioni esterni

Di seguito sono riportati i passaggi di alto livello per configurare i criteri di sicurezza di Google Cloud Armor al fine di abilitare regole che consentono o negano il traffico verso l'Application Load Balancer esterno globale o l'Application Load Balancer classico:

  1. Crea un criterio di sicurezza di Google Cloud Armor.
  2. Aggiungi regole ai criteri di sicurezza in base a elenchi di indirizzi IP, espressioni personalizzate o set di espressioni preconfigurati.
  3. Collega il criterio di sicurezza a un servizio di backend dell'Application Load Balancer esterno globale o dell'Application Load Balancer classico per il quale vuoi controllare l'accesso.
  4. Aggiorna il criterio di sicurezza in base alle esigenze.

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

Esempio in cui due criteri di sicurezza vengono applicati a servizi di backend diversi.
Esempio in cui due criteri di sicurezza vengono applicati a servizi di backend diversi (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 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ù regioni, il criterio di sicurezza di Google Cloud Armor associato al servizio è applicabile alle istanze in tutte le regioni. 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.

Crea l'esempio

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

Console

Configura il criterio di sicurezza per gli utenti esterni:

  1. Nella console Google Cloud, vai alla pagina Criteri di Google Cloud Armor.

    Vai ai criteri di Google Cloud Armor

  2. Fai clic su Crea criteri.

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

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

  5. Per Azione regola predefinita, seleziona Rifiuta.

  6. Per Stato 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. In Azione, seleziona Consenti.
  6. Nel campo Priority (Priorità), inserisci 1000.
  7. Fai clic su Fine.
  8. Fai clic su Passaggio successivo.

Applica il criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Nell'elenco Target, seleziona un target.
  3. Fai clic su Fine.
  4. Fai clic su Crea criterio.

Facoltativamente, abilita Google Cloud Armor Adaptive Protection:

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

Configura il criterio di sicurezza per gli utenti interni:

  1. Fai clic su Crea criteri.
  2. Nel campo Nome, inserisci internal-users-policy.
  3. Nel campo Descrizione, inserisci Policy for internal test users.
  4. Per Azione regola predefinita, seleziona Rifiuta.
  5. Per Stato 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. In 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 il criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Nell'elenco Target, seleziona un 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 negare 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. Aggiungi 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. Facoltativamente, abilita 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
    

Crea criteri di sicurezza

Puoi utilizzare la console Google Cloud o gcloud CLI per creare criteri di sicurezza. Le istruzioni in questa sezione presuppongono che tu stia configurando criteri di sicurezza da applicare a un Application Load Balancer esterno globale esistente o a un Application Load Balancer classico e a un servizio di backend. Per un esempio di come completare i campi, consulta Creazione dell'esempio.

Console

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

  1. Nella console Google Cloud, vai alla pagina Criteri di Google Cloud Armor.

    Vai ai criteri di Google Cloud Armor

  2. Fai clic su Crea criteri.

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

  4. (Facoltativo) Inserisci una descrizione della norma.

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

  6. In Azione della regola predefinita, seleziona Consenti per una regola predefinita che consente l'accesso oppure seleziona Nega 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 priorità più bassa che ha effetto solo se non si applica nessun'altra regola.

  7. Se stai configurando una regola di nega, seleziona un messaggio di stato di negazione. Questo è il messaggio di errore che viene visualizzato da Google Cloud Armor se un utente senza accesso tenta di accedervi.

  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 di regole.
  4. Nel campo Corrispondenza, specifica le condizioni in cui si applica la regola:

    • Modalità di base: inserisci gli indirizzi IP o gli intervalli IP da abbinare alla regola.
    • Modalità avanzata: inserisci una o più sottoespressioni da valutare in base alle richieste in entrata. Per informazioni su come scrivere le espressioni, consulta la sezione Configurare attributi di linguaggio delle regole personalizzate.
  5. In 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 è attivata.

  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 il criterio alle destinazioni:

  1. Fai clic su Aggiungi target.
  2. Nell'elenco Target, seleziona un 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.

    Nel campo type, utilizza CLOUD_ARMOR per creare un criterio di sicurezza backend o CLOUD_ARMOR_EDGE per creare un criterio di sicurezza perimetrale. Il flag type è facoltativo; se non viene specificato alcun tipo, per impostazione predefinita viene creato un criterio di sicurezza del backend:

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

    Sostituisci quanto segue:

    • NAME: il nome del criterio di sicurezza
    • DESCRIPTION: la descrizione del criterio di sicurezza

    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.

    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]
    

    Sostituisci PRIORITY con la priorità assegnata alla regola nel criterio. Per informazioni sul funzionamento della priorità delle regole, consulta Ordine di valutazione delle regole.

    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 tutto il traffico che attiva la regola viene solo registrato.

    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. Per ulteriori informazioni, consulta Configurare attributi di linguaggio delle regole personalizzate. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP 1.2.3.4 e contiene la stringa example nell'intestazione 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('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('cookie_name=cookie_value')" \
        --action "deny-403" \
        --description "Cookie Block"
    

    Il seguente comando aggiunge una regola per bloccare le richieste 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 dalla regione AU che non si trovano 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('/bad_path/')" \
        --action "deny-403" \
        --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 "evaluatePreconfiguredExpr('sqli-stable')" \
        --action "deny-403"
    

    Il seguente comando 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"
    

Configura criteri di sicurezza per bilanciatori del carico delle applicazioni esterni regionali

Questa sezione contiene informazioni sulla configurazione dei criteri di sicurezza di Google Cloud Armor con ambito regionale per Application Load Balancer esterni regionali.

Proteggi i carichi di lavoro con bilanciamento del carico a livello di regione

Segui questi passaggi per configurare un criterio di sicurezza per proteggere il tuo servizio di backend con ambito regionale:

  1. Crea un criterio di sicurezza con ambito a livello di regione.

    gcloud beta compute security-policies create POLICY_NAME \
       --type=CLOUD_ARMOR \
       --region=REGION
    
  2. Collega il criterio di sicurezza con ambito a livello di regione a un servizio di backend con ambito a livello di regione. Sostituisci BACKEND_NAME con il nome del tuo servizio di backend con ambito regionale esistente.

    gcloud beta compute backend-services update BACKEND_NAME \
       --security-policy=POLICY_NAME \
       --region=REGION
    

Applica un criterio di sicurezza di Google Cloud Armor con ambito a livello di regione

Considera un esempio in cui sei un amministratore della sicurezza che vuole soddisfare un requisito di residenza secondo cui il deployment di tutti i carichi di lavoro di backend e delle regole WAF venga eseguito in una regione specifica. Supponiamo che tu abbia già eseguito le seguenti operazioni:

  1. Hai creato servizi di backend con bilanciamento del carico con ambito a livello di regione nell'area geografica.
  2. Hai disabilitato tutti i criteri di sicurezza con ambito a livello globale esistenti nel deployment.
  3. Hai creato e collegato un criterio di sicurezza con ambito a livello di regione nella stessa regione (come nella sezione precedente).

Puoi aggiungere regole WAF e altre regole avanzate al tuo criterio soddisfacendo al contempo il requisito utilizzando i seguenti comandi di esempio:

  • Aggiungi una regola WAF al criterio:

    gcloud beta compute security-policies rules create 1000 --action=deny-404 \
      --expression="evaluatePreconfiguredExpr('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Aggiungi una regola avanzata al criterio:

    gcloud beta compute security-policies rules create 1000 --action=allow \
      --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \
      --security-policy=POLICY_NAME \
      --region=REGION
    
  • Aggiungi una regola di limitazione di frequenza al criterio:

    gcloud beta compute security-policies rules create 1000 --action=throttle \
      --src-ip-ranges="1.1.1.1/32" \
      --rate-limit-threshold-count=1000 \
      --rate-limit-threshold-interval-sec=120 \
      --conform-action="allow" \
      --exceed-action="deny-429" \
      --enforce-on-key=IP \
      --ban-duration-sec=999 \
      --ban-threshold-count=5000 \
      --ban-threshold-interval-sec=60 \
      --security-policy=POLICY_NAME \
      --region=REGION
    

Passaggi successivi