Panoramica dei criteri di sicurezza

Questa pagina descrive come utilizzare i criteri di sicurezza di Google Cloud Armor per proteggere le tue Trusted Cloud by S3NS implementazioni.

I criteri di sicurezza di Google Cloud Armor proteggono la tua applicazione fornendo il filtro di livello 7 e analizzando le richieste in entrata per rilevare attacchi web comuni o altri attributi di livello 7 per bloccare potenzialmente il traffico prima che raggiunga i servizi di backend con bilanciamento del carico. Ogni norma di sicurezza è costituita da un insieme di regole che possono essere configurate sugli attributi dal livello 3 al livello 7. Le regole possono filtrare il traffico in base a condizioni quali indirizzo IP, intervallo IP, codice regione o intestazioni delle richieste in entrata.

I criteri di sicurezza di Cloud Armor sono disponibili per i bilanciatori del carico delle applicazioni esterni regionali.

I backend del servizio di backend possono essere:

Quando utilizzi Cloud Armor per proteggere un deployment ibrido o un'architettura multi-cloud, i backend devono essere NEG di internet o NEG ibridi. Cloud Armor protegge anche i NEG serverless quando il traffico viene instradato tramite un bilanciatore del carico. Per informazioni su come instradare il traffico tramite il bilanciatore del carico prima che raggiunga il NEG serverless, consulta Controlli in entrata.

Proteggi i tuoi Trusted Cloud deployment con le policy di sicurezza di Cloud Armor

Nel livello Premium, il traffico utente indirizzato a un bilanciatore del carico esterno entra nel PoP più vicino all'utente. Il carico viene bilanciato sulla rete Google globale e indirizzato verso il backend più vicino con capacità disponibile sufficiente.

I criteri di sicurezza di Cloud Armor consentono di consentire, negare, limitare la frequenza o reindirizzare le richieste ai servizi di backend sul perimetro, il più vicino possibile alla sorgente del traffico in entrata. Trusted Cloud In questo modo si impedisce che il traffico indesiderato consumi risorse o entri nelle reti Virtual Private Cloud (VPC).

Requisiti

Di seguito sono riportati i requisiti per l'utilizzo dei criteri di sicurezza di Cloud Armor:

  • Lo schema di bilanciamento del carico del servizio di backend deve essere EXTERNAL_MANAGED.
  • Il protocollo del servizio di backend deve essere uno tra HTTP, HTTPS, HTTP/2, UDP, TCP, SSL o UNSPECIFIED.

Informazioni sui criteri di sicurezza di Cloud Armor

I criteri di sicurezza di Cloud Armor sono insiemi di regole che corrispondono agli attributi delle reti di livello 3-7 per proteggere applicazioni o servizi esposti esternamente. Ogni regola viene valutata in relazione al traffico in entrata.

Una regola di un criterio di sicurezza di Cloud Armor è costituita da una condizione di corrispondenza e da un'azione da intraprendere quando la condizione è soddisfatta. Ad esempio, una condizione può essere se l'indirizzo IP di origine del traffico in entrata corrisponde a un indirizzo IP specifico o a un intervallo CIDR (noto anche come regole di lista consentita e lista bloccata di indirizzi IP). In alternativa, utilizzando il riferimento al linguaggio delle regole personalizzate di Cloud Armor, puoi creare condizioni personalizzate che corrispondono a vari attributi del traffico in entrata, come il percorso URL, il metodo di richiesta o i valori dell'intestazione della richiesta.

Quando una richiesta in entrata corrisponde a una condizione in una regola dei criteri di sicurezza, Cloud Armor consente, nega o reindirizza la richiesta, a seconda che la regola sia una regola di autorizzazione, una regola di negazione o una regola di reindirizzamento.

Cloud Armor fornisce due categorie di criteri di sicurezza: criteri di sicurezza gerarchici e criteri di sicurezza a livello di servizio. Le policy di sicurezza gerarchiche vengono associate a livello di organizzazione, cartella o progetto, mentre le policy di sicurezza a livello di servizio sono associate a uno o più servizi di backend. Per ulteriori informazioni sui criteri di sicurezza gerarchici, consulta Panoramica dei criteri di sicurezza gerarchici.

