Ekstensi parser

Didukung di:

Dokumen ini menjelaskan cara membuat ekstensi parser untuk mengekstrak kolom dari data log mentah dan memetakan kolom tersebut ke kolom UDM (Unified Data Model) tujuan dalam platform Google Security Operations.

Dokumen ini menguraikan proses pembuatan ekstensi parser:

Membuat ekstensi parser

Ekstensi parser menyediakan cara yang fleksibel untuk memperluas kemampuan parser default (dan kustom) yang ada. Parser ini tidak menggantikan parser default (dan kustom), tetapi memungkinkan penyesuaian pipeline parser yang lancar, yang memungkinkan logika penguraian baru, serta ekstraksi, manipulasi, dan pemetaan kolom.

Ekstensi parser tidak sama dengan parser kustom. Anda dapat membuat parser kustom untuk jenis log yang tidak memiliki parser default, atau memilih tidak ikut update parser.

Proses normalisasi dan ekstraksi parser

Google SecOps menerima data log asli sebagai log mentah. Parser default (dan kustom) mengekstrak dan menormalisasi kolom log inti menjadi kolom UDM terstruktur dalam data UDM. Ini hanya mewakili sebagian data log mentah asli. Anda dapat menentukan ekstensi parser untuk mengekstrak nilai log yang tidak ditangani oleh parser default. Setelah diaktifkan, ekstensi parser menjadi bagian dari proses ekstraksi dan normalisasi data Google SecOps.

Alur kerja penyerapan dan normalisasi

Menentukan ekstensi parser baru

Parser default berisi kumpulan petunjuk pemetaan standar yang menentukan cara mengekstrak, mengubah, dan menormalisasi nilai keamanan inti. Anda dapat membuat ekstensi parser baru dengan menentukan petunjuk pemetaan menggunakan pendekatan tanpa kode (Bidang data peta) atau pendekatan cuplikan kode:

  • Pendekatan tanpa kode

    Pendekatan tanpa kode paling cocok untuk ekstraksi sederhana dari log mentah dalam format JSON, XML, atau CSV native. Dengan ini, Anda dapat menentukan kolom sumber log mentah, dan memetakan kolom UDM tujuan yang sesuai.

    Misalnya, untuk mengekstrak data log JSON dengan maksimal 10 kolom, menggunakan perbandingan kesetaraan sederhana.

  • Pendekatan cuplikan kode

    Pendekatan cuplikan kode memungkinkan Anda menentukan petunjuk untuk mengekstrak dan mengubah nilai dari log mentah dan menetapkannya ke kolom UDM. Cuplikan kode menggunakan sintaksis mirip Logstash yang sama dengan parser default (atau kustom).

    Pendekatan ini berlaku untuk semua format log yang didukung. Pola ini paling cocok untuk skenario berikut:

    • Ekstraksi data yang kompleks atau logika yang kompleks.
    • Data tidak terstruktur yang memerlukan parser berbasis Grok.
    • Format non-JSON seperti CSV dan XML.

    Cuplikan kode menggunakan fungsi untuk mengekstrak data tertentu dari data log mentah. Misalnya, Grok, JSON, KV, dan XML.

    Dalam sebagian besar kasus, sebaiknya gunakan pendekatan pemetaan data yang digunakan dalam parser default (atau kustom).

Menggabungkan nilai yang baru diekstrak ke dalam kolom UDM

Setelah diaktifkan, ekstensi parser menggabungkan nilai yang baru diekstrak ke dalam kolom UDM yang ditetapkan dalam data UDM yang sesuai sesuai dengan prinsip penggabungan yang telah ditentukan. Contoh:

  • Timpa nilai yang ada: Nilai yang diekstrak akan menimpa nilai yang ada di kolom UDM tujuan.

    Satu-satunya pengecualian adalah kolom berulang, tempat Anda dapat mengonfigurasi ekstensi parser untuk menambahkan nilai baru saat menulis data ke kolom berulang dalam data UDM.

  • Ekstensi parser lebih diutamakan: Petunjuk pemetaan data dalam ekstensi PARSER lebih diutamakan daripada petunjuk dalam PARSER default (atau kustom) untuk jenis log tersebut. Jika ada konflik dalam petunjuk pemetaan, ekstensi PARSER akan menimpa nilai yang ditetapkan secara default.

    Misalnya, jika parser default memetakan kolom log mentah ke kolom UDM event.metadata.description dan ekstensi parser memetakan kolom log mentah yang berbeda ke kolom UDM yang sama, ekstensi parser akan menimpa nilai yang ditetapkan oleh parser default.

Batasan

  • Satu ekstensi parser per jenis log: Anda hanya dapat membuat satu ekstensi PARSER per jenis log.
  • Hanya satu pendekatan petunjuk pemetaan data: Anda dapat mem-build ekstensi PARSER menggunakan pendekatan tanpa kode atau cuplikan kode, tetapi tidak keduanya.
  • Contoh log untuk validasi: Contoh log dari 30 hari terakhir diperlukan untuk memvalidasi ekstensi parser UDM. Untuk mengetahui detailnya, lihat Memastikan ada parser aktif untuk jenis log.
  • Error parser dasar: Error parser dasar tidak dapat diidentifikasi atau diperbaiki dalam ekstensi parser.
  • Kolom berulang dalam cuplikan kode: Berhati-hatilah saat mengganti seluruh objek berulang dalam cuplikan kode untuk menghindari kehilangan data yang tidak diinginkan. Untuk mengetahui detailnya, lihat Selengkapnya tentang pemilih kolom berulang.
  • Peristiwa yang disamarkan: Ekstensi parser tidak dapat menangani log dengan beberapa peristiwa unik dalam satu kumpulan data, misalnya, array Google Drive.
  • XML dan tanpa kode: Pendekatan tanpa kode tidak direkomendasikan untuk XML karena potensi masalah encoding. Gunakan pendekatan cuplikan kode untuk XML.
  • Tidak ada data retroaktif: Anda tidak dapat mengurai data log mentah secara retroaktif.

