1. Introduzione e panoramica
DNS Armor, basato su Infoblox, è un servizio completamente gestito che fornisce sicurezza a livello di DNS per i tuoi carichi di lavoro Google Cloud. Il suo rilevatore delle minacce avanzato è progettato per rilevare attività dannose al punto iniziale della catena di attacco, ovvero la query DNS, senza aggiungere complessità operativa o overhead delle prestazioni.
Questo codelab fornisce istruzioni passo passo per configurare e testare il servizio DNS Armor. Configurerai l'infrastruttura di rete necessaria, creerai il rilevatore di minacce, testerai il servizio simulando minacce DNS e, infine, analizzerai i log delle minacce utilizzando Esplora log.
Cosa creerai
In questo codelab, eseguirai il provisioning delle seguenti risorse:
- Due reti VPC:
network-aenetwork-b network-aincluderà subnet e macchine virtuali nelle regionius-east4eus-central1.network-bincluderà una subnet e una macchina virtuale solo inus-east4.- Un rilevatore di minacce avanzato di DNS Armor configurato per ispezionare le query DNS.

Cosa imparerai a fare
- Come eseguire il provisioning delle risorse di rete necessarie, tra cui VPC e macchine virtuali.
- Come eseguire il deployment di un rilevatore di minacce avanzate ed escludere reti specifiche.
- Come convalidare la configurazione del rilevamento delle minacce utilizzando uno script di simulazione delle minacce.
- Come analizzare i log delle minacce in Esplora log.
Che cosa ti serve
- Un progetto Google Cloud.
- Accesso allo strumento a riga di comando
gcloud.
2. Prerequisiti
In questa sezione, eseguirai le seguenti attività:
- Verifica che il tuo progetto Google Cloud soddisfi i vincoli dei criteri dell'organizzazione necessari.
- Verifica che il tuo account utente disponga dei ruoli e delle autorizzazioni IAM richiesti.
- Abilita le API Cloud di Google essenziali per questo codelab.
- Assegna il ruolo IAM
roles/logging.vieweral service account Compute Engine.
Vincoli dei criteri dell'organizzazione
Per completare correttamente questo codelab, verifica i vincoli dei criteri dell'organizzazione applicati al tuo progetto. Alcuni criteri potrebbero ostacolare il provisioning delle risorse necessarie. I seguenti vincoli potrebbero influire sulla configurazione di questo codelab:
constraints/gcp.resourceLocations: limita le regioni in cui puoi creare risorse; il codelab richiedeus-east4eus-central1.constraints/compute.vmExternalIpAccess: impedisce la creazione di macchine virtuali con indirizzi IP pubblici, il che potrebbe interferire con la configurazione se non segui l'utilizzo del flag--no-addressnel codelab .constraints/compute.shieldedVm: impone la creazione di VM schermate, che i comandi di creazione delle VM del codelab non specificano, causando potenzialmente un errore.constraints/gcp.restrictServiceUsage: limita le API Cloud Google che possono essere attivate e potrebbe bloccare il codelab se non consentecompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.comemonitoring.googleapis.com.
Ruoli e autorizzazioni IAM
Per completare correttamente questo codelab, verifica i ruoli e le autorizzazioni IAM concessi al tuo utente. Per completare questo Codelab sono necessari i seguenti ruoli e autorizzazioni IAM.
- Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin): per abilitare le API Google Cloud richieste per il codelab. - Amministratore di rete Compute (
roles/compute.networkAdmin): per creare e gestire reti VPC, subnet e Cloud NAT. - Amministratore della sicurezza di Compute (
roles/compute.securityAdmin): per configurare le regole firewall per l'accesso SSH alle macchine virtuali. - Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1): per creare e gestire le macchine virtuali necessarie per il lab. - Utente del tunnel con protezione IAP (
roles/iap.tunnelResourceAccessor): per connettersi alle macchine virtuali utilizzando SSH tramite Identity-Aware Proxy (IAP). - Amministratore della sicurezza di rete (
roles/networksecurity.admin): per creare e gestire il rilevatore di minacce DNS Armor. - Logs Viewer (
roles/logging.viewer): per visualizzare e analizzare i log delle minacce in Esplora log.
API di Google Cloud
Assicurati che le API Cloud richieste siano abilitate nel tuo progetto.
1. Abilita le API necessarie, esegui i seguenti comandi gcloud in Cloud Shell.
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. Verifica che le API siano abilitate, esegui i seguenti comandi gcloud in Cloud Shell.
gcloud services list --enabled
Service account Compute Engine
Lo script per il test richiede le autorizzazioni per leggere i log delle minacce da Cloud Logging. Poiché lo script verrà eseguito da una VM che utilizza il service account Compute Engine predefinito, a questo service account deve essere assegnato il ruolo IAM roles/logging.viewer.
1. Imposta le variabili di ambiente, esegui i seguenti comandi in Cloud Shell.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. Concedi il ruolo Visualizzatore log al service account Compute Engine. Esegui i seguenti comandi gcloud in Cloud Shell
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3. Configurazione di base dell'ambiente
In questa sezione, eseguirai le seguenti attività:
- Crea reti VPC (
network-aenetwork-b) con subnet personalizzate. - Configura i router Cloud e Cloud NAT per l'uscita da internet sia in
network-ache innetwork-b. - Crea regole firewall per consentire l'accesso SSH alle VM dall'intervallo IP di IAP sia per
network-asia pernetwork-b. - Esegui il provisioning di macchine virtuali Linux sia in
network-ache innetwork-bsenza indirizzi IP pubblici.
Crea VPC e subnet
1. Crea network-a e le relative subnet nelle regioni us-east4 e us-central1. Esegui i seguenti comandi gcloud in Cloud Shell.
gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1
2. Crea network-b e la relativa subnet nella regione us-east4. Esegui i seguenti comandi gcloud in Cloud Shell.
gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4
Configurare il traffico in uscita da internet
1. Crea Cloud Router e Cloud NAT per network-a per consentire l'uscita da internet per le VM senza IP pubblici.
gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1
2. Crea Cloud Router e Cloud NAT per network-b per consentire l'uscita da internet per le VM senza IP pubblici.
gcloud compute routers create router-b-use4 \
--network=network-b \
--region=us-east4
gcloud compute routers nats create nat-b-use4 \
--router=router-b-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
Configura le regole firewall
1. Crea regole firewall per network-a per consentire l'accesso SSH dall'intervallo IP di IAP. Esegui i seguenti comandi gcloud in Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
2. Crea regole firewall per network-b per consentire l'accesso SSH dall'intervallo IP di IAP. Esegui i seguenti comandi gcloud in Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
Creare macchine virtuali
1. Crea VM Linux in network-a
gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform
2. Crea una VM Linux in network-b
gcloud compute instances create vm-b-use4 \
--zone=us-east4-c \
--network=network-b \
--subnet=subnet-b-use4 \
--no-address \
--scopes=cloud-platform
4. Crea il rilevatore di minacce DNS
In questa sezione, eseguirai le seguenti attività:
- Crea il rilevatore di minacce.
- Elenca il rilevatore di minacce.
- Descrivi la risorsa.
Ora che sono stati sottoposti a provisioning VPC, subnet e macchine virtuali, il passaggio successivo è creare il rilevatore di minacce DNS.
1. Crea il rilevatore di minacce utilizzando il comando gcloud beta network-security dns-threat-detectors create. Utilizza il flag --excluded-networks per escludere network-b.
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox \
--excluded-networks=projects/$PROJECT_ID/global/networks/network-b
2. Elenca il rilevatore di minacce per confermare la creazione.
gcloud beta network-security dns-threat-detectors list --location=global
3. Descrivi la risorsa per verificare che network-b sia elencato correttamente in excludedNetworks.
gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global
Output di esempio:
createTime: '2025-08-06T17:06:30.297586089Z' excludedNetworks: - projects/dns-armor-demo-project/global/networks/network-b name: projects/dns-armor-demo-project/locations/global/dnsThreatDetectors/my-dns-threat-detector provider: INFOBLOX updateTime: '2025-08-27T01:14:09.666357239Z'
5. Test della configurazione
In questa sezione, eseguirai le seguenti attività:
- Accedi alle VM tramite SSH.
- Installa Git sulle VM.
- Clona il repository del simulatore di rilevamento delle minacce Infoblox.
- Esegui lo script e analizza l'output generato.
Convalida la configurazione generando query DNS dannose emulate dalle tue VM. Dovresti osservare le voci di log per le query provenienti da network-a, mentre non verranno generati log da network-b.
1. Accedi tramite SSH a vm-a-use4. Esegui i seguenti comandi gcloud in Cloud Shell.
gcloud compute ssh vm-a-use4 --zone=us-east4-c
2. Installa Git sulla VM.
sudo apt-get install git -y
3. Clona il repository del simulatore di rilevamento delle minacce di Infoblox.
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. Cambia directory impostandola su quella del simulatore.
cd ib-threat-detection-simulator/threat_detection_simulator/
5. Esegui lo script e analizza l'output generato.
Rendi eseguibile lo script.
chmod +x run.sh
Esegui lo script.
./run.sh info basic