1. Wstęp i omówienie
DNS Armor, oparta na technologii Infoblox, to w pełni zarządzana usługa, która zapewnia zabezpieczenia na poziomie DNS dla Twoich zbiorów zadań w Google Cloud. Zaawansowany detektor zagrożeń został zaprojektowany tak, aby wykrywać szkodliwą aktywność na najwcześniejszym etapie łańcucha ataku – w zapytaniu DNS – bez zwiększania złożoności operacyjnej ani obciążenia wydajności.
W tym ćwiczeniu znajdziesz instrukcje krok po kroku dotyczące konfigurowania i testowania usługi DNS Armor. Skonfigurujesz niezbędną infrastrukturę sieciową, utworzysz detektor zagrożeń, przetestujesz usługę, symulując zagrożenia DNS, a na koniec przeanalizujesz logi zagrożeń za pomocą eksploratora logów.
Co utworzysz
W tym module utworzysz te zasoby:
- 2 sieci VPC:
network-ainetwork-b network-abędzie obejmować podsieci i maszyny wirtualne w regionachus-east4ius-central1.network-bbędzie zawierać podsieć i maszynę wirtualną wyłącznie wus-east4.- Zaawansowany detektor zagrożeń DNS Armor skonfigurowany do sprawdzania zapytań DNS.