Konsep parser

Dokumen berikut menjelaskan konsep parser yang penting:

Prasyarat

Prasyarat untuk pembuatan ekstensi parser:

  • Harus ada parser default (atau kustom) yang aktif untuk jenis log.
  • Google SecOps harus dapat menyerap dan menormalisasi log mentah menggunakan parser default (atau kustom).
  • Pastikan parser default (atau kustom) aktif untuk jenis log target Anda telah menyimpan data log mentah dalam 30 hari terakhir. Data ini harus berisi contoh kolom yang ingin Anda ekstrak atau gunakan untuk memfilter kumpulan data log. ID ini akan digunakan untuk memvalidasi petunjuk pemetaan data baru Anda.

Mulai

Sebelum membuat ekstensi parser, lakukan hal berikut:

  1. Verifikasi prasyarat:

    Pastikan ada parser aktif untuk jenis log. Jika belum memiliki parser, buat parser kustom.

  2. Identifikasi kolom yang akan diekstrak dari log mentah:

    Identifikasi kolom yang ingin diekstrak dari log mentah.

  3. Pilih kolom UDM yang sesuai:

    Pilih kolom UDM yang sesuai untuk memetakan kolom log mentah yang diekstrak.

  4. Pilih pendekatan definisi ekstensi parser:

    Pilih salah satu dari dua pendekatan ekstensi (pendekatan pemetaan data) untuk membuat ekstensi parser.

Memverifikasi prasyarat

Pastikan ada parser aktif untuk jenis log yang ingin Anda perluas, seperti yang dijelaskan di bagian berikut:

Pastikan ada parser aktif untuk jenis log

Pastikan ada parser default (atau kustom) yang aktif untuk jenis log yang ingin Anda perluas.

Telusuri jenis log Anda dalam daftar berikut:

Pastikan ada parser kustom untuk jenis log

Untuk memastikan ada parser kustom untuk jenis log:

  1. Di menu navigasi, pilih SIEM Settings > Parsers.
  2. Telusuri tabel Parser untuk jenis log yang ingin Anda perluas.

Pastikan parser aktif untuk jenis log

Untuk memeriksa apakah parser aktif untuk jenis log, lakukan langkah-langkah berikut:

  1. Di menu navigasi, pilih SIEM Settings > Parsers.
  2. Telusuri tabel Parser untuk jenis log yang ingin Anda perluas.

    Jika parser untuk jenis log tidak aktif, aktifkan:

Mengidentifikasi kolom yang akan diekstrak dari log mentah

Analisis log mentah yang ingin Anda ekstrak datanya untuk mengidentifikasi kolom yang tidak diekstrak oleh parser default (atau kustom). Perhatikan cara parser default (atau kustom) mengekstrak kolom log mentah dan memetakan kolom tersebut ke kolom UDM yang sesuai.

Untuk mengidentifikasi kolom tertentu yang ingin diekstrak dari log mentah, Anda dapat menggunakan alat penelusuran untuk mengidentifikasi kolom tersebut:

Untuk mengetahui detail tentang penelusuran di log mentah, lihat:

Memilih Kolom UDM yang sesuai

Setelah mengidentifikasi kolom target tertentu yang akan diekstrak, Anda dapat mencocokkannya dengan kolom UDM tujuan yang sesuai. Buat pemetaan yang jelas antara kolom sumber log mentah dan kolom UDM tujuannya. Anda dapat memetakan data ke kolom UDM apa pun yang mendukung jenis data standar atau kolom berulang.

Memilih kolom UDM yang benar

Referensi berikut dapat membantu menyederhanakan prosesnya:

Memahami konsep UDM utama

Memahami pemetaan data yang digunakan oleh parser yang ada

Sebaiknya pahami pemetaan data yang ada yang digunakan oleh parser default (atau kustom), antara kolom sumber log mentah ke kolom UDM tujuannya.

Untuk melihat pemetaan data antara kolom sumber log mentah dan kolom UDM tujuan yang digunakan dalam parser default (atau kustom) yang ada:

  1. Di menu navigasi, pilih SIEM Settings > Parsers.
  2. Telusuri tabel Parser untuk jenis log yang ingin Anda perluas.
  3. Buka baris tersebut, lalu klik Menu > Lihat.

    Tab Kode Parser menampilkan pemetaan data antara kolom sumber log mentah dan kolom UDM tujuan yang digunakan dalam parser default (atau kustom) yang ada.

Menggunakan alat UDM Lookup

Gunakan alat UDM Lookup untuk membantu mengidentifikasi kolom UDM yang cocok dengan kolom sumber log mentah.

