Mengumpulkan log Google Cloud Compute

Versi Parser: 2.0

Didukung di:

Dokumen ini menjelaskan cara mengonfigurasi ekspor log Compute Google Cloud ke Google Security Operations menggunakan Cloud Storage. Parser mengekstrak kolom, menormalisasi kolom pesan, dan memetakan data yang diekstrak ke skema Model Data Terpadu (UDM) untuk representasi peristiwa keamanan yang konsisten. Parser ini menangani berbagai format log, termasuk pesan mirip 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 telah disiapkan dan aktif di lingkungan Google Cloud Anda.
  • Akses istimewa ke Google Cloud.

Membuat Bucket Google Cloud Storage

  1. Login ke Google Cloud console.
  2. Buka halaman Cloud Storage Buckets.

    Buka Bucket

  3. Klik Buat.

  4. Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah menyelesaikan setiap langkah berikut, klik Continue untuk melanjutkan ke langkah berikutnya:

    1. Di bagian Get started, lakukan tindakan berikut:

      1. Masukkan nama unik yang memenuhi persyaratan nama bucket; misalnya, compute-logs.
      2. Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan bagian Optimize for file oriented and data-intensive workloads, lalu pilih Enable Hierarchical namespace on this bucket.

        1. Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Labels.
        2. Klik Add label, lalu tentukan kunci dan nilai untuk label Anda.
    2. Di bagian Choose where to store your data, lakukan tindakan berikut:

      1. Pilih Location type.

        1. Gunakan menu jenis lokasi untuk memilih Location tempat data objek dalam bucket Anda akan disimpan secara permanen.
        1. Untuk menyiapkan replikasi lintas bucket, luaskan bagian Set up cross-bucket replication.
    3. Di bagian Choose a storage class for your data, pilih default storage class untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.

    4. Di bagian Choose how to control access to objects, pilih not untuk menerapkan public access prevention, lalu pilih access control model untuk objek bucket Anda.

    5. Di bagian Choose how to protect object data, lakukan hal berikut:

      1. Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket.
      2. Untuk memilih cara data objek Anda akan dienkripsi, klik panah peluas berlabel Data encryption, lalu pilih Data encryption method.
  5. Klik Create.

