Elenco NamedIP di Cloud Armor

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.

27243e72ee25ee16.png

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.

7e9c09a008e04656.png

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

68a800f9adbf4570.png

5. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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:

bce75f34b2c53987.png

Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:

f6ef2b5f13479f3a.png

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.

  1. Sempre in Compute Engine, fai clic su Istanze VM nel menu a sinistra.
  2. Nota le istanze che iniziano con us-east1-mig. Queste istanze fanno parte dei gruppi di istanze gestite.
  3. 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

  1. Nella console Cloud, fai clic sul menu di navigazione ( mainmenu.png) > fai clic su Servizi di rete > Bilanciamento del carico, quindi fai clic su Crea bilanciatore del carico.
  2. In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.

start_config.png

  1. Seleziona Da internet alle mie VM e fai clic su Continua.
  2. 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.

  1. Fai clic su Configurazione backend.
  2. 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.
  3. Il tipo di backend è Gruppo di istanze
  4. Specifica i valori seguenti e lascia le impostazioni predefinite per gli altri valori: 18bf7a852f0759ee.png
  5. Fai clic su Fine.
  6. In Controllo di integrità, seleziona Crea un controllo di integrità. health_check.png
    1. Specifica i valori seguenti e lascia le impostazioni predefinite per gli altri valori: d2f85af1e988532b.png
  7. Fai clic su Salva e continua.
  8. Fai clic su Crea per creare il servizio di backend.

b00c217bf592f0.png

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.

  1. Fai clic su Configurazione frontend.
  2. http-front-end
  3. Specifica quanto segue, lasciando le impostazioni predefinite per tutti gli altri valori 51ae16211e72142f.png
  4. Fai clic su Fine.

8. Esamina e crea il bilanciatore del carico HTTP

  1. Fai clic su Esamina e finalizza.

8efe5b462a80071d.png

  1. Esamina i servizi di backend e il frontend.

30b06910bf7fae29.png

  1. Fai clic su Crea.
  2. Attendi alcuni minuti per la creazione del bilanciatore del carico
  3. Fai clic sul nome del bilanciatore del carico (http-lb).
  4. 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.

  1. 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.

f93410e9568f1f32.png

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

  1. Poiché il criterio di sicurezza è implementato, l'accesso al bilanciatore del carico dalla tua workstation non è autorizzato.
  2. 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