Google SecOps menyediakan alat Penelusuran UDM untuk membantu Anda menemukan kolom UDM tujuan dengan cepat. Untuk mengakses alat Penelusuran UDM, buka Investigasi > Penelusuran SIEM.

Lihat topik berikut untuk mengetahui detail cara menggunakan alat UDM Lookup:

Contoh alat UDM Lookup

Misalnya, jika Anda memiliki kolom sumber dalam log mentah bernama "packets", gunakan alat Lookup UDM untuk menemukan potensi kolom UDM tujuan dengan "packets" dalam namanya:

  1. Buka Investigasi > Penelusuran SIEM.

  2. Di halaman Penelusuran SIEM, masukkan "packets" di kolom Cari kolom UDM berdasarkan nilai, lalu klik UDM Lookup.

    Dialog UDM Lookup akan terbuka. Alat penelusuran mencocokkan kolom UDM berdasarkan nama kolom atau nilai kolom:

    • Penelusuran menurut nama kolom - Mencocokkan string teks yang Anda masukkan dengan nama kolom yang berisi teks tersebut.
    • Pencarian menurut nilai kolom - Mencocokkan nilai yang Anda masukkan dengan kolom yang berisi nilai tersebut dalam data log yang disimpan.
  3. Dalam dialog UDM Lookup, pilih UDM Fields.

    Fungsi penelusuran akan menampilkan daftar kolom UDM potensial yang berisi teks "paket" dalam nama kolom UDM-nya.

  4. Klik setiap baris satu per satu untuk melihat deskripsi setiap kolom UDM.

Pertimbangan UDM penting untuk menghindari error

  • Kolom yang terlihat mirip: Struktur hierarkis UDM dapat menyebabkan kolom dengan nama yang mirip. Lihat parser default untuk mendapatkan panduan. Untuk mengetahui detailnya, lihat Memahami pemetaan data yang digunakan oleh parser yang ada.
  • Pemetaan kolom arbitrer: Gunakan objek additional untuk data yang tidak dipetakan langsung ke kolom UDM. Untuk mengetahui detailnya, lihat Pemetaan kolom arbitrer ke UDM.
  • Kolom berulang: Berhati-hatilah saat menggunakan kolom berulang dalam cuplikan kode. Mengganti seluruh objek dapat menimpa data asli. Menggunakan pendekatan tanpa kode menawarkan lebih banyak kontrol atas kolom berulang. Untuk mengetahui detailnya, lihat Selengkapnya tentang pemilih kolom berulang.
  • Kolom UDM wajib untuk jenis peristiwa UDM: Saat menetapkan kolom UDM metadata.event_type ke kumpulan data UDM, setiap event_type memerlukan kumpulan kolom terkait yang berbeda untuk ada dalam kumpulan data UDM. Untuk mengetahui detailnya, lihat Selengkapnya tentang menetapkan kolom metadata.event_type UDM.
  • Masalah parser dasar: Ekstensi parser tidak dapat memperbaiki error dari parser dasar. Parser dasar adalah parser default (atau kustom) yang membuat data UDM. Pertimbangkan opsi seperti meningkatkan ekstensi parser, mengubah parser dasar, atau memfilter log terlebih dahulu.
Pemetaan kolom arbitrer ke UDM

Jika Anda tidak dapat menemukan kolom UDM standar yang sesuai untuk menyimpan data, gunakan objek additional untuk menyimpan data sebagai pasangan nilai kunci kustom. Hal ini memungkinkan Anda menyimpan informasi berharga dalam data UDM, meskipun tidak memiliki kolom UDM yang cocok.

Memilih pendekatan definisi ekstensi parser

Sebelum memilih pendekatan definisi ekstensi parser, Anda harus telah mempelajari bagian berikut:

Langkah berikutnya adalah membuka halaman Parser extensions dan memilih pendekatan ekstensi yang akan digunakan untuk menentukan ekstensi parser:

Membuka halaman Ekstensi parser

Halaman Ekstensi parser memungkinkan Anda menentukan ekstensi parser baru.

Anda dapat membuka halaman Ekstensi parser dengan cara berikut, dari menu Setelan, dari Penelusuran log mentah, atau dari Penelusuran log mentah lama:

Membuka dari menu Setelan

Untuk membuka halaman Ekstensi parser dari menu Setelan:

  1. Di menu navigasi, pilih SIEM Settings > Parsers.

    Tabel Parser menampilkan daftar parser default berdasarkan jenis log.

  2. Temukan jenis log yang ingin Anda perluas, klik Menu > Buat Ekstensi.

    Halaman Parser extensions akan terbuka.

Untuk membuka halaman Ekstensi parser dari Penelusuran log mentah:

  1. Buka Investigasi > Penelusuran SIEM.
  2. Di kolom penelusuran, tambahkan awalan raw = ke argumen penelusuran Anda dan sertakan istilah penelusuran dalam tanda kutip. Contoh, raw = "example.com".
  3. Klik Run Search. Hasilnya ditampilkan di panel Raw Logs.
  4. Klik log (baris) di panel Raw Logs. Panel Tampilan Peristiwa akan ditampilkan.
  5. Klik tab Raw Log di panel Event View. Log mentah akan ditampilkan.
  6. Klik Kelola Parser > Buat Ekstensi > Berikutnya.

    Halaman Parser extensions akan terbuka.

