Tra le principali tecniche di filtraggio egress spicca quella basata su Fully Qualified Domain Name (FQDN): un approccio che offre agli amministratori un controllo preciso sul traffico in uscita a livello di nome di dominio.

Oggi i dati viaggiano tra reti e sistemi senza alcun ostacolo. Diventa quindi essenziale adottare misure di sicurezza solide per proteggere le informazioni sensibili. Sebbene il filtraggio del traffico in entrata riceva grande attenzione, l'importanza del filtraggio egress non va sottovalutata: consente alle organizzazioni di regolare le comunicazioni di rete in uscita, garantendo che vengano stabilite soltanto connessioni autorizzate e sicure.
Tra le tecniche di filtraggio egress più efficaci spicca quella basata su Fully Qualified Domain Name (FQDN). Questo approccio offre agli amministratori un controllo preciso sul traffico in uscita a livello di nome di dominio. Combinata con la Firewall Policy di Google Cloud Platform (GCP), permette alle organizzazioni di ottenere un livello eccellente di sicurezza e di gestione dei punti di egress della rete.
In questo articolo vedremo passo dopo passo come implementare il filtraggio egress FQDN in GCP utilizzando gli oggetti FQDN nelle regole della firewall policy. La Firewall policy è una funzionalità distinta del cloud firewall e mette a disposizione molte più funzionalità rispetto alle VPC firewall rules.
L'oggetto FQDN nelle regole della firewall policy è attualmente in preview e il supporto GCP non fornisce SLA né garanzie di assistenza tecnica.
Cos'è una Firewall Policy?
La Firewall Policy di Google Cloud Platform (GCP) è una funzionalità di sicurezza di rete che consente di definire e applicare regole firewall centralizzate per le istanze di macchine virtuali (VM) e per le reti VPC (Virtual Private Cloud).
Offre un approccio unificato e scalabile alla gestione del traffico di rete: consente di controllare le comunicazioni in entrata e in uscita, filtrare il traffico in base a diversi criteri e rafforzare la sicurezza complessiva.
Con la Firewall Policy si possono definire regole granulari che indicano quali tipi di traffico vengono consentiti o negati in base a fattori come intervalli IP, porte, protocolli e persino Fully Qualified Domain Name (FQDN). In questo modo è possibile costruire un perimetro di rete sicuro e proteggere le risorse cloud da accessi non autorizzati o attività malevole.
Tra le principali caratteristiche e i vantaggi della GCP Firewall Policy figurano:
- Gestione centralizzata: è possibile gestire e configurare le regole firewall su più progetti, regioni e reti VPC da un'unica interfaccia, semplificando la gestione delle policy di sicurezza di rete.
- Definizione flessibile delle regole: la Cloud Firewall Policy consente di creare regole basate su indirizzi IP, intervalli, porte, protocolli e FQDN. Questa flessibilità abilita un controllo granulare del traffico in entrata e in uscita e la creazione di policy di sicurezza altamente specifiche.
- Aggiornamenti dinamici: le regole firewall si possono modificare in tempo reale, adattandole ai nuovi requisiti di sicurezza senza interrompere il traffico di rete esistente.
- Integrazione con i servizi Google Cloud: la Cloud Firewall Policy si integra in modo nativo con altri servizi Google Cloud, come reti VPC, load balancer e istanze VM, garantendo controlli di sicurezza coerenti su tutta l'infrastruttura.
- Logging e monitoraggio: la Cloud Firewall Policy mette a disposizione funzionalità avanzate di logging e monitoraggio, offrendo visibilità sul traffico di rete, analisi degli eventi di sicurezza e troubleshooting efficace di eventuali problemi.
Architettura di riferimento

