Mengumpulkan log Detektor Ancaman DNS Google Cloud
Dokumen ini menjelaskan cara menyerap log Google Cloud DNS Threat Detector ke Google Security Operations menggunakan Google Cloud Storage V2.
DNS Armor, yang didukung oleh Infoblox, adalah layanan terkelola sepenuhnya yang menyediakan keamanan dengan lapisan DNS untuk workload Google Cloud Anda. Detektor ancaman canggihnya dirancang untuk mendeteksi aktivitas berbahaya pada titik paling awal dalam rantai serangan, yaitu kueri DNS, tanpa menambah kompleksitas operasional atau overhead performa. Setelah ancaman terdeteksi, Anda dapat memperoleh insight yang dapat ditindaklanjuti tentang ancaman DNS melalui Cloud Logging.
Saat Anda mengaktifkan detektor ancaman DNS untuk suatu project, DNS Armor akan secara aman mengirim log kueri DNS yang terhubung ke internet ke mesin analisis berbasis Google Cloud yang didukung oleh Infoblox. Mesin ini menggunakan kombinasi feed threat intelligence dan analisis perilaku berbasis AI untuk mengidentifikasi ancaman. Aktivitas berbahaya yang terdeteksi akan menghasilkan log ancaman DNS Armor, yang kemudian dikirim kembali ke project Anda dan ditulis ke Cloud Logging agar Anda dapat memeriksa dan menindaklanjutinya.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Project GCP dengan Cloud Storage API yang diaktifkan.
- Izin untuk membuat dan mengelola bucket GCS.
- Izin untuk mengelola kebijakan IAM di bucket GCS.
- Network Security API diaktifkan di project Anda.
- Peran IAM yang diperlukan untuk mengaktifkan detektor ancaman DNS.
- Izin untuk melihat log ancaman DNS:
resourcemanager.projects.get,resourcemanager.projects.list,networksecurity.dnsThreatDetectors.get,networksecurity.dnsThreatDetectors.listatau peranroles/networksecurity.dnsThreatDetectorViewerdanroles/logging.viewer.
Membuat bucket Google Cloud Storage
- Buka Konsol Google Cloud.
- Pilih project Anda atau buat project baru.
- Di menu navigasi, buka Cloud Storage > Buckets.
- Klik Create bucket.
Berikan detail konfigurasi berikut:
Setelan Nilai Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, dns-threat-detector-logs)Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region) Location Pilih lokasi (misalnya, us-central1)Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses) Access control Seragam (direkomendasikan) Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi Klik Create.
Membuat detektor ancaman DNS
Bagian ini menjelaskan cara membuat detektor ancaman DNS untuk memantau aktivitas DNS yang berbahaya dan terikat ke internet di jaringan VPC.
Anda hanya dapat mengaktifkan satu detektor ancaman DNS untuk sebuah project.
Menggunakan Konsol Google Cloud
- Di konsol Google Cloud, buka halaman Advanced threat detection.
- Klik Create DNS threat detector.
- Masukkan nama untuk detektor ancaman DNS Anda.
- Pilih All VPC networks in the project.
- Klik Create.
Menggunakan alat command line gcloud
Atau, buat detektor ancaman DNS menggunakan perintah gcloud:
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"
Ganti:
- my-dns-threat-detector: Nama untuk detektor ancaman DNS Anda.
- PROJECT_ID: Project ID Anda.
Mengonfigurasi Cloud Logging untuk mengekspor log DNS Threat Detector ke GCS
Log ancaman DNS Armor ditulis ke Cloud Logging. Anda harus mengonfigurasi sink log untuk mengekspor log ini ke bucket GCS Anda.
- Di Konsol Google Cloud, buka Logging > Logs Router.
- Klik Create sink.
- Berikan detail konfigurasi berikut:
- Sink name: Masukkan nama deskriptif (misalnya,
dns-threat-detector-to-gcs). - Deskripsi wastafel: Deskripsi opsional.
- Sink name: Masukkan nama deskriptif (misalnya,
- Klik Berikutnya.
- Di bagian Pilih layanan sink:
- Sink service: Pilih Bucket Cloud Storage.
- Pilih bucket Cloud Storage: Pilih bucket (misalnya,
dns-threat-detector-logs) dari dropdown.
- Klik Berikutnya.
Di bagian Pilih log untuk menyertakan sink, masukkan kueri filter berikut:
resource.type="networksecurity.googleapis.com/DnsThreatDetector" logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
Ganti PROJECT_ID dengan project ID GCP Anda.
- Klik Berikutnya.
- Tinjau konfigurasi, lalu klik Create sink.
Menggunakan alat command line gcloud
Atau, buat sink log menggunakan perintah gcloud:
gcloud logging sinks create dns-threat-detector-to-gcs \
gs://dns-threat-detector-logs \
--log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
--project=PROJECT_ID
Ganti:
- dns-threat-detector-logs: Nama bucket GCS Anda.
- PROJECT_ID: Project ID GCP Anda.
Mengambil akun layanan Google SecOps
Google SecOps menggunakan akun layanan unik untuk membaca data dari bucket GCS Anda. Anda harus memberi akun layanan ini akses ke bucket Anda.
Mengonfigurasi feed di Google SecOps untuk menyerap log Google Cloud DNS Threat Detector
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
GCP DNS Threat Detector Logs). - Pilih Google Cloud Storage V2 sebagai Source type.
Pilih Google Cloud DNS Threat Detector sebagai Jenis log.
Klik Get Service Account.
Email akun layanan yang unik akan ditampilkan, misalnya:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comSalin alamat email ini. Anda akan menggunakannya pada langkah berikutnya.
Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
URL bucket penyimpanan: Masukkan URI bucket GCS dengan jalur awalan:
gs://dns-threat-detector-logs/Ganti:
dns-threat-detector-logs: Nama bucket GCS Anda.
- Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
- Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
- Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
- Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.
- Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir. Defaultnya adalah 180 hari.
- Namespace aset: Namespace aset.
- Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Memberikan izin IAM ke akun layanan Google SecOps
Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda (misalnya,
dns-threat-detector-logs). - Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Add principals: Tempel email akun layanan Google SecOps.
- Tetapkan peran: Pilih Storage Object Viewer.
Klik Simpan.
Tabel pemetaan UDM
| Kolom log | Pemetaan UDM | Logika |
|---|---|---|
| record.jsonPayload.dnsQuery.responseCode, record.jsonPayload.dnsQuery.authAnswer, record.jsonPayload.dnsQuery.queryTime, record.jsonPayload.partnerId, record.jsonPayload.detectionTime, record.logName | additional.fields | Nilai disalin ke peta tambahan, lalu digabungkan sebagai entri peta dengan value.string_value jika tidak kosong |
| record.receiveTimestamp | metadata.collected_timestamp | Diuraikan sebagai stempel waktu ISO8601 |
| metadata.event_type | Tetapkan ke "NETWORK_CONNECTION" jika has_principal dan has_target, "STATUS_UPDATE" jika has_principal, atau "GENERIC_EVENT" | |
| record.timestamp | metadata.event_timestamp | Diuraikan sebagai stempel waktu ISO8601 |
| record.insertId | metadata.product_log_id | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.rdata | network.dns.answers | Nilai disalin ke answer.data, lalu digabungkan sebagai array jika tidak kosong |
| record.jsonPayload.dnsQuery.queryName, record.jsonPayload.dnsQuery.queryType | network.dns.questions | questions.name dari queryName, questions.type dipetakan dari string queryType ke bilangan bulat, lalu digabungkan sebagai array jika tidak kosong |
| record.jsonPayload.dnsQuery.responseCode | network.dns.response_code | Dipetakan dari string ke bilangan bulat menggunakan tabel bawaan |
| record.jsonPayload.dnsQuery.protocol | network.ip_protocol | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.sourceIp | principal.asset.ip | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.sourceIp | principal.ip | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.location | principal.location.country_or_region | Nilai disalin secara langsung jika tidak kosong |
| record.resource.labels.location | principal.location.name | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.vmProjectNumber, record.jsonPayload.dnsQuery.projectNumber | principal.resource.attribute.labels | Nilai disalin ke peta tambahan, lalu digabungkan sebagai entri peta jika tidak kosong |
| record.jsonPayload.dnsQuery.vmInstanceId | principal.resource.id | Nilai disalin secara langsung jika tidak kosong |
| record.resource.labels.id | principal.resource.product_object_id | Nilai disalin secara langsung jika tidak kosong |
| record.resource.type | principal.resource.type | Nilai disalin secara langsung jika tidak kosong |
| security_result | Digabungkan dari peta security_result yang dibuat | |
| record.jsonPayload.threatInfo.confidence | security_result.confidence | Dipetakan ke LOW_CONFIDENCE jika cocok dengan (?i)Low, MEDIUM_CONFIDENCE jika (?i)Medium, HIGH_CONFIDENCE jika (?i)High |
| record.jsonPayload.threatInfo.threatDescription | security_result.description | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.threatInfo.threatIndicatorType, record.jsonPayload.threatInfo.threatIndicator, record.jsonPayload.threatInfo.threatFeed, record.jsonPayload.threatInfo.category, record.jsonPayload.threatInfo.type, record.jsonPayload.threatInfo.threat, record.jsonPayload.threatInfo.severity, record.resource.labels.resource_container | security_result.detection_fields | Nilai disalin ke peta tambahan, lalu digabungkan sebagai entri peta jika tidak kosong |
| record.severity | security_result.severity | Dipetakan ke RENDAH jika (?i)Rendah, INFORMASI jika (?i)(Informasi|Info), SEDANG jika (?i)Sedang, KRITIS jika (?i)Kritis, TINGGI jika (?i)Tinggi |
| record.jsonPayload.threatInfo.threatId | security_result.threat_id | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.destinationIp | target.asset.ip | Nilai disalin secara langsung jika tidak kosong |
| record.jsonPayload.dnsQuery.destinationIp | target.ip | Nilai disalin secara langsung jika tidak kosong |
| metadata.vendor_name | Disetel ke "Google Cloud" | |
| metadata.product_name | Setel ke "Google Cloud DNS Threat Detector" |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.