Untuk membuka halaman Ekstensi parser dari Penelusuran log mentah lama:

  1. Gunakan Penelusuran log mentah lama untuk menelusuri data yang mirip dengan data yang akan diuraikan.
  2. Pilih peristiwa dari panel Peristiwa > Linimasa.
  3. Luaskan panel Data Peristiwa.
  4. Klik Kelola Parser > Buat Ekstensi > Berikutnya.

    Halaman Parser extensions akan terbuka.

Halaman ekstensi parser

Halaman ini menampilkan panel Log mentah dan Definisi ekstensi:

  • Panel Log mentah:

    Tindakan ini akan menampilkan contoh data log mentah untuk jenis log yang dipilih. Jika Anda membuka halaman dari Penelusuran log mentah, data sampel adalah hasil penelusuran Anda. Anda dapat memformat sampel menggunakan menu Lihat sebagai (RAW, JSON, CSV, XML, dll.) dan kotak centang Gabungkan Teks.

    1. Pastikan sampel data log mentah yang ditampilkan mewakili log yang akan diproses oleh ekstensi parser.

    2. Klik Pratinjau Output UDM untuk melihat output UDM untuk sampel data log mentah.

  • Panel Definisi ekstensi:

    Hal ini memungkinkan Anda menentukan ekstensi parser menggunakan salah satu dari dua pendekatan petunjuk pemetaan: Peta kolom data (tanpa kode) atau Tulis cuplikan kode. Anda tidak dapat menggunakan kedua pendekatan dalam ekstensi parser yang sama.

    Bergantung pada pendekatan yang Anda pilih, Anda dapat menentukan kolom data log sumber yang akan diekstrak dari log mentah yang masuk dan memetakan kolom tersebut ke kolom UDM yang sesuai, atau Anda dapat menulis cuplikan kode untuk melakukan tugas ini dan lainnya.

Memilih pendekatan ekstensi

Di halaman Parser extensions, panel Extension definition, di kolom Extension method, pilih salah satu pendekatan berikut untuk membuat ekstensi parser:

  • Pendekatan Peta kolom data (tanpa kode):

    Pendekatan ini memungkinkan Anda menentukan kolom dalam log mentah dan memetakan kolom tersebut ke kolom UDM tujuan.

    Pendekatan ini berfungsi dengan format log mentah berikut:

    • JSON native, XML native, atau CSV.
    • Header syslog plus JSON native, XML native, atau CSV. Anda dapat membuat petunjuk pemetaan jenis kolom data untuk log mentah dalam format berikut: JSON, XML, CSV, SYSLOG + JSON, SYSLOG + XML, dan SYSLOG + CSV.

    Lihat langkah berikutnya, Membuat petunjuk tanpa kode (Kolom data peta).

  • Pendekatan Menulis cuplikan kode:

    Pendekatan ini memungkinkan Anda menggunakan sintaksis seperti Logstash untuk menentukan petunjuk guna mengekstrak dan mengubah nilai dari log mentah dan menetapkannya ke kolom UDM dalam data UDM.

    • Cuplikan kode menggunakan sintaksis dan bagian yang sama dengan parser default (atau kustom). Untuk mengetahui informasi selengkapnya, lihat Sintaksis parser.

    • Pendekatan ini berfungsi dengan semua format data yang didukung untuk jenis log tersebut.

    Lihat langkah berikutnya, Membuat petunjuk cuplikan kode.

Membuat petunjuk tanpa kode (Kolom data peta)

Pendekatan tanpa kode (juga disebut metode Peta kolom data) memungkinkan Anda menentukan jalur kolom log mentah dan memetakan kolom tersebut ke kolom UDM tujuan yang sesuai.

Sebelum membuat ekstensi parser menggunakan pendekatan tanpa kode, Anda harus telah mengerjakan bagian-bagian berikut:

Langkah berikutnya untuk menentukan ekstensi parser adalah:

  1. Menetapkan pemilih Kolom berulang
  2. Menentukan petunjuk pemetaan data untuk setiap kolom
  3. Mengirim dan mengaktifkan ekstensi parser

Menetapkan pemilih Kolom berulang

Di panel Definisi ekstensi, di kolom Kolom Berulang, tetapkan cara ekstensi parser menyimpan nilai ke kolom berulang (kolom yang mendukung array nilai, misalnya principal.ip):

  • Tambahkan Nilai: Nilai yang baru diekstrak akan ditambahkan ke kumpulan nilai yang ada dan disimpan di kolom array UDM.
  • Ganti Nilai: Nilai yang baru diekstrak mengganti kumpulan nilai yang ada di kolom array UDM, yang sebelumnya disimpan oleh parser default.

Setelan di pemilih Kolom Berulang tidak memengaruhi kolom yang tidak berulang.

Untuk mengetahui detailnya, lihat Selengkapnya tentang pemilih Kolom berulang.

Menentukan petunjuk pemetaan data untuk setiap kolom

