Questa pagina descrive configurazioni di criteri di sicurezza di esempio per diversi tipi di bilanciatori del carico e criteri di sicurezza.
Configura i criteri di sicurezza per i 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 in modo da attivare regole che consentano o neghino il traffico verso il bilanciatore del carico delle applicazioni esterno globale o il bilanciatore del carico delle applicazioni classico:
- Crea un criterio di sicurezza di Google Cloud Armor.
- Aggiungi regole al criterio di sicurezza in base a elenchi di indirizzi IP, espressioni personalizzate o set di espressioni preconfigurati.
- Collega il criterio 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.
- Aggiorna il criterio di sicurezza in base alle tue esigenze.
Nell'esempio seguente, crei due criteri di sicurezza di Google Cloud Armor e li applichi a diversi servizi di backend.
Nell'esempio, questi sono i criteri di sicurezza di Google Cloud Armor:
mobile-clients-policy
si applica agli utenti esterni dei tuoi servizigames
.internal-users-policy
si applica al teamtest-network
della tua organizzazione.
Applicchi mobile-clients-policy
al servizio games
, il cui servizio di backend è chiamato games
, e 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, la policy di sicurezza Google Cloud Armor associata al servizio è applicabile alle istanze di 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
Segui queste istruzioni per creare la configurazione di esempio descritta nella sezione precedente.
Console
Configura il criterio di sicurezza per gli utenti esterni:
Nella console Google Cloud, vai alla pagina Criteri di Google Cloud Armor.
Fai clic su Crea criteri.
Nel campo Nome, inserisci
mobile-clients-policy
.Nel campo Descrizione, inserisci
Policy for external users
.Per Azione regola predefinita, seleziona Nega.
Per Stato di rifiuto, seleziona 404 (Destinazione non trovata).
Fai clic su Passaggio successivo.
Aggiungi altre regole:
- Fai clic su Aggiungi regola.
- Nel campo Descrizione, inserisci
allow traffic from 192.0.2.0/24
. - In Modalità, seleziona Modalità di base (solo indirizzi/intervalli IP).
- Nel campo Corrispondenza, inserisci
192.0.2.0/24
. - Per Azione, seleziona Consenti.
- Nel campo Priority (Priorità), inserisci
1000
. - Fai clic su Fine.
- Fai clic su Passaggio successivo.
Applica il criterio alle destinazioni:
- Fai clic su Aggiungi target.
- Nell'elenco Destinazione, seleziona una destinazione.
- Fai clic su Fine.
- Fai clic su Crea criterio.
Facoltativamente, abilita Cloud Armor Adaptive Protection di Google:
- Per attivare Adaptive Protection, seleziona la casella di controllo Attiva.
Configura il criterio di sicurezza per gli utenti interni:
- Fai clic su Crea criteri.
- Nel campo Nome, inserisci
internal-users-policy
. - Nel campo Descrizione, inserisci
Policy for internal test users
. - Per Azione regola predefinita, seleziona Nega.
- In Stato di rifiuto, seleziona 502 (Gateway non valido).
- Fai clic su Passaggio successivo.
Aggiungi altre regole:
- Fai clic su Aggiungi regola.
- Nel campo Descrizione, inserisci
allow traffic from 198.51.100.0/24
. - In Modalità, seleziona Modalità di base (solo indirizzi/intervalli IP).
- Nel campo Corrispondenza, inserisci
198.51.100.0/24
. - Per Azione, seleziona Consenti.
- Per Solo anteprima, seleziona la casella di controllo Attiva.
- Nel campo Priority (Priorità), inserisci
1000
. - Fai clic su Fine.
- Fai clic su Passaggio successivo.
Applica il criterio alle destinazioni:
- Fai clic su Aggiungi target.
- Nell'elenco Destinazione, seleziona una destinazione.
- Fai clic su Fine.
- Fai clic su Crea criterio.
gcloud
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"
Aggiorna le regole predefinite dei 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"
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"
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
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
Crea criteri di sicurezza
Puoi utilizzare la console Google Cloud o gcloud CLI per creare i criteri di sicurezza. Le istruzioni in questa sezione presuppongono che tu stia configurando criteri di sicurezza da applicare a un bilanciatore del carico delle applicazioni esterno globale esistente o a un bilanciatore del carico delle applicazioni classico e a un servizio di backend. Per un esempio di come compilare i campi, consulta Creare l'esempio.
Console
Crea criteri e regole di sicurezza di Google Cloud Armor e associa un criterio di sicurezza a un servizio di backend:
Nella console Google Cloud, vai alla pagina Criteri di Google Cloud Armor.
Fai clic su Crea criteri.
Nel campo Nome, inserisci il nome del criterio.
(Facoltativo) Inserisci una descrizione delle norme.
In Tipo di criterio, scegli Criterio di sicurezza di backend o Criterio di sicurezza perimetrale.
In Azione regola predefinita, seleziona Consenti per una regola predefinita che consente l'accesso o Rifiuta per una regola predefinita che ne impedisce l'accesso a un indirizzo IP o a un intervallo di indirizzi IP.
La regola predefinita è la regola con la priorità più bassa che viene applicata solo se non è valida nessun'altra regola.
Se stai configurando una regola Rifiuta, seleziona un messaggio Stato di rifiuto. Questo è il messaggio di errore visualizzato da Google Cloud Armor se un utente senza accesso tenta di ottenerne uno.
Indipendentemente dal tipo di regola che stai configurando, fai clic su Passaggio successivo.
Aggiungi altre regole:
- Fai clic su Aggiungi regola.
- (Facoltativo) Inserisci una descrizione per la regola.
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 delle regole.
Nel campo Corrispondenza, specifica le condizioni in base alle quali si applica la regola:
- Modalità di base: inserisci gli indirizzi IP o gli intervalli di indirizzi IP da associare nella regola.
- Modalità avanzata: inserisci un'espressione o sottoespressioni da valutare in base alle richieste in arrivo. Per informazioni su come scrivere le espressioni, consulta la sezione Configurare gli attributi del linguaggio delle regole personalizzate.
In Azione, seleziona Consenti o Nega per consentire o negare il traffico se la regola corrisponde.
Per attivare la modalità di anteprima, seleziona la casella di controllo Attiva. In modalità di anteprima, puoi vedere il comportamento della regola, ma la regola non è attivata.
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.
Fai clic su Fine.
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:
- Fai clic su Aggiungi target.
- Nell'elenco Destinazione, seleziona una destinazione.
- Per aggiungere altri target, fai clic su Aggiungi target.
- Fai clic su Fine.
- Fai clic su Crea criterio.
gcloud
Per creare un nuovo criterio di sicurezza di Google Cloud Armor, utilizza il comando
gcloud compute security-policies create
.Nel campo
type
, utilizzaCLOUD_ARMOR
per creare un criterio di sicurezza di backend oCLOUD_ARMOR_EDGE
per creare un criterio di sicurezza perimetrale. Iltype
è facoltativo. Se non viene specificato alcun tipo, per impostazione predefinita viene creato un criterio di sicurezza di 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 sicurezzaDESCRIPTION
: 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
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 proveniente dagli intervalli di indirizzi IP
192.0.2.0/24
e198.51.100.0/24
. La regola ha una priorità di 1000 ed è una regola in un criterio denominatomy-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 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. Per ulteriori informazioni, consulta Configurare gli attributi del linguaggio delle regole personalizzate. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP1.2.3.4
e contiene la stringaexample
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 insieme 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 di un elenco di indirizzi IP denominato:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \ --action "allow"
Configurare i criteri di sicurezza per i bilanciatori del carico delle applicazioni esterni regionali
Questa sezione contiene informazioni sulla configurazione dei criteri di sicurezza di Google Cloud Armor con ambito a livello di regione per i bilanciatori del carico delle applicazioni esterni regionali.
Proteggere i carichi di lavoro bilanciati a livello di regione
Per configurare un criterio di sicurezza per proteggere il servizio di backend con ambito regionale:
Crea un criterio di sicurezza con ambito regionale.
gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR \ --region=REGION
Collega il criterio di sicurezza con ambito regionale a un servizio di backend con ambito regionale. Sostituisci
BACKEND_NAME
con il nome del servizio di backend esistente con ambito a livello di regione.gcloud compute backend-services update BACKEND_NAME \ --security-policy=POLICY_NAME \ --region=REGION
Applicare un criterio di sicurezza di Google Cloud Armor con ambito regionale
Supponiamo che tu sia un amministratore della sicurezza che vuole soddisfare un requisito di residenza che prevede che tutti i tuoi workload di backend e le regole WAF siano di cui hai eseguito il deployment in una regione specifica. Supponiamo che tu abbia eseguito quanto segue in precedenza:
- Hai creato servizi di backend con bilanciamento del carico a livello di regione nella regione.
- Hai disattivato eventuali criteri di sicurezza con ambito a livello globale esistenti nel tuo deployment.
- Hai creato e collegato un criterio di sicurezza con ambito regionale nella stessa regione (come nella sezione precedente).
Puoi aggiungere regole WAF e altre regole avanzate al tuo criterio soddisfacendo il requisito utilizzando i seguenti comandi di esempio:
Aggiungi una regola WAF al criterio:
gcloud 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 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 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
- Configura i criteri di sicurezza di Google Cloud Armor
- Scopri di più sulla limitazione della frequenza.