1. Introduzione
Gli elenchi di indirizzi IP denominati di Google Cloud Armor ti consentono di fare riferimento a elenchi di indirizzi IP e intervalli IP gestiti da provider di terze parti. Puoi configurare elenchi di indirizzi IP denominati all'interno di una policy di sicurezza. Non devi specificare manualmente ogni indirizzo IP o intervallo IP singolarmente.
Cosa imparerai a fare
- Vantaggi dell'elenco di indirizzi IP denominati di Cloud Armor
- Crea la policy di sicurezza di Cloud Armor
- Esegui il deployment dell'elenco di indirizzi IP denominati di Cloud Armor
- Crea bilanciatore del carico globale
- Crea un gruppo di istanze gestite con un'applicazione di test di esempio
Che cosa ti serve
- Esperienza con le norme di sicurezza e i bilanciatori del carico
2. Consentire il traffico solo da fornitori di terze parti autorizzati
Un caso d'uso tipico è la creazione di una lista consentita contenente gli indirizzi IP di un partner di terze parti autorizzato per garantire che solo il traffico proveniente da questo partner possa accedere al bilanciatore del carico e ai backend.
Ad esempio, i provider CDN devono estrarre i contenuti dai server di origine a intervalli regolari per distribuirli alle proprie cache. Una partnership con Google fornisce una connessione diretta tra i provider CDN e il perimetro della rete Google. Gli utenti CDN su Google Cloud possono utilizzare questa connessione diretta durante i pull di origine. In questo caso, l'utente CDN potrebbe voler creare una policy di sicurezza che consenta solo il traffico proveniente da quel particolare provider CDN.
In questo esempio, un provider CDN pubblica il proprio elenco di indirizzi IP 23.235.32.0/20, 43.249.72.0/22, ⋯. Un utente CDN configura una regola di sicurezza che consente solo il traffico proveniente da questi indirizzi IP. Di conseguenza, sono consentiti due punti di accesso del provider CDN (23.235.32.10 e 43.249.72.10) e il loro traffico è quindi autorizzato. Il traffico dal punto di accesso non autorizzato 198.51.100.1 è bloccato.

Indirizzo IP denominato Google Cloud Armor
3. Semplificare la configurazione e la gestione utilizzando regole preconfigurate
I provider CDN spesso utilizzano indirizzi IP noti e che devono essere utilizzati da molti utenti CDN. Questi elenchi cambiano nel tempo man mano che i provider aggiungono, rimuovono e aggiornano gli indirizzi IP.
L'utilizzo di un elenco di indirizzi IP denominato in una regola della policy di sicurezza semplifica il processo di configurazione e gestione degli indirizzi IP perché Google Cloud Armor sincronizza automaticamente le informazioni dei provider CDN su base giornaliera. In questo modo si elimina il processo lungo e soggetto a errori di gestione manuale di un elenco di indirizzi IP di grandi dimensioni.
Provider di elenchi di indirizzi IP
I provider di elenchi di indirizzi IP nella tabella seguente sono supportati per Google Cloud Armor. Si tratta di provider CDN che hanno stretto una partnership con Google. I loro elenchi di indirizzi IP vengono pubblicati tramite URL pubblici individuali.
Questi partner forniscono elenchi separati di indirizzi IPv4 e IPv6. Google Cloud Armor utilizza gli URL forniti per recuperare gli elenchi, quindi li converte in elenchi di indirizzi IP denominati. Puoi fare riferimento agli elenchi in base ai nomi nella tabella.

In alternativa, utilizza Cloud Shell per ottenere un elenco di elenchi di indirizzi IP denominati preconfigurati
Accedi a Cloud Shell e imposta il projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Da Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Che restituisce:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Topologia del codelab

5. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o Google Workspace, devi crearne uno.



Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro di questo lab può essere svolto semplicemente con un browser.
6. Crea rete VPC
Rete VPC
Da Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Crea subnet
Da Cloud Shell
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Crea regole firewall
Da Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Crea il bilanciatore del carico
Crea il modello di istanza
Da Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Crea il gruppo di istanze gestite
Da Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Verifica i backend
Verifica che le istanze VM vengano create in entrambe le regioni e che siano in grado di accedere ai propri siti HTTP.
- Sempre in Compute Engine, fai clic su Istanze VM nel menu a sinistra.
- Nota le istanze che iniziano con us-east1-mig. Queste istanze fanno parte dei gruppi di istanze gestite.
- Fai clic sull'IP esterno di un'istanza di us-east1-mig. Dovresti vedere l'IP client (il tuo indirizzo IP), il nome host (che inizia con us-east1-mig)
Configura il bilanciatore del carico HTTP
- Nella console Cloud, fai clic sul menu di navigazione (
) > fai clic su Servizi di rete > Bilanciamento del carico, quindi fai clic su Crea bilanciatore del carico. - In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.