Tentukan petunjuk pemetaan data untuk setiap kolom yang ingin diekstrak dari log mentah. Petunjuk harus menentukan jalur kolom asal dalam log mentah dan memetakan ke kolom UDM tujuan.

  1. Jika sampel log mentah yang ditampilkan di panel Raw log berisi header Syslog, kolom Syslog dan Target akan ditampilkan. (Beberapa format log tidak berisi header Syslog, misalnya, JSON native, XML native, atau CSV.)

    Google SecOps akan memerlukan kolom Syslog dan Target untuk memproses header Syslog terlebih dahulu, guna mengekstrak bagian log yang terstruktur.

    1. Tentukan kolom berikut:

      • Syslog: Ini adalah pola yang ditentukan pengguna yang memproses dan memisahkan header Syslog dari bagian terstruktur log mentah.

        Tentukan pola ekstraksi, menggunakan Grok dan ekspresi reguler, yang mengidentifikasi header Syslog dan pesan log mentah. Untuk mengetahui detailnya, lihat Menentukan kolom ekstraktor Syslog.

      • Target: Nama variabel di kolom Syslog yang menyimpan bagian log yang terstruktur.

        Tentukan nama variabel dalam pola ekstraksi yang menyimpan bagian log terstruktur.

      Ini adalah contoh pola ekstraksi dan nama variabel untuk kolom Syslog dan Target.

      Kolom ekstraktor syslog

    2. Setelah memasukkan nilai di kolom Syslog dan Target, klik tombol Validasi.

      Proses validasi memeriksa error sintaksis dan penguraian, lalu menampilkan salah satu dari hal berikut:

      • Berhasil: Kolom pemetaan data akan muncul. Tentukan sisa ekstensi parser.
      • Kegagalan: Pesan error akan muncul. Perbaiki kondisi error sebelum melanjutkan.
  2. Secara opsional, tentukan petunjuk prasyarat.

    Petunjuk prasyarat mengidentifikasi subset log mentah yang diproses oleh ekstensi parser dengan mencocokkan nilai statis ke kolom dalam log mentah. Jika log mentah yang masuk memenuhi kriteria prasyarat, ekstensi PARSER akan menerapkan petunjuk pemetaan. Jika nilainya tidak cocok, ekstensi parser tidak akan menerapkan petunjuk pemetaan.

    Lengkapi kolom berikut:

    • Kolom Prasyarat: ID kolom dalam log mentah yang berisi nilai yang akan dibandingkan. Masukkan jalur lengkap ke kolom jika format data log adalah JSON atau XML, atau posisi kolom jika format data adalah CSV.
    • Operator Prasyarat: Pilih EQUALS atau NOT EQUALS.
    • Nilai Prasyarat: Nilai statis yang akan dibandingkan dengan Kolom Prasyarat dalam log mentah.

    Untuk contoh lain petunjuk prasyarat, lihat Tanpa kode - Mengekstrak kolom dengan nilai prasyarat.

  3. Petakan kolom data log mentah ke kolom UDM tujuan:

    • Bidang Data Mentah: Masukkan jalur lengkap ke kolom jika format data log adalah JSON (misalnya: jsonPayload.connection.dest_ip) atau XML (misalnya: /Event/Reason-Code), atau posisi kolom jika format data adalah CSV (catatan: posisi indeks dimulai dari 1).

    • Kolom Tujuan: Masukkan nama kolom UDM yang sepenuhnya memenuhi syarat tempat nilai akan disimpan, misalnya udm.metadata.collected_timestamp.seconds.

  4. Untuk terus menambahkan kolom lainnya, klik Tambahkan, lalu masukkan semua detail petunjuk pemetaan untuk kolom berikutnya.

Untuk contoh lain tentang pemetaan kolom, lihat Tanpa kode - Mengekstrak kolom.

Mengirim dan mengaktifkan ekstensi parser

Setelah menentukan petunjuk pemetaan data untuk semua kolom yang ingin Anda ekstrak dari log mentah, kirimkan dan aktifkan ekstensi parser.

Klik Kirim untuk menyimpan dan memvalidasi petunjuk pemetaan.

Google SecOps memvalidasi petunjuk pemetaan:

  • Jika proses validasi berhasil, status akan berubah menjadi Live dan petunjuk pemetaan akan mulai memproses data log yang masuk.
  • Jika proses validasi gagal, status akan berubah menjadi Gagal dan error akan ditampilkan di kolom Log Mentah.

    Berikut adalah contoh error validasi:

      ERROR: generic::unknown: pipeline.ParseLogEntry failed: LOG_PARSING_CBN_ERROR:
      "generic::invalid_argument: pipeline failed: filter mutate (7) failed: copy failure:
      copy source field \"jsonPayload.dest_instance.region\" must not be empty
      (try using replace to provide the value before calling copy)
    
      "LOG: {"insertId":"14suym9fw9f63r","jsonPayload":{"bytes_sent":"492",
      "connection":{"dest_ip":"10.12.12.33","dest_port":32768,"protocol":6,
      "src_ip":"10.142.0.238","src_port":22},"end_time":"2023-02-13T22:38:30.490546349Z",
      "packets_sent":"15","reporter":"SRC","src_instance":{"project_id":"example-labs",
      "region":"us-east1","vm_name":"example-us-east1","zone":"us-east1-b"},
      "src_vpc":{"project_id":"example-labs","subnetwork_name":"default",
      "vpc_name":"default"},"start_time":"2023-02-13T22:38:29.024032655Z"},
      "logName":"projects/example-labs/logs/compute.googleapis.com%2Fvpc_flows",
      "receiveTimestamp":"2023-02-13T22:38:37.443315735Z","resource":{"labels":
      {"location":"us-east1-b","project_id":"example-labs",
        "subnetwork_id":"00000000000000000000","subnetwork_name":"default"},
        "type":"gce_subnetwork"},"timestamp":"2023-02-13T22:38:37.443315735Z"}
    

    Status siklus proses ekstensi parser

    Ekstensi parser memiliki status siklus proses berikut:

  • DRAFT: Ekstensi parser yang baru dibuat dan belum dikirimkan.

  • VALIDATING: Google SecOps memvalidasi petunjuk pemetaan terhadap log mentah yang ada untuk memastikan bahwa kolom diuraikan tanpa error.

  • LIVE: Ekstensi parser lulus validasi dan kini dalam produksi. Alat ini mengekstrak dan mengubah data dari log mentah yang masuk menjadi data UDM.

  • FAILED: Ekstensi parser gagal divalidasi.