Mengonfigurasi Google Cloud Ekspor Log Compute

  1. Di Konsol Google Cloud, buka Logging > Log Router.
  2. Klik Create Sink.
  3. Berikan detail konfigurasi berikut:
    • Sink Name: Masukkan nama yang bermakna (misalnya, Compute-Logs-Sink).
    • Sink Destination: Pilih Cloud Storage.
    • Bucket Cloud Storage: Masukkan URI bucket (misalnya, gs://compute-logs/compute-logs/).
  4. Di bagian Filter sertakan build, konfigurasikan filter log untuk mengambil log Google Cloud Compute menggunakan satu atau beberapa pola berikut:

    Filter jenis resource (wajib - pilih salah satu):

    • Untuk VM Instance logs only:

      resource.type="gce_instance"
      
    • Untuk semua resource terkait GCE (instance VM, subnetwork, firewall):

      resource.type=("gce_instance" OR "gce_subnetwork" OR "gce_network" OR "gce_firewall_rule")
      

    Jenis log tertentu (opsional - tambahkan sesuai kebutuhan):

    • Untuk Log audit (operasi instance, perubahan konfigurasi):

      resource.type="gce_instance"
      logName:"cloudaudit.googleapis.com/activity"
      
    • Untuk Log Aliran VPC (traffic jaringan):

      resource.type="gce_subnetwork"
      logName:"vpc_flows"
      
    • Untuk Log firewall (koneksi yang diizinkan/ditolak):

      resource.type="gce_subnetwork"
      logName:"compute.googleapis.com/firewall"
      
    • Untuk Log Konsol Serial:

      resource.type="gce_instance"
      logName:"serialconsole.googleapis.com"
      

    Filter terkait jaringan (opsional - tambahkan sesuai kebutuhan):

    • Filter menurut detail koneksi (IP sumber/tujuan, port):

      jsonPayload.connection.dest_ip:*
      OR jsonPayload.connection.src_ip:*
      
    • Filter menurut detail instance:

      jsonPayload.dest_instance.project_id:*
      OR jsonPayload.src_instance.project_id:*
      
    • Filter menurut tindakan keamanan:

      jsonPayload.rule_details.action=("ALLOW" OR "BLOCK")
      

    Contoh: Filter lengkap untuk logging Compute yang komprehensif:

    (resource.type="gce_instance" OR resource.type="gce_subnetwork")
    AND (
     logName:"cloudaudit.googleapis.com/activity"
     OR logName:"vpc_flows"
     OR logName:"compute.googleapis.com/firewall"
     OR jsonPayload.connection.dest_ip:*
     OR jsonPayload.connection.src_ip:*
    )
    
  5. Klik Create Sink.

Mengonfigurasi Izin untuk Cloud Storage

  1. Buka IAM > IAM & Admin > Service Accounts.
  2. Temukan akun layanan Cloud Logging; misalnya, service-account@logging.iam.gserviceaccount.com.
  3. Berikan peran roles/storage.admin pada bucket.

Menyiapkan feed

Ada dua titik entri yang berbeda untuk menyiapkan feed di platform Google SecOps:

  • Settings > Data Management > Feeds > Add New Feed (Di platform khusus SIEM, Settings > Feeds > Add New Feed)
  • Content Hub > Paket Konten > Mulai

Cara menyiapkan feed komputasi Google Cloud

  1. Klik paket Google Cloud Compute platform.
  2. Temukan jenis log GCP Compute Feed, lalu klik Add new feed.
  3. Tentukan nilai untuk kolom berikut:

    • Source Type: Google Cloud Storage V2.
    • Storage Bucket URI: URL bucket Cloud Storage; misalnya, gs://compute-context-logs/. URL ini harus diakhiri dengan garis miring (/).
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.

    • Usia File Maksimum: Sertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.

    • Chronicle Service Account: Salin Akun Layanan. Anda akan memerlukannya untuk menambahkan izin di bucket untuk Akun Layanan ini agar Google SecOps dapat membaca atau menghapus data di bucket.

    Opsi lanjutan

    • Nama Feed: Nilai yang diisi otomatis yang mengidentifikasi feed.
    • Namespace Aset: Namespace yang terkait dengan feed.
    • Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
  4. Klik Buat feed.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi beberapa feed untuk berbagai jenis log dalam kelompok produk ini, lihat Mengonfigurasi feed menurut produk.

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 tersebut ada.
jsonPayload.connection.dest_port read_only_udm.target.port Dikonversi ke string, lalu ke bilangan bulat dan dipetakan jika tidak terjadi error selama konversi.
jsonPayload.connection.protocol read_only_udm.network.ip_protocol Dikonversi ke string, lalu ke bilangan bulat. Digunakan untuk menentukan protokol IP (TCP, UDP, dll.) menggunakan tabel pencarian dan dipetakan jika tidak terjadi error selama konversi.
jsonPayload.connection.src_ip read_only_udm.principal.ip Digabungkan ke dalam daftar alamat IP utama jika kolom tersebut ada.
jsonPayload.connection.src_port read_only_udm.principal.port Dikonversi ke string, lalu ke bilangan bulat dan dipetakan jika tidak terjadi error selama konversi.
jsonPayload.dest_instance.project_id read_only_udm.target.resource.product_object_id Dipetakan secara bersyarat 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 bersyarat 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 bersyarat jika jsonPayload.dest_vpc.project_id ada.
jsonPayload.instance.project_id read_only_udm.target.resource.product_object_id Dipetakan secara bersyarat jika jsonPayload.instance.project_id ada.
jsonPayload.instance.region read_only_udm.target.location.name Dipetakan secara bersyarat jika jsonPayload.instance.project_id ada.
jsonPayload.instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name Dipetakan secara bersyarat jika jsonPayload.instance.project_id ada.
jsonPayload.instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone Dipetakan secara bersyarat 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 berbagai kolom 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 terjadi 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 bersyarat jika jsonPayload.src_vpc.project_id ada.
jsonPayload.src_instance.region read_only_udm.principal.location.name Dipetakan secara bersyarat jika jsonPayload.src_vpc.project_id ada.
jsonPayload.src_instance.vm_name read_only_udm.principal.resource.attribute.cloud.project.name Dipetakan secara bersyarat jika jsonPayload.src_vpc.project_id ada.
jsonPayload.src_instance.zone read_only_udm.principal.resource.attribute.cloud.availability_zone Dipetakan secara bersyarat 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 bersyarat jika jsonPayload.src_vpc.project_id ada.
jsonPayload.vpc.project_id read_only_udm.target.cloud.vpc.product_object_id Dipetakan secara bersyarat 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 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 ini menetapkan jenis peristiwa berdasarkan kolom "type" dan kondisi lainnya. Jika tidak ditemukan kecocokan tertentu, nilai defaultnya adalah "GENERIC_EVENT".
read_only_udm.metadata.log_type Nilai konstanta "GCP_COMPUTE".
read_only_udm.metadata.vendor_name Nilai konstanta "Google Cloud Platform".
read_only_udm.metadata.product_name Nilai konstanta "Google Cloud Platform".
read_only_udm.security_result.rule_labels.key Nilai konstan "Reference".
read_only_udm.target.cloud.vpc.resource_type Ditetapkan secara bersyarat 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 bersyarat 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 "Account Name" yang diekstrak dari kolom "kv_data".
read_only_udm.target.resource.name Dipetakan dari kolom "Object Name" yang diekstrak dari kolom "kv_data".
read_only_udm.target.resource.type Dipetakan dari kolom "Object Type" 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".

Log Perubahan

Melihat Log Perubahan untuk parser ini

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.