Segui queste istruzioni per creare i criteri di sicurezza di Google Cloud Armor per filtrare il traffico in entrata destinato ai bilanciatori del carico HTTP(S) esterni globali o ai bilanciatori del carico HTTP(S) esterni globali (classico). 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), vedi Criteri di sicurezza di Google Cloud Armor nella sezione Configurazione delle funzionalità Ingress tramite i parametri BackendConfig.
Prima di iniziare
Prima di configurare i criteri di sicurezza, procedi nel seguente modo:
Assicurati di conoscere i concetti relativi al 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 un criterio di sicurezza appena creato o esistente al servizio di backend.
Configurare le autorizzazioni IAM per i criteri di sicurezza di Google Cloud Armor
Le seguenti operazioni richiedono il ruolo Identity and Access Management (IAM) Amministratore sicurezza Compute (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
BackendServices list
(sologcloud
)
Gli utenti con i ruoli di amministratore di sicurezza e amministratore di rete possono visualizzare i criteri di sicurezza di Google Cloud Armor utilizzando i metodi API SecurityPolicy get
, list
e getRule
.
Configura le autorizzazioni IAM per i ruoli personalizzati
La seguente tabella elenca le autorizzazioni di base dei ruoli IAM e i relativi 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 |
Configura i criteri di sicurezza per il bilanciamento del carico HTTP(S)
Di seguito sono riportati i passaggi generale per la configurazione dei criteri di sicurezza di Google Cloud Armor per abilitare regole che consentono o negano il traffico a bilanciatori del carico HTTP(S) esterni globali o a bilanciatori del carico HTTP(S) esterni globali (classici):
- 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 HTTP(S) esterno globale o del bilanciatore del carico HTTP(S) esterno globale (classico) per il quale vuoi controllare l'accesso.
- Aggiorna il criterio di sicurezza in base alle necessità.
Nell'esempio seguente, crei due criteri di sicurezza di Google Cloud Armor e li applichi a diversi servizi di backend.
Nell'esempio sono riportati 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.
Applichi mobile-clients-policy
al servizio games
, il cui servizio di backend è chiamato games
, mentre applichi internal-users-policy
al servizio test
interno per il team di test, il cui servizio di backend corrispondente viene 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
.
Crea l'esempio
Utilizza queste istruzioni per creare la configurazione di esempio illustrata nella sezione precedente.
Console
Configura il criterio di sicurezza per gli utenti esterni:
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Norme, fai clic su Crea criterio.
Nel campo Nome, inserisci
mobile-clients-policy
.Nel campo Descrizione, inserisci
Policy for external users
.In Azione della regola predefinita, seleziona Rifiuta.
In Stato di negazione, seleziona 404 (Non trovato).
Fai clic su Passaggio successivo.
Aggiungere 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 Target, seleziona una destinazione.
- Fai clic su Fine.
- Fai clic su Crea criterio.
(Facoltativo) Attiva Adaptive Protection:
- Per attivare Adaptive Protection, seleziona la casella di controllo Attiva.
Configura il criterio di sicurezza per gli utenti interni:
- Nella pagina Norme, fai clic su Crea criterio.
- Nel campo Nome, inserisci
internal-users-policy
. - Nel campo Descrizione, inserisci
Policy for internal test users
. - In Azione della regola predefinita, seleziona Rifiuta.
- In Stato di negazione, seleziona 502 (Gateway non valido).
- Fai clic su Passaggio successivo.
Aggiungere 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 l'opzione 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 Target, 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 in modo da 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"
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"
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
(Facoltativo) 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
Configura criteri, regole ed espressioni di sicurezza
Puoi configurare criteri, regole ed espressioni di sicurezza di Google Cloud Armor utilizzando la console Google Cloud, Google Cloud CLI o l'API REST. Quando utilizzi l'interfaccia a riga di comando gcloud per creare criteri di sicurezza, usa il flag --type
per specificare se il criterio di sicurezza è un criterio di sicurezza di backend o un criterio di sicurezza perimetrale.
Testa i 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 considera ogni codice in modo indipendente. Le regole e le espressioni di Google Cloud Armor utilizzano esplicitamente questi codici regione per consentire o negare le richieste.
La seguente espressione corrisponde alle richieste dell'indirizzo IP
1.2.3.4
e contiene la stringaGodzilla
nell'intestazione dello 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 che hanno un cookie con un valore specifico:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
La seguente espressione corrisponde alle richieste della regione
AU
:origin.region_code == 'AU'
La seguente espressione corrisponde alle richieste della regione
AU
che non rientrano nell'intervallo IP specificato:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
La seguente espressione corrisponde alle richieste con un percorso variabile numerato che rimanda 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 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 del set di espressioni preconfigurata contro gli attacchi SQLi:
evaluatePreconfiguredExpr('sqli-stable')
Utilizza l'analisi JSON
Puoi attivare o disattivare l'analisi dei contenuti del corpo JSON delle richieste POST per ogni criterio di sicurezza. Quando l'intestazione Content-Type
è impostata su application/json
, utilizza il flag --json-parsing
in Google Cloud CLI.
Per impostazione predefinita, questa opzione è disattivata. La sintassi per il flag è la seguente:
--json-parsing=[STANDARD | DISABLED]
Il flag è disponibile soltanto 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 il file. Per scoprire di più, vedi Importazione dei criteri di sicurezza.
Per saperne di più sull'analisi JSON, consulta Analisi JSON e logging dettagliato.
Utilizza il logging dettagliato
Puoi configurare il livello di logging di Google Cloud Armor per abilitare il logging più dettagliato per ogni criterio di sicurezza utilizzando il flag --log-level
nellgcloud CLI.
Per impostazione predefinita, questa opzione è disattivata. La sintassi per il flag è la seguente:
--log-level=[NORMAL | VERBOSE]
Il flag è disponibile soltanto 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 il file. Per scoprire di più, vedi Importazione dei criteri di sicurezza.
Per saperne di più sul logging dettagliato, consulta Analisi JSON e logging dettagliato.
Configurare regole per la limitazione di frequenza
Questa sezione contiene informazioni sulla configurazione delle regole di Google Cloud Armor per applicare limiti di frequenza per client configurando un'azione di esclusione o limitazione 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 | HTTP-PATH | SNI | REGION-CODE] --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 da 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 inoltre emettere divieti basati sulla frequenza 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 di annunci in base alla tariffa
Le regole per i divieti basati sulle tariffe 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 | HTTP-PATH | SNI | REGION-CODE] --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Ad esempio, il seguente comando gcloud
crea una regola di esclusione basata su tariffa con priorità 100 per ogni indirizzo IP le cui richieste corrispondono a un'intestazione fish
con valore tuna
ed escludelo per 300 secondi quando la sua frequenza supera un limite di 50 richieste ogni 120 secondi. Le richieste vietate restituiscono un codice di errore pari a 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 su tariffa con priorità 101 per limitare tutte le richieste il cui codice regione corrisponde a US
per 10 richieste ogni 60 secondi. La regola esclude anche le richieste dalla regione US
per 300 secondi quando la loro 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 su 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 esclude anche le richieste da qualsiasi intervallo di indirizzi IP di origine per 600 secondi quando la loro frequenza supera un limite di 500 richieste ogni 400 secondi. Le richieste vietate 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
Utilizza la console Google Cloud e gcloud CLI per creare criteri di sicurezza.
Le istruzioni in questa sezione presuppongono che tu stia configurando i criteri di sicurezza da applicare a un bilanciatore del carico HTTP(S) esterno globale o a un bilanciatore del carico HTTP(S) esterno globale (classico) e a un servizio di backend globali esistenti. Per un esempio di come compilare i campi, consulta Creazione dell'esempio.
Console
Creare regole e criteri di sicurezza di Google Cloud Armor e collegare un criterio di sicurezza a un servizio di backend:
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Norme, fai clic su Crea criterio.
Nel campo Nome, inserisci il nome della norma.
(Facoltativo) Inserisci una descrizione del criterio.
In Tipo di criterio scegli Criterio di sicurezza del backend o Criterio di sicurezza del perimetro.
Per Azione di regola predefinita, seleziona Consenti per una regola predefinita che consente l'accesso oppure Rifiuta per una regola predefinita che vieta l'accesso a un indirizzo IP o un intervallo di indirizzi IP.
La regola predefinita è la regola con la priorità più bassa applicata solo se non sono applicabili altre regole.
Se stai configurando una regola Nega, seleziona un messaggio Stato di negazione. Questo è il messaggio di errore che viene visualizzato da Google Cloud Armor se un utente senza accesso tenta di ottenere l'accesso.
Indipendentemente dal tipo di regola che stai configurando, fai clic su Passaggio successivo.
Aggiungere altre regole:
- Fai clic su Aggiungi regola.
- (Facoltativo) Inserisci una descrizione per la regola.
Seleziona la modalità:
- Modalità di base: consente o rifiuta il traffico in base agli indirizzi IP o agli intervalli IP.
- Modalità avanzata: consente di consentire o negare il traffico in base alle espressioni delle regole.
Nel campo Corrispondenza, specifica le condizioni in cui viene applicata la regola:
- Modalità di base: inserisci gli indirizzi IP o gli intervalli IP corrispondenti alla regola.
- Modalità avanzata: inserisci un'espressione o delle sottoespressioni per eseguire la valutazione in base alle richieste in arrivo. Per informazioni su come scrivere le espressioni, consulta la pagina di riferimento per le regole personalizzate.
In Azione, seleziona Consenti o Rifiuta 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 non è attivata.
Inserisci la Priorità della regola. Può essere qualsiasi numero intero positivo compreso tra 0 e 2.147.483.646 inclusi. Per scoprire di più 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 Target, 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
. SostituisciNAME
eDESCRIPTION
con il nome e la descrizione del criterio di sicurezza. Nel campotype
, utilizzaCLOUD_ARMOR
per creare un criterio di sicurezza backend oCLOUD_ARMOR_EDGE
per creare un criterio di sicurezza perimetrale. Il flagtype
non è 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 comando seguente aggiorna un criterio creato in precedenza, attiva l'analisi JSON e modifica il livello di log su
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
. SostituisciPRIORITY
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, mentre tutto il 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 della lingua delle regole personalizzate. Il seguente comando aggiunge una regola per consentire il traffico dall'indirizzo IP1.2.3.4
e contiene la stringaGodzilla
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 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 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('/bad_path/')" \ --action "deny-403" \ --description "regex block"
Il seguente comando aggiunge una regola per bloccare le richieste se il valore decodificato 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 comando seguente 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"
Configura 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 della gestione dei bot.
Utilizza una sfida manuale di reCAPTCHA Enterprise per distinguere tra client umani o automatizzati
Per associare o annullare l'associazione della chiave del sito WAF reCAPTCHA con 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), a seconda dei casi.
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key SITE_KEY
L'esempio seguente associa una chiave di sito WAF reCAPTCHA a un criterio di sicurezza. La chiave di sito associata si applica a tutte le regole che utilizzano la funzionalità di verifica manuale in base ai criteri di sicurezza specificati.
gcloud compute security-policies update my-policy \ --recaptcha-redirect-site-key "SITE_KEY"
Puoi anche annullare l'associazione di una chiave 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 internamente il traffico per la valutazione di reCAPTCHA Enterprise, 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 google-recaptcha
L'esempio seguente crea una regola che reindirizza il traffico che tenta 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 sull'utilizzo dei token di azione o di token di sessione reCAPTCHA Enterprise.
Puoi utilizzare token.recaptcha_action.ATTRIBUTE
(sostituendo ATTRIBUTE con un attributo del token valido nel linguaggio delle regole di Google Cloud Armor) per estrarre gli attributi da un token di azione di reCAPTCHA Enterprise. Analogamente, puoi utilizzare
token.recaptcha_session.ATTRIBUTE
per un
token di sessione reCAPTCHA Enterprise. Per ulteriori informazioni sulla sintassi degli attributi dei token reCAPTCHA Enterprise disponibili, consulta il riferimento per il 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 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 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 aggiunge intestazioni personalizzate e valori statici definiti dall'utente prima di eseguirne il proxy ai 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 reCAPTCHA per l'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"
Usa Adaptive Protection
Adaptive Protection viene applicato in base ai criteri di sicurezza.
Console
Per attivare Adaptive Protection per un criterio di sicurezza:
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri, fai clic sul nome di un criterio di sicurezza.
Fai clic su Modifica.
In Adaptive Protection, seleziona Attiva.
Fai clic su Aggiorna.
Per disattivare Adaptive Protection per un criterio di sicurezza:
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri, fai clic sul nome di un criterio di sicurezza.
Fai clic su Modifica.
In Adaptive Protection, deseleziona Attiva.
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
Elenca le regole preconfigurate disponibili
Elenca le regole preconfigurate per visualizzare le regole e le firme predefinite di protezione delle applicazioni, come il Set di regole di base di ModSecurity fornito da Google Cloud Armor. Queste regole preconfigurate contengono più firme integrate che Google Cloud Armor utilizza per valutare le richieste in arrivo. Puoi aggiungere queste regole preconfigurate a regole nuove o esistenti utilizzando il riferimento per la lingua per le regole personalizzate.
Per scoprire di più, consulta le regole preconfigurate.
gcloud
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 del comando:
EXPRESSION_SET expression-set-1 RULE_ID SENSITIVITY expression-set-1-id-1 sensitivity-value-1 expression-set-1-id-2 sensitivity-value-2 expression-set-2 alias-1 RULE_ID SENSITIVITY expression-set-2-id-1 sensitivity-value-1 expression-set-2-id-2 sensitivity-value-2
L'esempio seguente include un esempio dell'output effettivo del comando. Tieni presente che l'output effettivo include tutte le regole elencate in Regolazione delle regole WAF Google Cloud Armor.
gcloud compute security-policies list-preconfigured-expression-sets
EXPRESSION_SET sqli-canary RULE_ID SENSITIVITY owasp-crs-v030001-id942110-sqli 2 owasp-crs-v030001-id942120-sqli 2 … xss-canary RULE_ID SENSITIVITY owasp-crs-v030001-id941110-xss 1 owasp-crs-v030001-id941120-xss 1 … sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Elenca criteri di sicurezza
Segui queste istruzioni per elencare tutti i criteri di sicurezza di Google Cloud Armor nel progetto attuale o in un progetto da te specificato.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Per visualizzare un determinato criterio, fai clic sul nome nell'elenco dei criteri nella pagina Criteri di sicurezza.
gcloud
gcloud compute security-policies list
Ad esempio:
gcloud compute security-policies list
NAME my-policy
Per maggiori informazioni, consulta
gcloud compute security-policies list
.
Aggiornamento dei criteri di sicurezza
Segui queste istruzioni per aggiornare un criterio di sicurezza di Google Cloud Armor. Ad esempio, puoi modificare la descrizione del criterio, il comportamento della regola predefinita o il servizio di backend di destinazione oppure aggiungere nuove regole.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Per aggiornare un determinato criterio, fai clic su
Menu nel criterio che vuoi aggiornare nella pagina Criteri di sicurezza.- Per aggiornare la descrizione del criterio dell'azione predefinita per la regola, seleziona Modifica, apporta le modifiche volute e fai clic su Aggiorna.
- Per aggiungere una regola, seleziona Aggiungi regola, quindi segui le istruzioni nell'articolo Aggiungere regole a un criterio di sicurezza.
- Per modificare il servizio di backend di destinazione per il criterio, seleziona Applica criterio al target, fai clic su Aggiungi target, seleziona una destinazione e fai clic su Aggiungi.
gcloud
Per aggiornare un criterio di sicurezza, segui le istruzioni per Google Cloud CLI:
- Per aggiornare una regola in un criterio di sicurezza, vedi Aggiornare una singola regola in un criterio di sicurezza.
- Per aggiungere una regola a un criterio di sicurezza, vedi Aggiungere regole a un criterio di sicurezza.
- Per eliminare una regola da un criterio di sicurezza, vedi Eliminare le regole da un criterio di sicurezza.
- Per aggiornare più regole in un singolo aggiornamento (aggiornamento atomico), consulta la sezione Aggiornare più regole in modo atomico in un criterio di sicurezza.
- Per aggiornare i campi non relativi alle regole in un criterio di sicurezza (ad esempio il campo Descrizione), consulta Esportare i criteri di sicurezza e Importare i criteri di sicurezza.
Esporta criteri di sicurezza
Puoi esportare un criterio di sicurezza di Google Cloud Armor come file YAML o JSON utilizzando Google Cloud CLI. L'esportazione di un criterio consente di recuperarne una copia che puoi modificare o salvare nel controllo del codice sorgente.
gcloud
Nel comando seguente,
NAME
è il nome del criterio di sicurezza. I formati file validi sono YAML e JSON. Se non fornisci il formato file, Google Cloud Armor utilizza il file YAML predefinito.gcloud compute security-policies export NAME \ --file-name FILE_NAME \ --file-format FILE_FORMAT
L'esempio seguente esporta il criterio di sicurezza di
my-policy
nel filemy-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
Puoi modificare il file esportato con qualsiasi editor di testo e poi importarlo di nuovo in Google Cloud utilizzando il comando
import
.
Importa criteri di sicurezza
Puoi importare i criteri di sicurezza di Google Cloud Armor da un file YAML o JSON utilizzando Google Cloud CLI. 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 Aggiornamento di una singola regola in un criterio di sicurezza oppure tutte contemporaneamente utilizzando la procedura Aggiornamento atomico di 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 file, si presume il formato corretto in base alla struttura del file. Se la struttura non è valida, viene visualizzato un errore.
gcloud compute security-policies import NAME \ --file-name FILE_NAME \ [--file-format FILE_FORMAT]
Ad esempio, il seguente comando 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 digitale 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 ottenere l'ultima impronta.
Unisci le differenze tra le norme descritte e le norme, quindi sostituisci l'impronta obsoleta con quella più recente.
Elimina criteri di sicurezza
Segui queste istruzioni per eliminare un criterio di sicurezza di Google Cloud Armor. Devi rimuovere tutti i servizi di backend dal criterio prima di poterlo eliminare.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, seleziona la casella di controllo accanto al nome del criterio di sicurezza da eliminare.
Nell'angolo in alto a destra della pagina, fai clic su
Elimina.
gcloud
Usa gcloud compute security-policies delete NAME
.
Sostituisci NAME
con il nome del criterio di sicurezza:
gcloud compute security-policies delete NAME
Collega 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 ogni servizio di backend può essere associato un solo tipo di criterio di sicurezza.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Target.
Fai clic su Applica criterio a una nuova destinazione.
Fai clic su Aggiungi target.
Nell'elenco Target, seleziona una destinazione e 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
Rimuovere 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.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Target.
Seleziona il servizio di backend di destinazione da cui intendi rimuovere il criterio.
Fai clic su Rimuovi.
Nel messaggio Rimuovi target, fai clic su Rimuovi.
gcloud
Quando rimuovi un criterio di sicurezza del backend, utilizza il comando gcloud compute
backend-services
e il flag --security-policy
:
gcloud compute backend-services update my-backend \ --security-policy ""
Quando rimuovi 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 ""
Collega un criterio di sicurezza a un bucket di backend
Segui queste istruzioni per collegare un criterio di sicurezza perimetrale di Google Cloud Armor a un bucket di backend. Un criterio di sicurezza perimetrale può essere associato a più di un bucket di backend.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Target.
Fai clic su Applica criterio a una nuova destinazione.
Fai clic su Aggiungi target.
Nell'elenco Target, seleziona una destinazione e fai clic su Aggiungi.
gcloud
Quando colleghi un criterio di sicurezza perimetrale a un bucket di backend, utilizza il comando cloud compute backend-buckets
e il flag --edge-security-policy
:
gcloud compute backend-services update my-bucket \ --edge-security-policy my-edge-policy
Rimuovi un criterio di sicurezza da un bucket di backend
Segui queste istruzioni per rimuovere un criterio di sicurezza perimetrale di Google Cloud Armor da un bucket di backend.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Target.
Seleziona il servizio di backend di destinazione da cui intendi rimuovere il criterio.
Fai clic su Rimuovi.
Nel messaggio Rimuovi target, fai clic su Rimuovi.
gcloud
Quando rimuovi un criterio di sicurezza perimetrale da un bucket di backend, utilizza il comando cloud compute backend-buckets
e il flag --edge-security-policy
:
gcloud compute backend-services update my-bucket \ --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
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Regole.
Fai clic su Aggiungi regola.
(Facoltativo) Inserisci una descrizione della regola.
Seleziona la modalità:
- Modalità di base: consente o rifiuta il traffico in base agli indirizzi IP o agli intervalli IP.
- Modalità avanzata: consente di consentire o negare il traffico in base alle espressioni delle regole.
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 che corrispondano alla regola.
Modalità avanzata: inserisci un'espressione o delle sottoespressioni per eseguire la valutazione in base alle richieste in arrivo. Per informazioni su come scrivere le espressioni e leggere gli esempi seguenti, consulta il riferimento per il linguaggio delle regole personalizzate.
La seguente espressione corrisponde alle richieste dell'indirizzo IP
1.2.3.4
e contiene la stringaGodzilla
nell'intestazione dello 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 che hanno un cookie con un valore specifico:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
La seguente espressione corrisponde alle richieste della regione
AU
:origin.region_code == 'AU'
La seguente espressione corrisponde alle richieste della regione
AU
che non rientrano nell'intervallo IP specificato:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
La seguente espressione trova una corrispondenza con le richieste se l'URI corrisponde a un'espressione regolare:
request.path.matches('/bad_path/')
La seguente espressione corrisponde alle richieste se il valore decodificato 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')
Per Azione, seleziona Consenti o Rifiuta.
Se stai configurando una regola di negazione, seleziona un messaggio Stato di negazione.
Se vuoi attivare la modalità di anteprima per la regola, seleziona la casella di controllo Attiva.
Nel campo Priorità, inserisci un numero intero positivo.
Fai clic su Add (Aggiungi).
gcloud
Utilizza 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 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 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('/bad_path/')" \ --action deny-502 \ --description "regex block"
Il seguente comando aggiunge una regola per bloccare le richieste se il valore decodificato 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
Elencare le regole in un criterio di sicurezza
Segui queste istruzioni per elencare le regole in un criterio di sicurezza di Google Cloud Armor.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. 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
Aggiornare 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 a livello atomico più regole, consulta la sezione Aggiornare più regole in modo atomico in un criterio di sicurezza.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, fai clic sulla scheda Regole.
Accanto alla regola da aggiornare, fai clic su
Modifica. Viene visualizzata la pagina Modifica regola.Apporta le modifiche e poi 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 scoprire di più, consulta securityPolicies.patchRule
.
Aggiorna in modo atomico più regole in un criterio di sicurezza
Un aggiornamento atomico applica modifiche a più regole in un singolo aggiornamento. Se aggiornassi le regole una alla volta, potresti riscontrare comportamenti indesiderati perché regole vecchie e nuove potrebbero funzionare insieme per un breve periodo di tempo.
Per aggiornare a livello atomico più regole, esporta il criterio di sicurezza attuale in un file JSON o YAML e poi modificalo. Utilizzare il file modificato per creare un nuovo criterio di sicurezza, quindi cambiare il criterio di sicurezza per i servizi di backend pertinenti.
gcloud
Esporta il criterio per aggiornarlo, come illustrato nell'esempio seguente:
gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yaml
Il criterio esportato sarà simile al seguente esempio:
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
Utilizza qualsiasi editor di testo per modificare il criterio. Ad esempio, puoi modificare le priorità delle regole esistenti e aggiungerne una nuova:
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
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
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 ""
Aggiungi il nuovo criterio di sicurezza al servizio di backend, come illustrato nell'esempio seguente:
gcloud compute backend-services update my-backend \ --security-policy new-policy
Se il criterio precedente non viene utilizzato, eliminalo:
gcloud compute security-policies delete my-policy
Eliminare regole da un criterio di sicurezza
Segui queste istruzioni per eliminare le regole da un criterio di sicurezza di Google Cloud Armor.
Console
Nella console Google Cloud, vai alla pagina Network Security.
Nella pagina Criteri di sicurezza, fai clic sul nome del criterio. Viene visualizzata la pagina Dettagli norme.
Al centro della pagina, nella scheda Regole, seleziona la casella di controllo accanto alla regola che vuoi eliminare.
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
- Perfezionare le regole del web application firewall (WAF)
- Risolvere i problemi
- Usa il riferimento della lingua per le regole personalizzate