Selengkapnya tentang pemilih Kolom berulang

Beberapa kolom UDM menyimpan array nilai, seperti kolom principal.ip. Pemilih Kolom berulang memungkinkan Anda mengontrol cara ekstensi parser menyimpan data yang baru diekstrak dalam kolom berulang:

  • Menambahkan nilai:

    Ekstensi parser akan menambahkan nilai yang baru diekstrak ke array nilai yang ada di kolom UDM.

  • Ganti Nilai:

    Ekstensi parser akan mengganti array nilai yang ada di kolom UDM dengan nilai yang baru diekstrak.

Ekstensi parser hanya dapat memetakan data ke kolom berulang jika kolom berulang berada di tingkat hierarki terendah. Contoh:

  • Pemetaan nilai ke udm.principal.ip didukung karena kolom ip berulang berada di tingkat hierarki terendah, dan principal bukan kolom berulang.
  • Pemetaan nilai ke udm.intermediary.hostname tidak didukung karena intermediary adalah kolom berulang, dan tidak berada di tingkat hierarki terendah.

Tabel berikut memberikan contoh pengaruh konfigurasi pemilih Repeated Fields terhadap data UDM yang dihasilkan.

Pemilihan Kolom Berulang Contoh log Konfigurasi ekstensi parser Hasil yang dihasilkan
Menambahkan Nilai {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"1.1.1.1, 2.2.2.2"}}} Kolom Prasyarat: protoPayload.requestMetadata.callerIp
Nilai Prasyarat: " "
Operator Prasyarat: NOT_EQUALS
Kolom Data Mentah: protoPayload.requestMetadata.callerIp
Kolom Tujuan: event.idm.read_only_udm.principal.ip
metadata:{event_timestamp:{}.....}principal:{Ip:"1.1.1.1, 2.2.2.2"} } }
Menambahkan Nilai {"protoPayload":{"@type":"type.AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2, 3.3.3.3", "name":"Akamai Ltd"}}} Prasyarat 1:
Kolom Prasyarat:protoPayload.requestMetadata.callerIp
Nilai Prasyarat: " "
Operator Prasyarat: NOT_EQUALS
Kolom Data Mentah: protoPayload.requestMetadata.callerIp
Kolom Tujuan: event.idm.read_only_udm.principal.ip

Prasyarat 2:
Kolom Data Mentah: protoPayload.requestMetadata.name
Kolom Tujuan: event.idm.read_only_udm.metadata.product_name

Peristiwa yang dihasilkan oleh parser bawaan sebelum menerapkan ekstensi.
metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Output setelah menerapkan ekstensi.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} .... product_name: "Akamai Ltd"}principal:{ip:"1.1.1.1, 2.2.2.2, 3.3.3.3"}}}

Mengganti Nilai {"protoPayload":{"@type":"type..AuditLog","authenticationInfo":{"principalEmail":"admin@cmmar.co"},"requestMetadata":{"callerIp":"2.2.2.2"}}} Kolom Prasyarat: protoPayload.authenticationInfo.principalEmail
Nilai Prasyarat: " "
Operator Prasyarat: NOT_EQUALS
Kolom Data Mentah: protoPayload.authenticationInfo.principalEmail
Kolom Tujuan: event.idm.read_only_udm.principal.ip
Peristiwa UDM yang dihasilkan oleh parser bawaan sebelum menerapkan ekstensi.
timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ... principal:{ip:"1.1.1.1"}}}

Output UDM setelah menerapkan ekstensi timestamp:{} idm:{read_only_udm:{metadata:{event_timestamp:{} ....} principal:{ip:"2.2.2.2"}}}

Selengkapnya tentang kolom ekstraktor Syslog

Kolom ekstraktor Syslog memungkinkan Anda memisahkan header Syslog dari log terstruktur dengan menentukan Grok, ekspresi reguler, serta token bernama dalam pola ekspresi reguler untuk menyimpan output.

Menentukan kolom ekstraktor Syslog

Nilai di kolom Syslog dan Target bekerja sama untuk menentukan cara ekstensi parser memisahkan header Syslog dari bagian terstruktur log mentah. Di kolom Syslog, Anda menentukan ekspresi menggunakan kombinasi sintaksis Grok dan ekspresi reguler. Ekspresi ini mencakup nama variabel yang mengidentifikasi bagian terstruktur dari log mentah. Di kolom Target, Anda menentukan nama variabel tersebut.

Contoh berikut menggambarkan cara kerja kolom ini.

Berikut adalah contoh log mentah:

<13>1 2022-09-14T15:03:04+00:00 fieldname fieldname - - - {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Log mentah berisi bagian berikut:

  • Header syslog: <13> 2022-09-14T15:03:04+00:00 fieldname fieldname - - -

  • Peristiwa berformat JSON: {"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Untuk memisahkan header Syslog dari bagian JSON log mentah, gunakan contoh ekspresi berikut di kolom Syslog: %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg}

  • Bagian ekspresi ini mengidentifikasi header Syslog: %{TIMESTAMP\_ISO8601} %{WORD} %{WORD} ([- ]+)?
  • Bagian ekspresi ini menangkap segmen JSON dari log mentah: %{GREEDYDATA:msg}

Contoh ini menyertakan nama variabel msg. Anda memilih nama variabel. Ekstensi parser mengekstrak segmen JSON dari log mentah dan menetapkannya ke variabel msg.

Di kolom Target, masukkan nama variabel msg. Nilai yang disimpan dalam variabel msg adalah input ke petunjuk pemetaan kolom data yang Anda buat di ekstensi parser.

Dengan menggunakan contoh log mentah, segmen berikut adalah input untuk petunjuk pemetaan data:

{"timestamp": "2021-03-14T14:54:40.842152+0000","flow_id": 1885148860701096, "src_ip": "10.11.22.1","src_port": 51972,"dest_ip": "1.2.3.4","dest_port": 55291,"proto": "TCP"}

Berikut ini menunjukkan kolom Syslog dan Target yang telah selesai:

Kolom ekstraktor syslog

Tabel berikut memberikan contoh lainnya dengan contoh log, pola ekstraksi Syslog, nama variabel Target, dan hasilnya.

Contoh log mentah Kolom syslog Kolom target Hasil
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg} msg field_mappings { field: "msg" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"} %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:msg1} ([- ]+)?%{GREEDYDATA:msg2} msg2 field_mappings { field: "msg2" value: "{\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" }
"<13>1 2022-07-14T15:03:04+00:00 suricata suricata - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\"} - - - {\"timestamp\": \"2021-03-14T14:54:40.842152+0000\",\"flow_id\": 1885148860701096,\"in_iface\": \"enp94s0\",\"event_type\": \"alert\",\"vlan\": 522,\"src_ip\": \"1.1.2.1\",\"src_port\": 51972,\"dest_ip\": \"1.2.3.4\",\"dest_port\": 55291,\"proto\": \"TCP\"}" %{TIMESTAMP_ISO8601} %{WORD} %{WORD} ([- ]+)?%{GREEDYDATA:message} ([- ]+)?%{GREEDYDATA:msg2} msg2 Error - message already exists in state and not overwritable.

Selengkapnya tentang cara menetapkan kolom metadata.event_type UDM

Saat menetapkan kolom metadata.event_type UDM ke data UDM, kolom tersebut akan divalidasi untuk memastikan kolom terkait yang diperlukan ada dalam data UDM. Setiap metadata.event_type UDM memerlukan kumpulan kolom terkait yang berbeda, misalnya, peristiwa USER_LOGIN tanpa user tidak berguna.

Jika kolom terkait yang wajib diisi tidak ada, validasi UDM akan menampilkan error:

  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }

Parser grok menampilkan error yang lebih mendetail:

  generic::unknown: 
  invalid event 0: LOG_PARSING_GENERATED_INVALID_EVENT: 
  "generic::invalid_argument: udm validation failed: target field is not set"

Untuk menemukan kolom wajib bagi event_type UDM yang ingin Anda tetapkan, gunakan referensi berikut:

  • Dokumentasi Google SecOps: Panduan Penggunaan UDM - Kolom UDM wajib dan opsional untuk setiap Jenis Peristiwa

  • Referensi tidak resmi pihak ketiga: Validasi Peristiwa UDM

    Jika Panduan Penggunaan UDM tidak memiliki detail, dokumen ini melengkapi dokumentasi resmi dengan menyediakan kolom UDM wajib minimum yang diperlukan untuk mengisi metadata.event_type UDM tertentu.

    Misalnya, buka dokumen dan telusuri jenis peristiwa GROUP_CREATION.

    Anda akan melihat kolom UDM minimum berikut, yang ditampilkan sebagai Objek UDM:

    {
        "metadata": {
            "event_timestamp": "2023-07-03T13:01:10.957803Z",
            "event_type": "GROUP_CREATION"
        },
        "principal": {
            "user": {
                "userid": "pinguino"
            }
        },
        "target": {
            "group": {
                "group_display_name": "foobar_users"
            }
        }
    }
    

Membuat petunjuk cuplikan kode

Pendekatan cuplikan kode memungkinkan Anda menggunakan sintaksis seperti Logstash untuk menentukan cara mengekstrak dan mengubah nilai dari log mentah, serta menetapkannya ke kolom UDM dalam data UDM.

Sebelum membuat ekstensi parser menggunakan pendekatan cuplikan kode, Anda harus telah mempelajari bagian-bagian berikut:

Langkah berikutnya untuk menentukan ekstensi parser adalah:

  1. Untuk mendapatkan tips dan praktik terbaik, lihat Tips dan praktik terbaik saat menulis petunjuk cuplikan kode.
  2. Membuat petunjuk cuplikan kode
  3. Mengirimkan petunjuk cuplikan kode

Tips dan praktik terbaik saat menulis petunjuk cuplikan kode

Petunjuk cuplikan kode dapat gagal karena masalah seperti pola Grok yang salah, operasi penggantian atau penggantian nama yang gagal, atau error sintaksis. Lihat hal berikut untuk mengetahui tips dan praktik terbaik:

Membuat petunjuk cuplikan kode

Petunjuk cuplikan kode menggunakan sintaksis dan bagian yang sama dengan parser default (atau kustom):

  • Bagian 1. Mengekstrak data dari log mentah.
  • Bagian 2. Transformasikan data yang diekstrak.
  • Bagian 3. Tetapkan satu atau beberapa nilai ke kolom UDM.
  • Pasal 4. Ikat kolom peristiwa UDM ke kunci @output.

Untuk membuat ekstensi parser menggunakan pendekatan cuplikan kode, lakukan hal berikut:

  1. Di halaman Parser extensions, panel CBN Snippet, masukkan cuplikan kode untuk membuat ekstensi parser.
  2. Klik Validasi untuk memvalidasi petunjuk pemetaan.

Contoh petunjuk cuplikan kode

Contoh berikut mengilustrasikan cuplikan kode.

Berikut adalah contoh log mentah:

  {
      "insertId": "00000000",
      "jsonPayload": {
          ...section omitted for brevity...
          "packets_sent": "4",
          ...section omitted for brevity...
      },
      "timestamp": "2022-05-03T01:45:00.150614953Z"
  }

Ini adalah contoh cuplikan kode yang memetakan nilai di jsonPayload.packets_sent ke kolom UDM network.sent_bytes:

mutate {
 replace => {
    "jsonPayload.packets_sent" => ""
 }
}
filter {
    # Section 1. extract data from the raw JSON log
    json {
        source => "message"
        array_function => "split_columns"
        on_error => "_not_json"
    }
    if [_not_json] {
        drop {
            tag => "TAG_UNSUPPORTED"
        }
    } else {
        # Section 2. transform the extracted data
        if [jsonPayload][packets_sent] not in ["",0] {
            mutate {
                convert => {
                    "jsonPayload.packets_sent" => "uinteger"
                }
            }
            # Section 3. assign the value to a UDM field
            mutate {
                copy => {
                    "udm.network.sent_bytes" => "jsonPayload.packets_sent"
                }
                on_error => "_exception"
            }
            if ![_exception] {
                # Section 4. Bind the UDM fields to the @output key
                mutate {
                    merge => {
                        "@output" => "event"
                    }
                }
            }
        }
    }
}

Mengirimkan petunjuk cuplikan kode

  1. Klik Kirim untuk menyimpan petunjuk pemetaan.

  2. Google SecOps memvalidasi petunjuk pemetaan.

    • Jika proses validasi berhasil, status akan berubah menjadi Live dan petunjuk pemetaan akan mulai memproses data log yang masuk.
    • Jika proses validasi gagal, status akan berubah menjadi Gagal dan error akan ditampilkan di kolom Log Mentah.

Mengelola ekstensi parser yang ada

Anda dapat melihat, mengedit, menghapus, dan mengontrol akses ke ekstensi parser yang ada.

Melihat ekstensi parser yang ada

  1. Di menu navigasi, pilih SIEM Settings > Parsers.
  2. Di daftar Parser, temukan parser (jenis log) yang ingin Anda lihat. Parser dengan ekstensi parser ditunjukkan oleh teks EXTENSION di samping namanya.
  3. Buka baris tersebut, lalu klik Menu > Lihat Ekstensi.

    Lihat Parser Kustom/Bawaan > Tab ekstensi akan muncul yang menampilkan detail tentang ekstensi parser. Panel ringkasan menampilkan ekstensi parser LIVE secara default.

Mengedit ekstensi parser

  1. Buka Lihat Parser Kustom/Bawaan > Tab ekstensi, seperti yang dijelaskan dalam Melihat ekstensi parser yang ada.

  2. Klik tombol Edit Ekstensi.

    Halaman Parser extensions akan muncul.

  3. Edit ekstensi parser.

    • Untuk membatalkan pengeditan dan menghapus perubahan, klik Hapus Draf.

    • Untuk menghapus ekstensi parser kapan saja, klik Hapus Ekstensi Gagal.

    • Setelah selesai mengedit ekstensi parser, klik Kirim.

      Proses validasi berjalan untuk memvalidasi konfigurasi baru.

Menghapus ekstensi parser

  1. Buka Lihat Parser Kustom/Bawaan > Tab ekstensi, seperti yang dijelaskan dalam Melihat ekstensi parser yang ada.

  2. Klik tombol Hapus Ekstensi.

Mengontrol akses ke ekstensi parser

Secara default, pengguna dengan peran Administrator dapat mengakses ekstensi parser. Anda dapat mengontrol siapa yang dapat melihat dan mengelola ekstensi parser. Untuk mengetahui informasi selengkapnya tentang cara mengelola Pengguna dan Grup, atau menetapkan peran, lihat Kontrol Akses Berbasis Peran untuk mengetahui informasi selengkapnya.

Peran baru di Google SecOps dirangkum dalam tabel berikut.

Fitur Tindakan Deskripsi
Parser Hapus Menghapus ekstensi parser.
Parser Edit Membuat dan mengedit ekstensi parser.
Parser Lihat Melihat ekstensi parser.

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