Configurazione di esempio
Passaggi di implementazione dell'architettura di riferimento
- Configurazione di Private Google Access
- Cloud NAT per l'accesso a Internet
- Configurazione delle regole della firewall policy
Configurazione di Private Google Access
Private Google Access consente alle risorse all'interno di una rete Virtual Private Cloud (VPC) di accedere ai servizi Google tramite indirizzi IP privati, senza bisogno di connettività Internet esterna.
Occorre inoltre configurare Private Google Access con il dominio private.googleapis.com o restricted.googleapis.com, in modo che le richieste alle Google API siano instradabili solo all'interno di Google Cloud.
Private Google Access si abilita a livello di singola subnet. Abilitarlo su una subnet esistente e aggiornare le variabili.
gcloud config set project $PROJECT_ID
gcloud compute networks subnets update $SUBNET_NAME \--region=$REGION \--enable-private-ip-google-access
Per questa configurazione occorre creare zone Cloud DNS per private.googleapis.com. Utilizzare invece restricted.googleapis.com se si sta usando VPC Service Control. Per maggiori dettagli si veda Domain options.
Creare una zona DNS privata per googleapis.com
gcloud dns managed-zones create googleapis-com \--dns-name=googleapis.com. \--description="googleapis-com domain for PGA" \--visibility=private \--networks=$NETWORK_NAME
Creare un record A per private.googleapis.com che punti ai seguenti indirizzi IP: 199.36.153.8 , 199.36.153.9 , 199.36.153.10 , 199.36.153.11 .
gcloud dns record-sets create "private.googleapis.com." \<br>--type="A" \<br>--ttl="300" \<br>--rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11" \<br>--zone="googleapis-com"Creare un record CNAME per *.googleapis.com che punti al dominio configurato: private.googleapis.com .
gcloud dns record-sets create "*.googleapis.com." \--type="CNAME" \--ttl="300" \--rrdatas="private.googleapis.com." \--zone="googleapis-com"
Alcune Google API e servizi sono erogati tramite ulteriori nomi di dominio, fra cui *.gcr.io , *.gstatic.com , *.pkg.dev e pki.goog.
Consultare la tabella degli intervalli di domini e indirizzi IP in Domain options per verificare se i servizi degli ulteriori domini siano accessibili tramite private.googleapis.com o restricted.googleapis.com . Ad esempio, se si utilizza Google Kubernetes Engine (GKE), occorre configurare in Cloud DNS anche le zone private *.gcr.io e *.pkg.dev .
Configurazione di Cloud NAT
Cloud NAT è un servizio gestito distribuito e software-defined che consente alle risorse prive di indirizzi IP esterni di stabilire connessioni in uscita verso Internet. Per controllare il traffico in uscita è preferibile a Cloud NAT al gateway Internet predefinito.
Creare un Cloud Router nella regione desiderata.
gcloud compute routers create cloud-firewall-policy-demo-cloud-nat \ --network=$NETWORK_NAME \ --region=$REGIONCreare quindi il gateway Cloud NAT.
gcloud compute routers nats create cloud-firewall-policy-demo-cloud-nat \ --router=cloud-firewall-policy-demo-cloud-nat \ --region=$REGION \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
Configurazione delle regole della firewall policy
Le firewall policy si presentano in tre varianti.
- Le Hierarchical firewall policies consentono di creare e applicare una firewall policy uniforme in tutta l'organizzazione. È possibile assegnarle all'intera organizzazione o a singole cartelle.
- Le Global network firewall policies permettono di aggiornare in batch tutte le regole firewall raggruppandole in un unico oggetto policy; le regole si applicano a tutte le regioni.
- Le Regional network firewall policies consentono di creare e applicare una firewall policy uniforme su tutte le subnet di una regione all'interno della rete VPC.
Creare una Global Network firewall policy per questa configurazione.
gcloud compute network-firewall-policies create global-demo-firewall-policy \--globalCreare quindi una nuova associazione tra la firewall policy e la rete di destinazione.
gcloud compute network-firewall-policies associations create \--firewall-policy=global-demo-firewall-policy \--network=$NETWORK_NAME --global-firewall-policy
Le regole firewall predefinite fanno parte della policy