A un servizio di backend possono essere associati due criteri di sicurezza a livello di servizio contemporaneamente, ma non due criteri di sicurezza del backend o due criteri di sicurezza perimetrale contemporaneamente. Tuttavia, non è necessario che tutti i servizi di backend siano associati agli stessi criteri di sicurezza. Per collegare e rimuovere i criteri di sicurezza dai servizi e dalle funzionalità di backend supportati, consulta Collegare e rimuovere i criteri di sicurezza.

Se a un servizio di backend è associato un criterio di sicurezza Cloud Armor, non può essere eliminato. Un servizio di backend può essere eliminato indipendentemente dal fatto che abbia o meno un criterio di sicurezza associato.

Se più regole di forwarding puntano a un servizio di backend a cui è associato un criterio di sicurezza, le regole del criterio vengono applicate a tutto il traffico in entrata a ciascuno degli indirizzi IP dellregola di forwardingng.

Nel seguente diagramma, la policy di sicurezza Cloud Armor internal-users-policy è associata al servizio di backend test-network.

Policy di sicurezza di Cloud Armor all'edge della rete.
Criteri di sicurezza Cloud Armor all'edge della rete (fai clic per ingrandire).
I criteri di sicurezza di Cloud Armor hanno le seguenti funzionalità:

  • Puoi utilizzare facoltativamente il protocollo QUIC con i bilanciatori del carico che utilizzano Cloud Armor.

  • Puoi utilizzare i criteri di sicurezza del backend con GKE e il controller Ingress predefinito.

  • Quando configuri i bilanciatori del carico delle applicazioni esterni regionali, puoi utilizzare una policy di sicurezza predefinita che limita il traffico in base a una soglia specificata dall'utente.

Inoltre, puoi configurare le regole WAF preconfigurate di Google Cloud Armor, che sono regole WAF complesse con decine di firme compilate a partire da standard di settore open source. Ogni firma corrisponde a una regola di rilevamento degli attacchi nel set di regole. Google offre queste regole così come sono. Le regole consentono a Cloud Armor di valutare decine di firme di traffico distinte facendo riferimento a regole con nomi pratici, anziché richiedere di definire manualmente ogni firma. Per saperne di più sulle regole WAF preconfigurate, consulta la panoramica delle regole WAF preconfigurate.

Tipi di policy di sicurezza

Le tabelle seguenti mostrano i tipi di policy di sicurezza a livello di servizio e cosa puoi fare con loro. Un segno di spunta () indica che il tipo di norma di sicurezza supporta la funzionalità.

Policy di sicurezza del backend

I criteri di sicurezza del backend vengono utilizzati con i servizi di backend esposti dal bilanciatore del carico delle applicazioni esterno regionale.

I criteri di sicurezza del backend hanno il valore del flag facoltativo type CLOUD_ARMOR. Se non imposti il flag type, il valore predefinito è CLOUD_ARMOR.

Policy di sicurezza dei servizi interni

I criteri di sicurezza del servizio interno ti consentono di configurare limitazione di frequenza di condivisione equa con Cloud Service Mesh. Anziché collegare un criterio di sicurezza del servizio interno a un servizio di backend o a un bucket di backend, lo colleghi a un criterio endpoint Cloud Service Mesh. Per scoprire di più sulle policy di sicurezza del servizio interno, consulta la sezione Configurare la limitazione di frequenza con Cloud Armor nella documentazione di Cloud Service Mesh.

Ordine di valutazione delle regole