Czego się nauczysz
- Jak udostępnić niezbędne zasoby sieciowe, w tym sieci VPC i maszyny wirtualne.
- Jak wdrożyć zaawansowany detektor zagrożeń i wykluczyć określone sieci.
- Jak zweryfikować konfigurację wykrywania zagrożeń za pomocą skryptu symulacji zagrożeń.
- Jak analizować logi zagrożeń w eksploratorze logów.
Czego potrzebujesz
- Projekt Google Cloud.
- Dostęp do narzędzia wiersza poleceń
gcloud.
2. Wymagania wstępne
W tej sekcji wykonasz te czynności:
- Sprawdź, czy Twój projekt Google Cloud spełnia wymagane ograniczenia zasad organizacji.
- Sprawdź, czy Twoje konto użytkownika ma wymagane role i uprawnienia IAM.
- Włącz interfejsy Google Cloud API niezbędne do tego laboratorium.
- Przypisz do konta usługi Compute Engine rolę uprawnień
roles/logging.viewer.
Ograniczenia zasad organizacji
Aby ukończyć to ćwiczenie, sprawdź ograniczenia zasad organizacji zastosowane w Twoim projekcie. Niektóre zasady mogą utrudniać udostępnianie niezbędnych zasobów. Na konfigurację tego laboratorium mogą mieć wpływ te ograniczenia:
constraints/gcp.resourceLocations: ogranicza regiony, w których możesz tworzyć zasoby; ćwiczenie z programowania wymagaus-east4ius-central1.constraints/compute.vmExternalIpAccess: uniemożliwia tworzenie maszyn wirtualnych z publicznymi adresami IP, co może zakłócić konfigurację, jeśli nie będziesz postępować zgodnie z instrukcjami w tym samouczku dotyczącymi używania flagi--no-address.constraints/compute.shieldedVm: wymusza tworzenie chronionych maszyn wirtualnych, których polecenia tworzenia maszyn wirtualnych w tym samouczku nie określają, co może powodować błąd.constraints/gcp.restrictServiceUsage: ogranicza liczbę interfejsów Google Cloud API, które można włączyć, i może zablokować codelab, jeśli nie zezwala nacompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.comimonitoring.googleapis.com.
Role i uprawnienia
Aby ukończyć te ćwiczenia z programowania, sprawdź role i uprawnienia IAM przyznane Twojemu użytkownikowi. Aby ukończyć to ćwiczenie, musisz mieć te role i uprawnienia.
- Administrator użycia usługi (
roles/serviceusage.serviceUsageAdmin): aby włączyć wymagane interfejsy API Google Cloud na potrzeby codelabu. - Administrator sieci Compute (
roles/compute.networkAdmin): umożliwia tworzenie sieci VPC, podsieci i Cloud NAT oraz zarządzanie nimi. - Administrator zabezpieczeń Compute (
roles/compute.securityAdmin): do konfigurowania reguł zapory sieciowej dla dostępu SSH do maszyn wirtualnych. - Administrator instancji Compute (v1) (
roles/compute.instanceAdmin.v1): umożliwia tworzenie maszyn wirtualnych wymaganych w laboratorium i zarządzanie nimi. - Użytkownik tunelu zabezpieczonego przez IAP (
roles/iap.tunnelResourceAccessor): umożliwia łączenie się z maszynami wirtualnymi za pomocą SSH przez serwer proxy identyfikujący tożsamość (IAP). - Administrator ds. bezpieczeństwa sieci (
roles/networksecurity.admin): może tworzyć detektor zagrożeń DNS Armor i nim zarządzać. - Wyświetlający logi (
roles/logging.viewer): umożliwia wyświetlanie i analizowanie logów zagrożeń w eksploratorze logów.
Interfejsy Google Cloud APIs
Sprawdź, czy w projekcie są włączone wymagane interfejsy API Google Cloud.
1. Włącz niezbędne interfejsy API, uruchamiając w Cloud Shell te gcloud polecenia.
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. Sprawdź, czy interfejsy API są włączone, uruchamiając w Cloud Shell te gcloud polecenia.
gcloud services list --enabled
Konto usługi Compute Engine
Skrypt testowy wymaga uprawnień do odczytywania logów zagrożeń z Cloud Logging. Skrypt będzie wykonywany na maszynie wirtualnej korzystającej z domyślnego konta usługi Compute Engine, dlatego do tego konta usługi musi być przypisana rola uprawnień roles/logging.viewer.
1. Ustaw zmienne środowiskowe, uruchamiając w Cloud Shell te polecenia:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. Przyznaj konto usługi Compute Engine rolę przeglądającego logi. Uruchom w Cloud Shell te polecenia gcloud:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3. Podstawowa konfiguracja środowiska
W tej sekcji wykonasz te czynności:
- Utwórz sieci VPC (
network-ainetwork-b) z niestandardowymi podsieciami. - Skonfiguruj routery Cloud Router i Cloud NAT na potrzeby ruchu wychodzącego z internetu w obu regionach
network-ainetwork-b. - Utwórz reguły zapory sieciowej zezwalające na dostęp SSH do maszyn wirtualnych z zakresu adresów IP IAP w przypadku obu sieci
network-ainetwork-b. - Aprowizuj maszyny wirtualne z systemem Linux w strefach
network-ainetwork-bbez publicznych adresów IP.
Tworzenie sieci VPC i podsieci
1. Utwórz sieć-a i jej podsieci w regionach us-east4 i us-central1. Uruchom w Cloud Shell te polecenia gcloud.
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. Utwórz sieć-b i jej podsieć w regionie us-east4. Uruchom w Cloud Shell te polecenia gcloud.
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
Konfigurowanie ruchu wychodzącego z internetu
1. Utwórz router Cloud Router i Cloud NAT dla network-a, aby umożliwić maszynom wirtualnym bez publicznych adresów IP wychodzenie z internetu.
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. Utwórz router Cloud Router i Cloud NAT dla network-b, aby umożliwić maszynom wirtualnym bez publicznych adresów IP wychodzenie z internetu.
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
Konfigurowanie reguł zapory sieciowej
1. Utwórz reguły zapory sieciowej dla network-a, aby zezwolić na dostęp SSH z zakresu adresów IP IAP. Uruchom w Cloud Shell te polecenia gcloud.
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
2. Utwórz reguły zapory sieciowej dla network-b, aby zezwolić na dostęp SSH z zakresu adresów IP IAP. Uruchom w Cloud Shell te polecenia gcloud.
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
Tworzenie maszyn wirtualnych
1. Tworzenie maszyn wirtualnych z systemem Linux w regionie 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. Tworzenie maszyny wirtualnej z systemem Linux w strefie 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. Tworzenie detektora zagrożeń DNS
W tej sekcji wykonasz te czynności:
- Utwórz detektor zagrożeń.
- Wyświetl listę detektorów zagrożeń.
- Opisz zasób.
Po utworzeniu sieci VPC, podsieci i maszyn wirtualnych następnym krokiem jest utworzenie detektora zagrożeń DNS.
1. Utwórz detektor zagrożeń za pomocą polecenia gcloud beta network-security dns-threat-detectors create. Użyj flagi --excluded-networks, aby wykluczyć 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. Wyświetl listę detektorów zagrożeń, aby potwierdzić utworzenie.
gcloud beta network-security dns-threat-detectors list --location=global
3. Opisz zasób, aby sprawdzić, czy network-b jest prawidłowo wymieniony w sekcji excludedNetworks.
gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global
Przykładowe dane wyjściowe:
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. Testowanie konfiguracji
W tej sekcji wykonasz te czynności:
- Połącz się z maszynami wirtualnymi za pomocą SSH.
- Zainstaluj Git na maszynach wirtualnych.
- Sklonuj repozytorium symulatora wykrywania zagrożeń Infoblox.
- Uruchom skrypt i przeanalizuj wygenerowane dane wyjściowe.
Sprawdź konfigurację, generując na maszynach wirtualnych emulowane złośliwe zapytania DNS. Powinny być widoczne wpisy logu dotyczące zapytań pochodzących z network-a, a żadne logi nie będą generowane z network-b..
1. Połącz się z maszyną wirtualną vm-a-use4 za pomocą SSH. Uruchom w Cloud Shell te polecenia gcloud.
gcloud compute ssh vm-a-use4 --zone=us-east4-c
2. Zainstaluj Git na maszynie wirtualnej.
sudo apt-get install git -y
3. Sklonuj repozytorium symulatora wykrywania zagrożeń Infoblox.
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. Przejdź do katalogu symulatora.
cd ib-threat-detection-simulator/threat_detection_simulator/
5. Uruchom skrypt i przeanalizuj wygenerowane dane wyjściowe.
Ustaw skrypt jako wykonywalny.
chmod +x run.sh
Uruchom skrypt.
./run.sh info basic
6. Przykładowe dane wyjściowe
Zrzut ekranu poniżej przedstawia część danych wyjściowych skryptu z maszyny wirtualnej w sieci A. Wyniki pokazują, że wykryto 100% zagrożeń.

