Mengumpulkan log Cloud Compute
Dokumen ini menjelaskan cara mengonfigurasi Google Cloud ekspor log Compute ke Google Security Operations menggunakan Cloud Storage. Parser mengekstrak kolom, menormalisasi kolom pesan, dan memetakan data yang diekstrak ke skema Unified Data Model (UDM) untuk representasi peristiwa keamanan yang konsisten. Log Handler 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 instance Google Chronicle.
- Pastikan Compute disiapkan dan aktif di lingkungan Google Cloud Anda.
- Pastikan Anda memiliki akses dengan hak istimewa ke Google Cloud.
Membuat Bucket Google Cloud Storage
- Login ke konsol Google Cloud.
Buka halaman Cloud Storage Buckets.
Klik Buat.
Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah menyelesaikan 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 yang berorientasi pada file dan intensif data, lalu pilih Aktifkan Namespace hierarkis di bucket ini.
- Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Labels.
- Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.
Di bagian Pilih tempat untuk menyimpan data, lakukan hal berikut:
Pilih Jenis lokasi.
- Gunakan menu jenis lokasi untuk memilih Location tempat data objek dalam bucket Anda akan disimpan secara permanen.
- Untuk menyiapkan replikasi lintas bucket, luaskan bagian Menyiapkan 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 Choose how to control access to objects, pilih not untuk menerapkan public access prevention, dan pilih access control model untuk objek bucket Anda.
Di bagian Pilih cara melindungi data objek, lakukan hal berikut:
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket.
- Untuk memilih cara enkripsi data objek, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
Klik Buat.
Mengonfigurasi Google Cloud Ekspor Log Compute
- Di Konsol Google Cloud, buka Logging > Log Router.
- Klik Create Sink.
Berikan detail berikut:
- Sink Name: Berikan nama yang bermakna; misalnya, Compute-Logs-Sink.
- Sink Destination: Pilih Cloud Storage .
- Sink Destination: Pilih Cloud Storage dan masukkan URI bucket; misalnya,
gs://<your-bucket-name>/compute-logs
. Filter Log: Tetapkan filter untuk merekam Google Cloud log Compute 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..
- Berikan peran roles/storage.admin pada bucket.
Mengonfigurasi feed di Google SecOps untuk menyerap Google Cloud log Compute
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Feed name, masukkan nama untuk feed; misalnya, Google Cloud Compute Logs.
- Pilih Google Cloud Storage sebagai Source type.
- Pilih GCP Compute sebagai Jenis log.
- Klik Get Service Account sebagai Chronicle Service Account.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Storage Bucket URI: Google Cloud URL bucket penyimpanan dalam format
gs://my-bucket/<value>
. - URI Adalah: Pilih Direktori yang menyertakan subdirektori.
Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
Namespace aset: namespace aset.
Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Storage Bucket URI: Google Cloud URL bucket penyimpanan dalam format
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
addr | read_only_udm.principal.ip | Digabung ke dalam daftar alamat IP utama jika kolom tidak kosong atau "?". |
jsonPayload.connection.dest_ip | read_only_udm.target.ip | Digabung ke dalam daftar alamat IP target jika kolom tersebut ada. |
jsonPayload.connection.dest_port | read_only_udm.target.port | Dikonversi menjadi string, lalu menjadi bilangan bulat dan dipetakan jika tidak ada error yang terjadi 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 pencarian dan dipetakan jika tidak ada error yang terjadi selama konversi. |
jsonPayload.connection.src_ip | read_only_udm.principal.ip | Digabung ke dalam daftar alamat IP utama jika kolom tersebut ada. |
jsonPayload.connection.src_port | read_only_udm.principal.port | Dikonversi menjadi string, lalu menjadi bilangan bulat dan dipetakan jika tidak ada error yang terjadi 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 bersyarat jika jsonPayload.dest_vpc.project_id ada. |
jsonPayload.dest_instance.vm_name | read_only_udm.target.resource.attribute.cloud.project.name | Dipetakan secara bersyarat 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 | Diurai dan dipetakan ke kolom yang berbeda berdasarkan pola grok dan logika kondisional. |
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 yang terjadi 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 bersyarat 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 akan digunakan untuk membuat ID aset. |
resource.labels.location | read_only_udm.principal.location.name | Dipetakan secara bersyarat jika kolom ada. |
resource.labels.project_id | read_only_udm.metadata.product_deployment_id | Dipetakan secara bersyarat jika kolom ada. |
resource.labels.zone | read_only_udm.principal.resource.attribute.cloud.availability_zone | Dipetakan secara bersyarat 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, serta dipetakan sebagaimana mestinya. |
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 konstan "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 | Secara kondisional ditetapkan ke "VPC_NETWORK" jika jsonPayload.instance.project_id atau jsonPayload.dest_vpc.project_id ada. | |
read_only_udm.target.resource.attribute.cloud.environment | Secara kondisional ditetapkan 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 "Domain Akun" 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 "ID Proses" 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". |
Perubahan
2024-06-18
Peningkatan:
- Memetakan "file" ke "principal.file.names".
- Memetakan "function" ke "principal.resource.attribute.labels".
- Memetakan "line" ke "principal.resource.attribute.labels".
- Memetakan "stempel waktu" ke "stempel waktu peristiwa".
2023-02-24
Perbaikan Bug:
- Menambahkan pemetaan untuk "asset_id" guna memfasilitasi penelusuran di UI: "asset:resource.labels.instance_id" dipetakan ke "principal.asset_id"
2022-06-16
Peningkatan:
- Menambahkan pemetaan untuk kolom baru berikut: jsonPayload.Message sebagai syslog.
- Nama Proses ke principal.application.
- ID proses ke principal.process.pid.
- Domain Akun ke principal.administrative_domain.
- Nama Akun ke principal.user.user_display_name.
- Nama Objek ke target.resource.name.
- Object Type ke target.resource.type.
- ID Keamanan ke target.user.windows_sid.
- addr ke principal.ip.
- auid ke network.session_id.
- Memetakan "LINUX - %{type}" untuk log Linux dan "WINDOWS event log" untuk log Windows ke metadata.product_event_type.
- pid ke target.process.pid.
- acct ke target.user.userid.
- exe ke target.process.command_line.
- file_path ke principal.process.file.full_path.
- Mengubah pemetaan deskripsi dari metadata.description menjadi security_result.description.
2022-05-23
Peningkatan:
- Menambahkan pemetaan untuk kolom baru berikut:
- jsonPayload.message sebagai syslog.
- resource.labels.zone ke principal.resource.attribute.cloud.availability_zone.
- resource.labels.location ke principal.location.name.
- resource.labels.project_id ke metadata.product_deployment_id.
- resource.labels.instance_id ke principal.resource.product_object_id.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.