L'ordine di valutazione delle regole è determinato dalla priorità della regola, dal numero più basso al numero più alto. La regola con il valore numerico assegnato più basso ha la priorità logica più elevata e viene valutata prima delle regole con priorità logiche più basse. La priorità numerica minima è 0. La priorità di una regola diminuisce all'aumentare del numero (1, 2, 3, N+1). Non puoi configurare due o più regole con la stessa priorità. La priorità di ogni regola deve essere impostata su un numero compreso tra 0 e 2147483646 inclusi. Il valore di priorità 2147483647, noto anche come INT-MAX, è riservato alla regola predefinita.

I numeri di priorità possono avere spazi vuoti. Questi spazi ti consentono di aggiungere o rimuovere regole in futuro senza influire sul resto delle regole. Ad esempio, 1, 2, 3, 4, 5, 9, 12, 16 è una serie valida di numeri di priorità a cui puoi aggiungere regole numerate da 6 a 8, da 10 a 11 e da 13 a 15 in futuro. Non devi modificare le regole esistenti, ad eccezione dell'ordine di esecuzione.

In genere, viene applicata la regola con la priorità più alta che corrisponde alla richiesta. Tuttavia, esiste un'eccezione quando le richieste HTTP POST con un corpo vengono valutate in base a regole preconfigurate che utilizzano evaluatePreconfiguredWaf. L'eccezione è la seguente:

Per le richieste HTTP POST, Cloud Armor riceve l'intestazione della richiesta prima del corpo (payload). Poiché Cloud Armor riceve prima le informazioni dell'intestazione, valuta le regole che corrispondono all'intestazione, ma non corrisponde ad alcuna regola preconfigurata nel corpo. Se sono presenti più regole basate sull'intestazione, Cloud Armor le valuta in base alla priorità come previsto. Tieni presente che le azioni redirect e l'inserimento di azioni di intestazione personalizzate funzionano solo durante la fase di elaborazione dell'intestazione. L'azione redirect, se corrisponde durante la seguente fase di elaborazione del corpo, viene tradotta in un'azione deny. L'azione di intestazione della richiesta personalizzata, se corrisponde durante la fase di elaborazione del corpo, non ha effetto.

Dopo aver ricevuto la richiesta HTTP POST con un corpo, Cloud Armor valuta le regole che si applicano sia alle intestazioni che al corpo della richiesta. Di conseguenza, è possibile che le regole con priorità inferiore che consentono l'intestazione di una richiesta vengano abbinate prima delle regole con priorità superiore che bloccano il corpo della richiesta. In questi casi, è possibile che la parte di intestazione HTTP della richiesta venga inviata al servizio di backend di destinazione, ma il corpo contenente contenuti potenzialmente dannosi venga bloccato. Cloud Armor ispeziona fino ai primi 64 KB (in base al limite di ispezione configurato di 8 KB, 16 KB, 32 KB, 48 KB o 64 KB) del corpo della richiesta. Per ulteriori informazioni su questa limitazione, vedi Limitazione dell'ispezione del corpo delle richieste POST e PATCH.

L'espressione evaluatePreconfiguredWaf() per le regole preconfigurate è l'unica espressione valutata rispetto al corpo della richiesta. Tutte le altre espressioni vengono valutate solo rispetto all'intestazione della richiesta. Tra i tipi di richiesta HTTP con un corpo della richiesta, Cloud Armor elabora solo le richieste POST e PATCH. L'ispezione è limitata al limite di ispezione configurato, fino ai primi 64 kB (8 kB, 16 kB, 32 kB, 48 kB o 64 kB) del corpo della richiesta e viene decodificata come parametri di ricerca URL. Cloud Armor può analizzare e applicare regole WAF preconfigurate per i corpi POST in formato JSON (Content-Type = "application/json"). Tuttavia, Cloud Armor non supporta altri decodificatori basati su Content-Type/Content-Encoding HTTP, come XML, Gzip o UTF-16.

Esempi

Nell'esempio seguente, le regole 1, 2 e 3 vengono valutate in quest'ordine per i campi di intestazione IP e HTTP. Tuttavia, se un indirizzo IP 9.9.9.1 lancia un attacco XSS nel corpo HTTP POST, viene bloccato solo il corpo (dalla regola 2); l'intestazione HTTP viene trasmessa al backend (dalla regola 3).

