Esempi di policy di sicurezza

Questa pagina descrive degli esempi di configurazioni delle policy di sicurezza per diversi tipi di bilanciatori del carico e policy di sicurezza.

Configura le policy di sicurezza per i bilanciatori del carico delle applicazioni esterni

Di seguito sono riportati i passaggi di alto livello per configurare le policy di sicurezza di Google Cloud Armor per attivare le regole che consentono o negano il traffico al bilanciatore del carico delle applicazioni esterno globale o al bilanciatore del carico delle applicazioni classico:

  1. Crea una policy di sicurezza di Cloud Armor.
  2. Aggiungi regole alle policy di sicurezza in base a elenchi di indirizzi IP, espressioni personalizzate o set di espressioni preconfigurati.
  3. Collega la policy di sicurezza a un servizio di backend del bilanciatore del carico delle applicazioni esterno globale o del bilanciatore del carico delle applicazioni classico per cui vuoi controllare l'accesso.
  4. Aggiorna la policy di sicurezza in base alle tue esigenze.

Nell'esempio seguente, crei due policy di sicurezza Cloud Armor e le applichi a servizi di backend diversi.

Esempio in cui vengono applicate due policy di sicurezza a servizi di backend diversi.
Esempio in cui due policy di sicurezza vengono applicate a servizi di backend diversi (fai clic per ingrandire).

Nell'esempio, queste sono le policy di sicurezza di 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 si chiama games, e applichi internal-users-policy al servizio interno test per il team di test, il cui servizio di backend corrispondente si chiama test-network.

Se le istanze di backend per un servizio di backend si trovano in più regioni, la policy di sicurezza Cloud Armor associata al servizio è applicabile alle istanze in tutte le regioni. Nell'esempio precedente, la policy 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

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

Console

Configura la policy di sicurezza per gli utenti esterni:

  1. Nella console Google Cloud , vai alla pagina Policy Google Cloud Armor.

    Vai a Policy Google Cloud Armor

  2. Fai clic su Crea policy.

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

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

  5. In Azione regola predefinita, seleziona Nega.

  6. In Stato di negazione, seleziona 404 (Destinazione non trovata).

  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à base (solo indirizzi/intervalli IP).
  4. Nel campo Corrispondenza, inserisci 192.0.2.0/24.
  5. In Azione, seleziona Consenti.
  6. Nel campo Priorità, inserisci 1000.
  7. Fai clic su Fine.
  8. Fai clic su Passaggio successivo.

Applica la policy ai target:

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

Se lo desideri, abilita Google Cloud Armor Adaptive Protection:

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

Configura la policy di sicurezza per gli utenti interni:

  1. Fai clic su Crea policy.
  2. Nel campo Nome, inserisci internal-users-policy.
  3. Nel campo Descrizione, inserisci Policy for internal test users.
  4. In Azione regola predefinita, seleziona Nega.
  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à base (solo indirizzi/intervalli IP).
  4. Nel campo Corrispondenza, inserisci 198.51.100.0/24.
  5. In Azione, seleziona Consenti.
  6. In Solo anteprima, seleziona la casella di controllo Abilita.
  7. Nel campo Priorità, inserisci 1000.
  8. Fai clic su Fine.
  9. Fai clic su Passaggio successivo.

Applica la policy ai target:

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

gcloud

  1. Crea le policy di sicurezza di 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 delle policy 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 alle policy 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 le policy 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 lo desideri, 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
    

Crea policy di sicurezza

Puoi utilizzare la console Google Cloud o gcloud CLI per creare policy di sicurezza. Le istruzioni in questa sezione presuppongono che tu stia configurando le policy di sicurezza da applicare a un bilanciatore del carico delle applicazioni esterno globale o a un bilanciatore del carico delle applicazioni classico e a un servizio di backend esistenti. Per un esempio di come compilare i campi, consulta Crea l'esempio.

Console

