1. Pendahuluan dan Ikhtisar
DNS Armor, yang didukung oleh Infoblox, adalah layanan terkelola sepenuhnya yang menyediakan keamanan lapisan DNS untuk workload Google Cloud Anda. Detektor ancaman canggihnya dirancang untuk mendeteksi aktivitas berbahaya pada titik paling awal dalam rantai serangan—kueri DNS—tanpa menambah kompleksitas operasional atau overhead performa.
Codelab ini memberikan petunjuk langkah demi langkah untuk mengonfigurasi dan menguji layanan DNS Armor. Anda akan menyiapkan infrastruktur jaringan yang diperlukan, membuat detektor ancaman, menguji layanan dengan menyimulasikan ancaman DNS, dan terakhir, menganalisis log ancaman menggunakan Logs Explorer.
Yang akan Anda bangun
Dalam codelab ini, Anda akan menyediakan resource berikut:
- Dua jaringan VPC:
network-adannetwork-b network-aakan mencakup subnet dan virtual machine di regionus-east4danus-central1.network-bakan menyertakan subnet dan virtual machine hanya dius-east4.- Detektor ancaman lanjutan DNS Armor yang dikonfigurasi untuk memeriksa kueri DNS.

Yang akan Anda pelajari
- Cara menyediakan resource jaringan yang diperlukan, termasuk VPC dan virtual machine.
- Cara men-deploy detektor ancaman tingkat lanjut dan mengecualikan jaringan tertentu.
- Cara memvalidasi konfigurasi deteksi ancaman menggunakan skrip simulasi ancaman.
- Cara menganalisis log ancaman di Logs Explorer.
Yang Anda butuhkan
- Project Google Cloud.
- Akses ke alat command line
gcloud.
2. Prasyarat
Di bagian ini, Anda akan melakukan tugas-tugas berikut:
- Pastikan project Google Cloud Anda memenuhi batasan Kebijakan Organisasi yang diperlukan.
- Pastikan akun pengguna Anda memiliki peran dan izin IAM yang diperlukan.
- Aktifkan Google Cloud API yang penting untuk codelab ini.
- Tetapkan peran IAM
roles/logging.viewerke Akun Layanan Compute Engine.
Batasan Kebijakan Organisasi
Agar berhasil menyelesaikan codelab ini, pastikan batasan Kebijakan Organisasi yang diterapkan ke project Anda. Kebijakan tertentu dapat menghambat penyediaan resource yang diperlukan. Batasan berikut dapat memengaruhi konfigurasi codelab ini:
constraints/gcp.resourceLocations: Membatasi region tempat Anda dapat membuat resource; codelab ini memerlukanus-east4danus-central1.constraints/compute.vmExternalIpAccess: Mencegah pembuatan virtual machine dengan alamat IP publik, yang dapat mengganggu penyiapan jika Anda tidak mengikuti penggunaan flag--no-addressdalam codelab .constraints/compute.shieldedVm: Memaksakan pembuatan VM Shielded, yang tidak ditentukan oleh perintah pembuatan VM codelab, sehingga berpotensi menyebabkan error.constraints/gcp.restrictServiceUsage: Membatasi API Google Cloud yang dapat diaktifkan, dan dapat memblokir codelab jika tidak mengizinkancompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.com, danmonitoring.googleapis.com.
Peran dan Izin IAM
Agar berhasil menyelesaikan codelab ini, pastikan peran dan izin IAM yang diberikan kepada pengguna Anda. Peran dan izin IAM berikut diperlukan untuk menyelesaikan Codelab ini.
- Admin Penggunaan Layanan (
roles/serviceusage.serviceUsageAdmin): Untuk mengaktifkan Google Cloud API yang diperlukan untuk codelab. - Compute Network Admin (
roles/compute.networkAdmin): Untuk membuat dan mengelola jaringan VPC, subnet, dan Cloud NAT. - Compute Security Admin (
roles/compute.securityAdmin): Untuk mengonfigurasi aturan firewall untuk akses SSH ke virtual machine. - Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1): Untuk membuat dan mengelola virtual machine yang diperlukan untuk lab. - IAP-secured Tunnel User (
roles/iap.tunnelResourceAccessor): Untuk terhubung ke mesin virtual menggunakan SSH melalui Identity-Aware Proxy (IAP). - Admin Keamanan Jaringan (
roles/networksecurity.admin): Untuk membuat dan mengelola detektor ancaman DNS Armor. - Logs Viewer (
roles/logging.viewer): Untuk melihat dan menganalisis log ancaman di Logs Explorer.
Google Cloud API
Pastikan Google Cloud API yang diperlukan diaktifkan di project Anda.
1. Aktifkan API yang diperlukan, jalankan perintah gcloud berikut dalam Cloud Shell.
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. Verifikasi bahwa API telah Diaktifkan, jalankan perintah gcloud berikut dalam Cloud Shell.
gcloud services list --enabled
Akun Layanan Compute Engine
Skrip pengujian memerlukan izin untuk membaca log ancaman dari Cloud Logging. Karena skrip akan dieksekusi dari VM yang menggunakan Akun Layanan Compute Engine default, peran IAM roles/logging.viewer harus ditetapkan ke akun layanan ini.
1. Tetapkan variabel lingkungan, jalankan perintah berikut dalam Cloud Shell.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. Berikan peran pelihat logging ke SA Compute Engine. Jalankan perintah gcloud berikut dalam Cloud Shell
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3. Penyiapan Lingkungan Dasar
Di bagian ini, Anda akan melakukan tugas-tugas berikut:
- Buat jaringan VPC (
network-adannetwork-b) dengan subnet kustom. - Konfigurasi Cloud Router dan Cloud NAT untuk keluar internet di
network-adannetwork-b. - Buat aturan firewall untuk mengizinkan akses SSH ke VM dari rentang IP IAP untuk
network-adannetwork-b. - Sediakan mesin virtual Linux di
network-adannetwork-btanpa alamat IP publik.
Membuat VPC dan Subnet
1. Buat network-a dan subnetnya di region us-east4 dan us-central1. Jalankan perintah gcloud berikut dalam 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. Buat network-b dan subnetnya di region us-east4. Jalankan perintah gcloud berikut dalam 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
Mengonfigurasi Traffic Keluar Internet
1. Buat Cloud Router dan Cloud NAT untuk network-a guna mengizinkan traffic keluar internet untuk VM tanpa IP publik.
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. Buat Cloud Router dan Cloud NAT untuk network-b guna mengizinkan traffic keluar internet untuk VM tanpa IP publik.
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
Mengonfigurasi Aturan Firewall
1. Buat aturan firewall untuk network-a guna mengizinkan akses SSH dari rentang IP IAP. Jalankan perintah gcloud berikut dalam 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. Buat aturan firewall untuk network-b guna mengizinkan akses SSH dari rentang IP IAP. Jalankan perintah gcloud berikut dalam Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
Membuat Virtual Machine
1. Buat VM Linux di 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. Buat VM Linux di 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. Membuat Pendeteksi Ancaman DNS
Di bagian ini, Anda akan melakukan tugas-tugas berikut:
- Buat pendeteksi ancaman.
- Mencantumkan pendeteksi ancaman.
- Jelaskan resource.
Setelah VPC, subnet, dan virtual machine disediakan, langkah berikutnya adalah membuat detektor ancaman DNS.
1. Buat pendeteksi ancaman menggunakan perintah gcloud beta network-security dns-threat-detectors create. Gunakan flag --excluded-networks untuk mengecualikan 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. Mencantumkan pendeteksi ancaman untuk mengonfirmasi pembuatan.
gcloud beta network-security dns-threat-detectors list --location=global
3. Deskripsikan resource untuk memverifikasi bahwa network-b tercantum dengan benar di bagian excludedNetworks.
gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global
Contoh Output:
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. Menguji Penyiapan
Di bagian ini, Anda akan melakukan tugas-tugas berikut:
- Gunakan SSH untuk terhubung ke VM.
- Instal Git di VM.
- Buat clone repositori simulator deteksi ancaman Infoblox.
- Jalankan skrip dan analisis output yang dihasilkan.
Validasi penyiapan dengan membuat kueri DNS berbahaya yang diemulasi dari VM Anda. Anda akan melihat entri log untuk kueri yang berasal dari network-a, sementara tidak ada log yang akan dibuat dari network-b.
1. Terapkan SSH ke vm-a-use4. Jalankan perintah gcloud berikut dalam Cloud Shell.
gcloud compute ssh vm-a-use4 --zone=us-east4-c
2. Instal Git di VM.
sudo apt-get install git -y
3. Buat clone repositori simulator deteksi ancaman Infoblox.
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. Ubah direktori ke direktori simulator.
cd ib-threat-detection-simulator/threat_detection_simulator/
5. Jalankan skrip dan analisis output yang dihasilkan.
Buat skrip agar dapat dieksekusi.
chmod +x run.sh
Jalankan skrip.
./run.sh info basic
6. Contoh Output
Screenshot di bawah menunjukkan sebagian output skrip dari VM di network-a. Output menunjukkan bahwa 100% ancaman terdeteksi.