Rule1
expr: inIPRange(origin.ip, '10.10.10.0/24')
action: deny(403)
priority: 1
Rule2
expr: evaluatePreconfiguredWaf('xss-stable')
action: deny(403)
priority: 2
Rule3
expr: inIPRange(origin.ip, '9.9.9.0/24')
action: allow
priority: 3
Rule-default
action: deny(403)
priority: INT-MAX

Nell'esempio seguente, la policy consente IP 9.9.9.1 senza scansione per rilevare attacchi XSS:

Rule1
expr: inIPRange(origin.ip, '10.10.10.0/24')
action: deny(403)
priority: 1
Rule2
expr: inIPRange(origin.ip, '9.9.9.0/24')
action: allow
priority: 2
Rule3
expr: evaluatePreconfiguredWaf('xss-stable')
action: deny(403)
priority: 3
Rule-default
action: allow
priority: INT-MAX

Regola predefinita

Ogni criterio di sicurezza di Cloud Armor contiene una regola predefinita che viene corrisposta se nessuna delle regole con priorità più alta viene corrisposta o se non sono presenti altre regole nel criterio. Alla regola predefinita viene automaticamente assegnata una priorità di 2147483647 (INT-MAX) ed è sempre presente nel criterio di sicurezza.

Non puoi eliminare la regola predefinita, ma puoi modificarla. L'azione predefinita per la regola predefinita è deny, ma puoi modificarla in allow.

Impronta

Ogni criterio di sicurezza di Cloud Armor ha un campo fingerprint. L'impronta è un hash dei contenuti archiviati nelle norme. Quando crei una nuova policy, non specificare il valore di questo campo. Se fornisci un valore, questo viene ignorato. Tuttavia, quando aggiorni un criterio di sicurezza, devi specificare l'impronta attuale, che ottieni quando esporti o descrivi il criterio (utilizzando rispettivamente EXPORT o DESCRIBE).

L'impronta ti protegge dalla sostituzione dell'aggiornamento di un altro utente. Se l'impronta che fornisci non è aggiornata, significa che le norme di sicurezza sono state aggiornate dall'ultima volta che hai recuperato l'impronta. Per verificare la presenza di differenze e recuperare l'ultima impronta, esegui il comando DESCRIBE.

Linguaggio delle regole e motore di applicazione

Il linguaggio delle regole e il motore di applicazione forniscono quanto segue:

  • La possibilità di scrivere espressioni di regole personalizzate che possono corrispondere a vari attributi dei livelli 3-7 delle richieste in entrata. Cloud Armor fornisce attributi del linguaggio di regole personalizzate per scrivere condizioni di corrispondenza personalizzate.

  • La possibilità di combinare fino a 5 sottoespressioni in un'unica regola.

  • La possibilità di negare o consentire le richieste in base al codice regione della richiesta in arrivo. I codici regione si basano sui codici ISO 3166-1 alpha-2. A volte i codici regione corrispondono a paesi specifici, ma alcuni comprendono un paese più le aree associate. Ad esempio, il codice US include tutti gli stati degli Stati Uniti, un distretto e sei aree periferiche.

Tipi di regole

Cloud Armor ha i seguenti tipi di regole.

Regole per le liste consentite e bloccate di indirizzi IP

Puoi creare regole per le liste consentite e bloccate di indirizzi IP all'interno di un criterio di sicurezza. Ecco alcuni esempi:

Puoi creare regole di lista consentita e lista bloccata di indirizzi IP all'interno di un criterio di sicurezza. Ecco alcuni esempi:

  • L'aggiunta di un indirizzo IP o di un intervallo CIDR a una lista bloccata ti consente di impedire a un indirizzo IP di origine o a un intervallo CIDR di accedere ai bilanciatori del carico supportati.

  • L'aggiunta di un indirizzo IP o di un intervallo CIDR a una lista consentita ti consente di autorizzare un indirizzo IP di origine o un intervallo CIDR ad accedere ai bilanciatori del carico supportati.

  • Gli indirizzi IPv4 e IPv6 sono supportati nelle regole di allowlist e denylist.

  • Le regole di negazione possono restituire un codice di stato HTTP 403 Unauthorized, 404 Access Denied o 502 Bad Gateway.

  • Le regole di superamento dell'azione possono restituire un codice di stato HTTP 429 Too Many Requests.