- Seleziona Da internet alle mie VM e fai clic su Continua.
- Imposta il nome su http-lb.
Configura il backend
I servizi di backend indirizzano il traffico in ingresso a uno o più backend collegati. Ciascun backend è composto da un gruppo di istanze e da metadati aggiuntivi relativi alla capacità di distribuzione.
- Fai clic su Configurazione backend.
- In Servizi di backend e bucket di backend, fai clic su Crea o seleziona servizi di backend e bucket di backend, quindi su Servizi di backend e infine su Crea un servizio di backend.
- Il tipo di backend è Gruppo di istanze
- Imposta i valori seguenti e lascia le impostazioni predefinite per gli altri valori:

- Fai clic su Fine.
- Per Controllo di integrità, seleziona Crea un controllo di integrità.

- Imposta i valori seguenti e lascia le impostazioni predefinite per gli altri valori:

- Imposta i valori seguenti e lascia le impostazioni predefinite per gli altri valori:
- Fai clic su Salva e continua.
- Fai clic su Crea per creare il servizio di backend.

Configura il frontend
Le regole relative a host e percorso determinano come sarà indirizzato il traffico. Ad esempio, potresti decidere di indirizzare il traffico video a un backend e il traffico statico a un altro. Tuttavia, non configurerai le regole relative a host e percorso in questo lab.
- Fai clic su Configurazione frontend.
- http-front-end
- Specifica quanto segue, lasciando le impostazioni predefinite per tutti gli altri valori:

- Fai clic su Fine.
8. Esamina e crea il bilanciatore del carico HTTP
- Fai clic su Esamina e finalizza.

- Esamina i servizi di backend e il frontend.

- Fai clic su Crea.
- Attendi alcuni minuti per la creazione del bilanciatore del carico.
- Fai clic sul nome del bilanciatore del carico (http-lb).
- Prendi nota dell'indirizzo IPv4 del bilanciatore del carico, che utilizzerai nella prossima attività e che viene chiamato http-lb.
9. Convalida l'accesso non autorizzato riuscito
Prima di implementare la policy Indirizzo IP denominato, verifica l'accesso non autorizzato riuscito al bilanciatore di carico del lab e alla successiva applicazione web. Tieni presente che, una volta implementata la policy per gli indirizzi IP denominati, l'accesso all'applicazione web è limitato al set di espressioni di cui è stato eseguito il provisioning.
- Identifica l'indirizzo IP del bilanciatore del carico creato nel passaggio precedente (http-lb) e incollalo nel browser web. L'output sarà simile a quello dello screenshot riportato di seguito.
NOTA: questo passaggio richiederà diversi minuti. Una volta generata la pagina web, l'IP client proviene dal front-end di Google, non dall'IP della tua workstation.

Dalla workstation esegui una convalida simile a quella indicata di seguito.
bash-3.2$ curl <load-balancer-IP>
10. Output di esempio
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Configura l'elenco di IP denominati
Crea un nuovo criterio Cloud Armor per l'elenco di IP denominati
Da Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Da Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Identifica gli indirizzi degli elenchi di indirizzi IP denominati CDN disponibili.
Da Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
Che restituisce:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Da Cloud Shell configura l'elenco di indirizzi IP denominato in base al set di espressioni disponibile della CDN
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
Esempio con cloudflare
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. Applica criteri di sicurezza CA
Applica il criterio di sicurezza CA e attendi alcuni minuti per la propagazione del criterio globale
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Convalida dell'indirizzo IP denominato
- Poiché la policy di sicurezza è implementata, l'accesso al bilanciatore del carico dalla tua workstation non è autorizzato.
- Per eseguire la convalida, apri una finestra del terminale dalla workstation ed esegui un comando curl sull'indirizzo IP del bilanciatore del carico. L'output di curl genererà un errore "403" Forbidden poiché la tua workstation non è più autorizzata.
Dalla workstation
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Procedura per la pulizia
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Complimenti!
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Vantaggi dell'elenco di indirizzi IP denominati di Cloud Armor
- Crea bilanciatore del carico globale
- Crea un gruppo di istanze gestite con un'applicazione di test di esempio
- Crea la policy di sicurezza di Cloud Armor
- Esegui il deployment dell'elenco di indirizzi IP denominati di Cloud Armor
- Convalida del criterio Cloud Armor per gli IP denominati