Associazione della rete alla policy
A questo punto sono state create tutte le risorse necessarie per applicare il filtraggio egress FQDN tramite gli oggetti FQDN nelle regole della firewall policy. Il passo successivo consiste nell'aggiungere le regole necessarie alla firewall policy.
Al momento al traffico egress non sono applicate restrizioni e le istanze della rete dispongono di accesso a Internet senza limitazioni.


Per questa configurazione consentiremo il traffico in uscita solo verso www.example.com e gli indirizzi IP pubblici assegnati a private.googleapis.com, bloccando il resto del traffico Internet.
Creare una regola predefinita di consenso per il traffico in ingresso. L'accesso in entrata è consentito senza restrizioni, ma è possibile personalizzare la regola in base alle proprie esigenze.
gcloud compute network-firewall-policies rules create 1001 \--firewall-policy="global-demo-firewall-policy" \--action="allow" \--direction="INGRESS" \--description="Allow ingress traffic" \--src-ip-ranges="0.0.0.0/0" \--layer4-configs="all" \--global-firewall-policyCreare una regola firewall che consenta la comunicazione con gli intervalli IP privati. Verificare che la regola includa anche eventuali altri intervalli privati personalizzati utilizzati nel proprio ambiente, in modo da non compromettere la comunicazione tra le istanze.
gcloud compute network-firewall-policies rules create 999 \--firewall-policy="global-demo-firewall-policy" -\-action="allow" \--direction="EGRESS" \--description="Allow communication with private IP ranges" \--dest-ip-ranges="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \--layer4-configs="all" \--global-firewall-policyCreare una regola della firewall policy che consenta le richieste in uscita verso gli IP pubblici di private.googleapis.com: questi IP sono instradabili solo all'interno di Google Cloud.
gcloud compute network-firewall-policies rules create 998 \--firewall-policy="global-demo-firewall-policy" \--action="allow" \--direction="EGRESS" \--description="Allow DNS resolution requests to private.googleapis.com" \--dest-ip-ranges="199.36.153.8/32,199.36.153.9/32,199.36.153.10/32,199.36.153.11/32" \--layer4-configs="tcp:443" \--global-firewall-policyCreare una regola della firewall policy che consenta le richieste in uscita verso www.example.com.
gcloud compute network-firewall-policies rules create 997 \--firewall-policy="global-demo-firewall-policy" \--action="allow" \--direction="EGRESS" \--description="FQDN egress filtering rules" \--dest-fqdns="www.example.com" \--layer4-configs="tcp:80,tcp:443" \--global-firewall-policyCreare una regola predefinita di blocco del traffico egress, dopo essersi assicurati di aver già creato le regole di consenso per i domini e gli intervalli IP necessari.
gcloud compute network-firewall-policies rules create 1000 \--firewall-policy="global-demo-firewall-policy" \--action="deny" \--direction="EGRESS" \--description="Deny all Egress traffic" \--dest-ip-ranges="0.0.0.0/0" \--layer4-configs="all" \--global-firewall-policyElenco consolidato delle regole della firewall policy.

Le regole possono richiedere fino a 30 secondi per diventare effettive; a quel punto è possibile testare la connettività di rete dall'istanza GCE o dai pod GKE. Le richieste in uscita saranno consentite solo verso i domini e gli intervalli IP definiti nelle regole della firewall policy.

Risultati dei test dopo l'applicazione delle regole della firewall policy
In questo esempio abbiamo visto come gli oggetti FQDN possano essere sfruttati nelle regole della Firewall policy per il filtraggio egress. Si tratta di un metodo estremamente efficace per rafforzare la sicurezza di rete e tenere sotto controllo i punti di egress.
Per ulteriori informazioni sulla Firewall Policy si rimanda alla pagina di prodotto.