Screenshot di bawah menunjukkan sebagian output skrip dari VM di network-b. Output menunjukkan bahwa 0% ancaman terdeteksi. Hal ini sudah diperkirakan karena network-b dikecualikan selama pembuatan pendeteksi ancaman.

7. Kembali ke Cloud Shell dengan keluar dari sesi SSH.
exit
6. Melihat Log Ancaman di Logs Explorer
Log ancaman yang dihasilkan dapat dilihat di Logs Explorer setelah menjalankan skrip pengujian, karena log tersebut ditulis ke Cloud Logging.
Contoh Entri Log
Bagian ini memberikan contoh entri log untuk ancaman DNS yang terdeteksi, yang menunjukkan informasi mendetail yang diambil oleh DNS Armor, termasuk IP sumber, domain yang dikueri, dan kategori ancaman. Dokumen ini berfungsi sebagai referensi untuk memahami struktur dan konten log yang akan Anda analisis.
{
"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"
}
Melihat Log di Logs Explorer
1. Buka bagian Monitoring di Google Cloud Console, lalu pilih Logs explorer.

2. Filter semua log ancaman DNS Armor, gunakan kueri berikut. Filter ini memfilter log berdasarkan jenis resource untuk DNS Threat Detector.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
3. Filter log untuk region us-east4, tambahkan filter untuk lokasi. Kueri ini hanya akan menampilkan ancaman yang terdeteksi di region us-east4.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"
4. Memfilter log menurut jaringan sumber, memfilter log berdasarkan alamat IP sumber kueri DNS untuk melihat ancaman yang berasal dari jaringan VPC tertentu.
Untuk melihat log dari network-a (subnet 10.10.0.0/24 dan 10.10.1.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")
Untuk melihat log dari network-b (subnet 10.20.0.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."
7. Pembersihan
Untuk menghindari biaya di masa mendatang, hapus resource yang dibuat di codelab ini. Pastikan untuk keluar dari shell VM dan kembali ke Cloud Shell saat menjalankan perintah pembersihan.
1. Hapus 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. Hapus aturan firewall.
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet
3. Hapus 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. Menghapus Cloud Router
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. Hapus 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. Hapus pendeteksi ancaman DNS.
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
7. Hapus VPC.
gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet
8. Selamat
Selamat! Anda telah berhasil mengonfigurasi, men-deploy, dan menguji detektor ancaman DNS Armor. Anda telah mendapatkan pengalaman langsung dalam melindungi lingkungan Google Cloud Anda dari ancaman berbasis DNS.
Dalam codelab ini, Anda telah:
- Menyediakan lingkungan jaringan dengan beberapa VPC, subnet, dan virtual machine.
- Mengonfigurasi traffic keluar internet untuk VM pribadi menggunakan Cloud NAT.
- Men-deploy pendeteksi ancaman DNS Armor dan mempelajari cara mengecualikan jaringan tertentu.
- Mensimulasikan ancaman DNS dan memvalidasi konfigurasi deteksi ancaman.
- Menganalisis log ancaman di Logs Explorer untuk mengidentifikasi dan memahami aktivitas DNS berbahaya.