Regole geografiche di origine

Puoi consentire o negare le richieste provenienti da aree geografiche selezionate definite dal codice paese Unicode.

Cloud Armor utilizza il nostro database di geolocalizzazione IP per identificare la posizione geografica della richiesta. Il database viene aggiornato regolarmente. Sebbene non possiamo garantire una particolare cadenza di aggiornamento, durante le normali operazioni i mapping utilizzati da Cloud Armor vengono aggiornati circa una volta alla settimana.

I mapping aggiornati devono essere propagati all'infrastruttura di Google a livello globale. Il processo di implementazione avviene gradualmente, in genere nell'arco di diversi giorni, in più zone e regioni in cui è implementato Cloud Armor. A causa di questo processo di implementazione graduale, è possibile che le richieste provenienti dallo stesso indirizzo IP di origine vengano gestite in modo incoerente durante un'implementazione quando la mappatura della geolocalizzazione per l'indirizzo IP di origine è cambiata.

Regole WAF preconfigurate

Cloud Armor fornisce un elenco completo di regole WAF preconfigurate basate sul Core Rule Set (CRS) di OWASP per aiutarti a rilevare quanto segue:

  • Attacchi di SQL injection
  • Attacchi di cross-site scripting
  • Attacchi di inclusione di file locali
  • Attacchi di inclusione di file remoti
  • Attacchi di esecuzione di codice da remoto
  • Attacchi di applicazione forzata del metodo
  • Attacchi di rilevamento dello scanner
  • Attacchi di protocollo
  • Attacchi di injection PHP
  • Attacchi di sessione fissa
  • Attacchi Java
  • Attacchi NodeJS

Per maggiori dettagli, consulta la panoramica delle regole WAF preconfigurate di Cloud Armor.

Regole di limitazione di frequenza

Puoi utilizzare le regole di limitazione di frequenza per:

  • Limita le richieste per client in base a una soglia che configuri.
  • Blocca temporaneamente i client che superano una soglia di richieste impostata per una durata configurata.

Quando utilizzi limitazione di frequenza con i bilanciatori del carico di rete proxy esterno globali o con i bilanciatori del carico di rete proxy classici, si applicano le seguenti limitazioni:

  • Cloud Armor applica solo azioni di limitazione di frequenza come la limitazione o il blocco delle nuove richieste di connessione dai client.
  • Sono supportati solo i tipi di chiave ALL e IP.
  • Se tenti di utilizzare il tipo di chiave HTTP-HEADER o HTTP-COOKIE con i bilanciatori del carico TCP/SSL, il tipo di chiave viene interpretato come ALL e allo stesso modo XFF-IP viene interpretato come IP.

Per saperne di più sulla limitazione di frequenza e sul suo funzionamento, consulta la panoramica sulla limitazione della frequenza.

Per saperne di più sulla limitazione di frequenza e sul suo funzionamento, consulta la panoramica sulla limitazione della frequenza.

Modalità di anteprima

Puoi visualizzare l'anteprima degli effetti di una regola senza applicarla. In modalità di anteprima, le azioni vengono annotate in Cloud Monitoring. Puoi scegliere di visualizzare l'anteprima delle singole regole in una policy di sicurezza oppure puoi visualizzare l'anteprima di tutte le regole nella policy. Per le regole in modalità anteprima ti viene addebitata la normale tariffa per richiesta.

Puoi attivare la modalità di anteprima per una regola utilizzando Google Cloud CLI e il flag --preview del comando gcloud compute security-policies rules update.