Zrzut ekranu poniżej przedstawia część danych wyjściowych skryptu z maszyny wirtualnej w sieci b. Wynik pokazuje, że wykryto 0% zagrożeń. Jest to oczekiwane, ponieważ sieć b została wykluczona podczas tworzenia detektora zagrożeń.

7. Wróć do Cloud Shell, zamykając sesję SSH.
exit
6. Wyświetlanie logów zagrożeń w Eksploratorze logów
Wygenerowane logi zagrożeń można wyświetlić w Eksploratorze logów po uruchomieniu skryptu testowego, ponieważ są one zapisywane w Cloud Logging.
Przykładowy wpis logu
Ta sekcja zawiera przykładowy wpis w dzienniku wykrytego zagrożenia DNS, który pokazuje szczegółowe informacje przechwycone przez DNS Armor, w tym źródłowy adres IP, domenę, której dotyczyło zapytanie, i kategorię zagrożenia. Służy on jako punkt odniesienia do zrozumienia struktury i zawartości logów, które będziesz analizować.
{
"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"
}
Wyświetlanie logów w Eksploratorze logów
1. W konsoli Google Cloud przejdź do sekcji Monitoring, a następnie wybierz Logs explorer.

2. Aby przefiltrować wszystkie logi zagrożeń DNS Armor, użyj tego zapytania. Filtruje logi na podstawie typu zasobu detektora zagrożeń DNS.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
3. Filtruj logi dla regionu us-east4, dodaj filtr lokalizacji. To zapytanie wyświetli tylko zagrożenia wykryte w regionie us-east4.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"
4. Filtrowanie logów według sieci źródłowej – filtruj logi na podstawie źródłowego adresu IP zapytania DNS, aby zobaczyć zagrożenia pochodzące z określonej sieci VPC.
Aby wyświetlić logi z network-a (podsieci 10.10.0.0/24 i 10.10.1.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")
Aby wyświetlić logi z network-b (podsieci 10.20.0.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."
7. Czyszczenie
Aby uniknąć przyszłych opłat, usuń zasoby utworzone w tym laboratorium. Podczas uruchamiania poleceń czyszczenia pamiętaj, aby zamknąć powłokę maszyny wirtualnej i wrócić do Cloud Shell.
1. Usuń maszyny wirtualne.
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. Usuń reguły zapory sieciowej.
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet
3. Usuń bramy 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. Usuń routery 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. Usuń podsieci.
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. Usuń detektor zagrożeń DNS.
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
7. Usuń sieci VPC.
gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet
8. Gratulacje
Gratulacje! Udało Ci się skonfigurować, wdrożyć i przetestować detektor zagrożeń DNS Armor. Zdobyłeś(-aś) praktyczne doświadczenie w zakresie ochrony środowiska Google Cloud przed zagrożeniami opartymi na DNS.
W tych ćwiczeniach z programowania:
- utworzyć środowisko sieciowe z wieloma sieciami VPC, podsieciami i maszynami wirtualnymi;
- Skonfigurowano wychodzący ruch internetowy dla prywatnych maszyn wirtualnych za pomocą Cloud NAT.
- wdrożono detektor zagrożeń DNS Armor i dowiedziano się, jak wykluczać określone sieci;
- symulowane zagrożenia DNS i zweryfikowana konfiguracja wykrywania zagrożeń.
- Analizowanie logów zagrożeń w eksploratorze logów w celu identyfikowania i rozumienia szkodliwej aktywności DNS.