Mengumpulkan log Google Cloud Compute
Dokumen ini menjelaskan cara mengonfigurasi ekspor log Compute ke Google Security Operations menggunakan Cloud Storage. Google Cloud Parser mengekstrak kolom, menormalisasi kolom pesan, dan memetakan data yang diekstrak ke skema Model Data Terpadu (UDM) untuk representasi peristiwa keamanan yang konsisten. Log ini menangani berbagai format log, termasuk pesan seperti syslog dan pasangan nilai kunci, serta mengategorikan peristiwa berdasarkan kolom yang diekstrak seperti type dan action.
Sebelum Memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Compute disiapkan dan aktif di lingkungan Google Cloud Anda.
- Akses istimewa ke Google Cloud.
Membuat Bucket Google Cloud Storage
- Login ke konsolGoogle Cloud .
Buka halaman Cloud Storage Buckets.
Klik Buat.
Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah setiap langkah berikut, klik Lanjutkan untuk melanjutkan ke langkah berikutnya:
Di bagian Mulai, lakukan tindakan berikut:
- Masukkan nama unik yang memenuhi persyaratan nama bucket; misalnya, compute-logs.
Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan bagian Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan namespace Hierarkis di bucket ini.
- Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Label.
- Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.
Di bagian Pilih lokasi untuk menyimpan data Anda, lakukan hal berikut:
Pilih Jenis lokasi.
- Gunakan menu jenis lokasi untuk memilih Lokasi tempat data objek dalam bucket Anda akan disimpan secara permanen.
- Untuk menyiapkan replikasi lintas bucket, luaskan bagian Siapkan replikasi lintas bucket.
Di bagian Pilih kelas penyimpanan untuk data Anda, pilih kelas penyimpanan default untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.
Di bagian Pilih cara mengontrol akses ke objek, pilih tidak untuk menerapkan pencegahan akses publik, dan pilih model kontrol akses untuk objek bucket Anda.
Di bagian Pilih cara melindungi data objek, lakukan tindakan berikut:
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
- Untuk memilih cara mengenkripsi data objek Anda, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
Klik Buat.
Mengonfigurasi Google Cloud Ekspor Log Compute
- Di Google Cloud konsol, buka Logging > Log Router.
- Klik Create Sink.
Berikan detail berikut:
- Sink Name: Berikan nama yang bermakna; misalnya, Compute-Logs-Sink.
- Tujuan Sink: Pilih Cloud Storage .
- Tujuan Sink: Pilih Cloud Storage dan masukkan URI bucket; misalnya,
gs://<your-bucket-name>/compute-logs
. Filter Log: Tetapkan filter untuk merekam log Compute Google Cloud sebagai berikut:
Nama dan jenis log:
logName="*compute*"
Kolom terkait jaringan (seperti alamat IP, port):
jsonPayload.connection.dest_ip="*" OR jsonPayload.connection.src_ip="*"
Detail instance:
jsonPayload.dest_instance.project_id="*" jsonPayload.src_instance.project_id="*"
Detail terkait keamanan:
jsonPayload.rule_details.action="ALLOW" OR jsonPayload.rule_details.action="BLOCK"
Klik Buat.
Mengonfigurasi Izin untuk Cloud Storage
- Buka IAM > IAM & Admin > Service Accounts.
- Temukan akun layanan Cloud Logging; misalnya, service-account@logging.iam.gserviceaccount.com.
- Berikan peran roles/storage.admin pada bucket.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed
- Hub Konten > Paket Konten
Menyiapkan feed dari Setelan SIEM > Feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed; misalnya, Google Cloud Compute Logs.
- Pilih Google Cloud Storage sebagai Jenis sumber.
- Pilih GCP Compute sebagai Jenis log.
- Klik Dapatkan Akun Layanan sebagai Akun Layanan Chronicle.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
gs://my-bucket/<value>
. - URI Adalah: Pilih Direktori yang menyertakan subdirektori.
Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Menyiapkan feed dari Hub Konten
Tentukan nilai untuk kolom berikut:
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
gs://my-bucket/<value>
. - URI Adalah: Pilih Direktori yang menyertakan subdirektori.
- Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
Opsi lanjutan
- Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
- Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
- Namespace Aset: Namespace yang terkait dengan feed.
- Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
Tabel Pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
addr | read_only_udm.principal.ip | Digabungkan ke dalam daftar alamat IP utama jika kolom tidak kosong atau "?". |
jsonPayload.connection.dest_ip | read_only_udm.target.ip | Digabungkan ke dalam daftar alamat IP target jika kolom ada. |
jsonPayload.connection.dest_port | read_only_udm.target.port | Dikonversi menjadi string, lalu menjadi bilangan bulat dan dipetakan jika tidak ada error selama konversi. |
jsonPayload.connection.protocol | read_only_udm.network.ip_protocol | Dikonversi menjadi string, lalu menjadi bilangan bulat. Digunakan untuk menentukan protokol IP (TCP, UDP, dll.) menggunakan tabel lookup dan dipetakan jika tidak ada error selama konversi. |
jsonPayload.connection.src_ip | read_only_udm.principal.ip | Digabungkan ke dalam daftar alamat IP utama jika kolom ada. |
jsonPayload.connection.src_port | read_only_udm.principal.port | Dikonversi menjadi string, lalu menjadi bilangan bulat dan dipetakan jika tidak ada error selama konversi. |
jsonPayload.dest_instance.project_id | read_only_udm.target.resource.product_object_id | Dipetakan secara kondisional jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.dest_instance.region | read_only_udm.target.location.name | Dipetakan secara kondisional jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.dest_instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Dipetakan secara kondisional jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.dest_instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Dipetakan secara kondisional jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.dest_vpc.project_id | read_only_udm.target.cloud.vpc.product_object_id | Digunakan sebagai kondisi untuk memetakan kolom terkait. |
jsonPayload.dest_vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Dipetakan secara kondisional jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.instance.project_id | read_only_udm.target.resource.product_object_id | Dipetakan secara kondisional jika jsonPayload.instance.project_id ada. |
jsonPayload.instance.region | read_only_udm.target.location.name | Dipetakan secara kondisional jika jsonPayload.instance.project_id ada. |
jsonPayload.instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Dipetakan secara kondisional jika jsonPayload.instance.project_id ada. |
jsonPayload.instance.zone | read_only_udm.target.resource.attribute.cloud.availability_zone | Dipetakan secara kondisional jika jsonPayload.instance.project_id ada. |
jsonPayload.message | read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path | Diuraikan dan dipetakan ke kolom yang berbeda berdasarkan pola grok dan logika bersyarat. |
jsonPayload.rule_details.action | read_only_udm.security_result.action | Digunakan untuk menentukan tindakan hasil keamanan (ALLOW/BLOCK) dan dipetakan. |
jsonPayload.rule_details.direction | read_only_udm.network.direction | Digunakan untuk menentukan arah jaringan (INBOUND/OUTBOUND/UNKNOWN_DIRECTION) dan dipetakan. |
jsonPayload.rule_details.priority | read_only_udm.security_result.priority_details | Dikonversi menjadi string dan dipetakan jika tidak ada error selama konversi. |
jsonPayload.rule_details.reference | read_only_udm.security_result.rule_labels.value | Dipetakan ke nilai label aturan. |
jsonPayload.src_instance.project_id | read_only_udm.principal.resource.product_object_id | Dipetakan secara kondisional jika jsonPayload.src_vpc.project_id ada. |
jsonPayload.src_instance.region | read_only_udm.principal.location.name | Dipetakan secara kondisional jika jsonPayload.src_vpc.project_id ada. |
jsonPayload.src_instance.vm_name | read_only_udm.principal.resource.attribute.cloud.project.name | Dipetakan secara kondisional jika jsonPayload.src_vpc.project_id ada. |
jsonPayload.src_instance.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Dipetakan secara kondisional jika jsonPayload.src_vpc.project_id ada. |
jsonPayload.src_vpc.project_id | read_only_udm.principal.cloud.vpc.product_object_id | Digunakan sebagai kondisi untuk memetakan kolom terkait. |
jsonPayload.src_vpc.subnetwork_name | read_only_udm.principal.cloud.vpc.name | Dipetakan secara kondisional jika jsonPayload.src_vpc.project_id ada. |
jsonPayload.vpc.project_id | read_only_udm.target.cloud.vpc.product_object_id | Dipetakan secara kondisional jika jsonPayload.vpc.project_id ada. |
jsonPayload.vpc.subnetwork_name | read_only_udm.target.cloud.vpc.name | Dipetakan secara kondisional jika jsonPayload.vpc.project_id ada. |
logName | read_only_udm.security_result.category_details | Dipetakan secara langsung. |
resource.labels.instance_id | read_only_udm.principal.resource.product_object_id, read_only_udm.principal.asset_id | Dipetakan secara bersyarat. Jika jenisnya adalah "PROCTITLE", jenis ini digunakan untuk membuat ID aset. |
resource.labels.location | read_only_udm.principal.location.name | Dipetakan secara kondisional jika kolom ada. |
resource.labels.project_id | read_only_udm.metadata.product_deployment_id | Dipetakan secara kondisional jika kolom ada. |
resource.labels.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Dipetakan secara kondisional jika kolom ada. |
resource.type | read_only_udm.metadata.event_type | Digunakan untuk menentukan jenis peristiwa dan dipetakan. |
timestamp | read_only_udm.metadata.event_timestamp | Dipetakan secara langsung. |
jenis | read_only_udm.metadata.product_event_type, read_only_udm.metadata.event_type, read_only_udm.extensions.auth.type | Digunakan untuk menentukan jenis peristiwa, jenis peristiwa produk, dan jenis autentikasi, lalu dipetakan dengan tepat. |
read_only_udm.metadata.event_type | Logika menetapkan jenis peristiwa berdasarkan kolom "type" dan kondisi lainnya. Jika tidak ada kecocokan spesifik yang ditemukan, defaultnya adalah "GENERIC_EVENT". | |
read_only_udm.metadata.log_type | Nilai konstanta "GCP_COMPUTE". | |
read_only_udm.metadata.vendor_name | Nilai konstan "Google Cloud Platform". | |
read_only_udm.metadata.product_name | Nilai konstan "Google Cloud Platform". | |
read_only_udm.security_result.rule_labels.key | Nilai konstan "Referensi". | |
read_only_udm.target.cloud.vpc.resource_type | Disetel secara kondisional ke "VPC_NETWORK" jika jsonPayload.instance.project_id atau jsonPayload.dest_vpc.project_id ada. | |
read_only_udm.target.resource.attribute.cloud.environment | Ditetapkan secara kondisional ke "GOOGLE_CLOUD_PLATFORM" jika jsonPayload.instance.project_id, jsonPayload.dest_vpc.project_id, atau jsonPayload.src_vpc.project_id ada. | |
read_only_udm.principal.administrative_domain | Dipetakan dari kolom "Account Domain" yang diekstrak dari kolom "kv_data". | |
read_only_udm.principal.user.user_display_name | Dipetakan dari kolom "Nama Akun" yang diekstrak dari kolom "kv_data". | |
read_only_udm.target.resource.name | Dipetakan dari kolom "Nama Objek" yang diekstrak dari kolom "kv_data". | |
read_only_udm.target.resource.type | Dipetakan dari kolom "Jenis Objek" yang diekstrak dari kolom "kv_data". | |
read_only_udm.principal.process.pid | Dipetakan dari kolom "Process ID" yang diekstrak dari kolom "kv_data". | |
read_only_udm.target.user.windows_sid | Dipetakan dari kolom "Security ID" yang diekstrak dari kolom "kv_data". | |
read_only_udm.network.session_id | Dipetakan dari kolom "auid". |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.