Per disattivare la modalità di anteprima, utilizza il flag --no-preview. Puoi anche utilizzare la consoleTrusted Cloud .

Se una richiesta attiva un'anteprima, Cloud Armor continua a valutare altre regole fino a trovare una corrispondenza. Sia la regola corrispondente che quella di anteprima sono disponibili nei log.

Risposte di errore personalizzate

Quando utilizzi un bilanciatore del carico delle applicazioni esterno globale, puoi configurare risposte di errore personalizzate per i codici di stato HTTP per gli errori generati dai bilanciatori del carico o dalle istanze di backend. Inoltre, puoi configurare codici di errore personalizzati per il traffico che Cloud Armor nega configurando pagine di risposta personalizzate per gli stessi codici di stato delle serie 4xx o 5xx utilizzati dalle regole dei criteri di sicurezza esistenti.

Per saperne di più sulle risposte di errore personalizzate, consulta la Panoramica della risposta di errore personalizzata. Per i passaggi di configurazione, vedi Configurare risposte di errore personalizzate.

Logging

Cloud Armor dispone di una registrazione completa e ti consente di definire il livello di dettaglio della registrazione. I log di Cloud Armor vengono generati in base alla prima regola (con priorità più alta) che corrisponde a una richiesta in entrata, indipendentemente dal fatto che i criteri di sicurezza siano in modalità di anteprima. Ciò significa che i log non vengono generati per le regole non corrispondenti né per le regole corrispondenti con priorità inferiori.

Per informazioni complete sulla registrazione, vedi Utilizzare la registrazione delle richieste. Per saperne di più sul logging dettagliato, consulta Logging dettagliato. Per visualizzare i log di Cloud Armor, consulta Visualizzazione dei log.

Limitazioni

Le sezioni seguenti descrivono in dettaglio le limitazioni per i criteri di sicurezza.

Limitazione dell'ispezione del corpo POST e PATCH

L'espressione evaluatePreconfiguredWaf per le regole preconfigurate è l'unica espressione che Cloud Armor valuta rispetto al corpo della richiesta. Tra i tipi di richiesta HTTP con un corpo della richiesta, Cloud Armor elabora solo le richieste POST e PATCH.

L'ispezione è limitata al limite di ispezione configurato, fino ai primi 64 kB (8 kB, 16 kB, 32 kB, 48 kB o 64 kB) del corpo di POST o PATCH. Per scoprire di più sulla configurazione del limite di ispezione per il corpo della richiesta quando utilizzi regole WAF preconfigurate, consulta Aggiorna il limite di ispezione per le regole WAF preconfigurate.

Il resto del corpo della richiesta potrebbe contenere payload che corrispondono a una firma di regola WAF, che la tua applicazione potrebbe accettare. Per mitigare il rischio di corpi delle richieste la cui dimensione supera il limite di ispezione configurato, fino ai primi 64 kB (8 kB, 16 kB, 32 kB, 48 kB o 64 kB), consulta Mitigare il rischio per il corpo della richiesta che supera il limite di ispezione configurato.

Cloud Armor può analizzare e applicare regole WAF preconfigurate per i corpi POST e PATCH con codifica URL e formattazione JSON predefinite (Content-Type = "application/json"), nel qual caso le regole vengono applicate in modo indipendente ai nomi e ai valori decodificati nei dati. Per altri tipi di contenuti e codifica, Cloud Armor non decodifica i dati, ma applica le regole preconfigurate ai dati non elaborati.

Come vengono gestite le connessioni WebSocket

I bilanciatori del carico delle applicazioni esterni globali supportano il protocollo WebSocket. I canali WebSocket vengono avviati dalle richieste HTTP(S). Cloud Armor può impedire la creazione di un canale WebSocket, ad esempio se un elenco negato di indirizzi IP blocca l'indirizzo IP di origine. Tuttavia, le transazioni successive nel canale non sono conformi al protocollo HTTP e Cloud Armor non valuta alcun messaggio dopo la prima richiesta.

Passaggi successivi