1. Introduzione e panoramica
DNS Armor, basato su Infoblox, è un servizio completamente gestito che fornisce sicurezza a livello DNS per i tuoi carichi di lavoro Google Cloud. Il suo rilevatore avanzato di minacce è progettato per rilevare attività dannose nel punto più 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 Google Cloud 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 Google Cloud 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 Google 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 di 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
Configurare 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 i VPC, le subnet e le 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
6. Esempio di output
Lo screenshot seguente mostra parte dell'output dello script di una VM nella rete A. L'output mostra che è stato rilevato il 100% delle minacce.

Lo screenshot seguente mostra parte dell'output dello script di una VM nella rete b. L'output mostra che è stato rilevato lo 0% delle minacce. Questo è previsto perché network-b è stata esclusa durante la creazione del rilevatore di minacce.

7. Torna a Cloud Shell uscendo dalla sessione SSH.
exit
6. Visualizzare i log delle minacce in Esplora log
I log delle minacce generati possono essere visualizzati in Esplora log dopo l'esecuzione dello script di test, poiché vengono scritti in Cloud Logging.
Voce di log di esempio
Questa sezione fornisce una voce di log di esempio per una minaccia DNS rilevata, che mostra le informazioni dettagliate acquisite da DNS Armor, tra cui l'IP di origine, il dominio sottoposto a query e la categoria di minaccia. Serve come riferimento per comprendere la struttura e i contenuti dei log che analizzerai.
{
"insertId": "1izjkneb44",
"jsonPayload": {
"partnerId": "Infoblox",
"detectionTime": "2025-08-08T01:49:54.092250101Z",
"dnsQuery": {
"authAnswer": false,
"rdata": "random.malicious-domain.com.\t300\tIN\ta\t196.251.118.39",
"protocol": "UDP",
"projectNumber": "1234567890",
"responseCode": "NOERROR",
"queryType": "A",
"location": "us-east4",
"sourceIp": "10.10.0.2",
"queryName": "random.malicious-domain.com.",
"vmProjectNumber": "1234567890",
"vmInstanceId": "01234567899876543210",
"destinationIp": "",
"queryTime": "2025-08-08T01:49:53.712692495Z"
},
"threatInfo": {
"severity": "HIGH",
"confidence": "HIGH",
"threatDescription": "",
"category": "EmergentDomain",
"threatId": "Suspicious_EmergentDomain",
"type": "Suspicious",
"threatIndicator": "izumisv1.cc",
"threatIndicatorType": "FQDN",
"threat": "Suspicious",
"threatFeed": "suspicious-noed"
}
},
"resource": {
"type": "networksecurity.googleapis.com/DnsThreatDetector",
"labels": {
"resource_container": "projects/1234567890",
"id": "",
"location": "us-east4"
}
},
"timestamp": "2025-08-08T01:49:54.092250101Z",
"severity": "INFO",
"logName": "projects/dns-armor-demo-project/logs/networksecurity.googleapis.com%2Fdns_threat_events",
"receiveTimestamp": "2025-08-08T01:49:55.290965780Z"
}
Visualizzare i log in Esplora log
1. Vai alla sezione Monitoring della console Google Cloud, quindi seleziona Logs explorer.

2. Filtra tutti i log delle minacce DNS Armor utilizzando la seguente query. Filtra i log in base al tipo di risorsa per DNS Threat Detector.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
3. Filtra i log per la regione us-east4, aggiungi un filtro per la località. Questa query mostrerà solo le minacce rilevate nella regione us-east4.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"
4. Filtra i log per rete di origine, filtra i log in base all'indirizzo IP di origine della query DNS per visualizzare le minacce provenienti da una rete VPC specifica.
Per visualizzare i log di network-a (subnet 10.10.0.0/24 e 10.10.1.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")
Per visualizzare i log di network-b (subnet 10.20.0.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."
7. Esegui la pulizia
Per evitare addebiti futuri, elimina le risorse create in questo codelab. Assicurati di uscire dalla shell della VM e di tornare a Cloud Shell quando esegui i comandi di pulizia.
1. Elimina le VM.
gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet
gcloud compute instances delete vm-b-use4 --zone=us-east4-c --quiet
2. Elimina le regole firewall.
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet
3. Elimina i gateway Cloud NAT.
gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet
gcloud compute routers nats delete nat-b-use4 --router=router-b-use4 --region=us-east4 --quiet
4. Elimina i router Cloud
gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
gcloud compute routers delete router-b-use4 --region=us-east4 --quiet
5. Elimina le subnet.
gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
gcloud compute networks subnets delete subnet-b-use4 --region=us-east4 --quiet
6. Elimina il rilevatore di minacce DNS.
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
7. Elimina i VPC.
gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet
8. Complimenti
Complimenti! Hai configurato, eseguito il deployment e testato correttamente il rilevatore di minacce DNS Armor. Hai acquisito esperienza pratica nella protezione del tuo ambiente Google Cloud dalle minacce basate sul DNS.
In questo codelab hai:
- È stato eseguito il provisioning di un ambiente di rete con più VPC, subnet e macchine virtuali.
- Configurazione dell'uscita da internet per le VM private utilizzando Cloud NAT.
- È stato implementato un rilevatore di minacce DNS Armor e hai imparato a escludere reti specifiche.
- Minacce DNS simulate e configurazione del rilevamento delle minacce convalidata.
- Analizzati i log delle minacce in Esplora log per identificare e comprendere l'attività DNS dannosa.