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 un criterio di sicurezza. Non è necessario specificare manualmente ogni indirizzo IP o intervallo IP singolarmente.
Cosa imparerai a fare
- Vantaggi dell'elenco di indirizzi IP denominati di Cloud Armor
- Crea criterio 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 i criteri di sicurezza e i bilanciatori del carico
2. Autorizzazione del traffico solo da fornitori di terze parti consentiti
Un caso d'uso tipico consiste nel creare una lista consentita contenente gli indirizzi IP di un partner di terze parti consentito 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 a intervalli regolari i contenuti dai server di origine 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 dell'origine. In questo caso, l'utente CDN potrebbe voler creare un criterio di sicurezza che consenta solo il traffico proveniente da quel determinato 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 relativo traffico è quindi consentito. Il traffico proveniente dal punto di accesso non autorizzato 198.51.100.1 è bloccato.
Indirizzo IP denominato di Google Cloud Armor
3. Semplificare la configurazione e la gestione tramite l'uso di regole preconfigurate
I provider CDN spesso utilizzano indirizzi IP noti che molti utenti di CDN devono utilizzare. 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 denominati in una regola del criterio di sicurezza semplifica il processo di configurazione e gestione degli indirizzi IP, poiché Google Cloud Armor sincronizza automaticamente le informazioni dei provider CDN ogni giorno. In questo modo si elimina il lungo processo, che è soggetto a errori, per gestire manualmente un elenco di indirizzi IP di grandi dimensioni.
Provider dell'elenco di indirizzi IP
I provider dell'elenco di indirizzi IP nella seguente tabella sono supportati per Google Cloud Armor. Si tratta di fornitori CDN che collaborano con Google. I loro elenchi di indirizzi IP vengono pubblicati tramite singoli URL pubblici.
Questi partner forniscono elenchi separati di indirizzi IPv4 e indirizzi IPv6. Google Cloud Armor utilizza gli URL forniti per recuperare gli elenchi e poi li converte in elenchi di indirizzi IP denominati. Gli elenchi fanno riferimento ai nomi nella tabella.
In alternativa, utilizza Cloud Shell per ottenere un elenco di elenchi di indirizzi IP denominati preconfigurati
Accedi a Cloudshell e imposta l'ID progetto
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 codelab
5. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in 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 accedano 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'indirizzo IP del 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.
- Per i servizi di backend e nei bucket di backend, fai clic su Crea o seleziona bucket di backend, quindi fai clic su Servizi di backend e infine su Crea un servizio di backend.
- Il tipo di backend è Gruppo di istanze
- Specifica i valori seguenti e lascia le impostazioni predefinite per gli altri valori:
- Fai clic su Fine.
- In Controllo di integrità, seleziona Crea un controllo di integrità.
- Specifica 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, denominato http-lb, per la prossima attività.
9. Convalida l'accesso non autorizzato riuscito
Prima di implementare il criterio dell'indirizzo IP denominato, convalida l'accesso non autorizzato riuscito al bilanciatore del lab e alla successiva applicazione web. Nota: una volta implementato il criterio dell'indirizzo IP denominato, 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 seguente.
NOTA: questo passaggio richiede diversi minuti. Una volta generata la pagina web, l'IP client proviene da Google Front End, non dall'IP della workstation.
Dalla tua 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 elenco IP denominati
Crea un nuovo criterio Cloud Amour per l'elenco degli 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 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 denominati in base al set di espressioni CDN disponibile
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Esempio di utilizzo di Cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. Applica criterio di sicurezza CA
Applica il criterio di sicurezza CA e attendi diversi minuti per la propagazione dei criteri globali
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Convalida degli indirizzi IP denominati
- Poiché il criterio di sicurezza è implementato, 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 all'indirizzo IP del bilanciatore del carico. L'output dal curl produrrà un "403" Errore non consentito poiché la workstation ora non è autorizzata.
Dalla tua 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 di 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!
Complimenti 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 criterio di sicurezza di Cloud Armor
- Esegui il deployment dell'elenco di indirizzi IP denominati di Cloud Armor
- Convalida il criterio IP Cloud Armor denominato