Crea regole e policy di sicurezza di Cloud Armor e associa una policy di sicurezza a un servizio di backend:

  1. Nella console Google Cloud , vai alla pagina Policy Google Cloud Armor.

    Vai a Policy Google Cloud Armor

  2. Fai clic su Crea policy.

  3. Nel campo Nome, inserisci il nome della policy.

  4. (Facoltativo) Inserisci una descrizione della policy.

  5. In Tipo di policy, scegli Policy di sicurezza del backend o Policy di sicurezza perimetrale.

  6. In Azione 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 la priorità più bassa che ha effetto solo se non si applica nessun'altra regola.

  7. Se stai configurando una regola Nega, seleziona un messaggio di Stato di negazione. Questo è il messaggio di errore visualizzato da Cloud Armor se un utente senza accesso tenta di ottenerlo.

  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 della regola.
  3. 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.
  4. Nel campo Corrispondenza, specifica le condizioni in base alle quali si applica la regola:

    • Modalità di base: inserisci gli indirizzi IP o gli intervalli IP a cui deve corrispondere la regola.
    • Modalità avanzata: inserisci un'espressione o delle sottoespressioni da valutare rispetto alle richieste in entrata. Per informazioni su come scrivere le espressioni, consulta Configura gli attributi del linguaggio delle regole personalizzate.
  5. In Azione, seleziona Consenti o Nega per consentire o negare il traffico se la regola corrisponde.

  6. Per attivare la modalità di anteprima, seleziona la casella di controllo Abilita. In modalità di anteprima, puoi vedere il comportamento della regola, ma la regola 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. Altrimenti, fai clic su Passaggio successivo.

Applica la policy ai target:

  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 policy.

gcloud

  1. Per creare una nuova policy di sicurezza Cloud Armor, utilizza il comando gcloud compute security-policies create.

    Nel campo type, utilizza CLOUD_ARMOR per creare una policy di sicurezza del backend o CLOUD_ARMOR_EDGE per creare una policy di sicurezza perimetrale. Il flag type è facoltativo; se non viene specificato alcun tipo, viene creata per impostazione predefinita una policy 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 della policy di sicurezza
    • DESCRIPTION: la descrizione della policy di sicurezza

    Il seguente comando aggiorna una policy che hai 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 una policy 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 nella policy. Per informazioni su come funziona la priorità delle regole, consulta Ordine di valutazione delle regole.

    Ad esempio, il seguente comando aggiunge una regola per bloccare il traffico proveniente dagli intervalli di indirizzi IP 192.0.2.0/24 e 198.51.100.0/24. La regola ha priorità 1000 e fa parte di una policy denominata 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 l'aggiunta del flag --preview, la regola viene aggiunta alla policy, ma non viene applicata e il traffico che la attiva 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 saperne di più, consulta Configura gli attributi del 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 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 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-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 "evaluatePreconfiguredWaf('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 di un elenco di indirizzi IP con un nome:

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

Configura le policy di sicurezza per i bilanciatori del carico delle applicazioni esterni regionali

Questa sezione contiene informazioni sulla configurazione delle policy di sicurezza Cloud Armor con ambito regionale per i bilanciatori del carico delle applicazioni esterni regionali.

Proteggi i workload con bilanciamento del carico regionale

Per configurare una policy di sicurezza per proteggere il servizio di backend con ambito regionale, segui questi passaggi:

  1. Crea una policy di sicurezza con ambito regionale.

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

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

Applica una policy di sicurezza di Cloud Armor con ambito regionale

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

  1. Hai creato dei servizi di backend con bilanciamento del carico e ambito regionale nella regione.
  2. Hai disattivato tutte le policy di sicurezza con ambito globale esistenti nel tuo deployment.
  3. Hai creato e collegato una policy di sicurezza con ambito regionale nella stessa regione (come nella sezione precedente).

Puoi aggiungere regole WAF e altre regole avanzate alla policy continuando a soddisfare il requisito utilizzando i seguenti comandi di esempio:

  • Aggiungi una regola WAF alla policy:

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

    gcloud 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 alla policy:

    gcloud 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