Sintaksis bagian peristiwa

Didukung di:

Bagian events harus segera mengikuti bagian meta dalam aturan. Bagian ini menentukan peristiwa mana yang harus diperiksa kueri dan atribut spesifik apa yang harus dimiliki peristiwa tersebut agar dianggap relevan untuk potensi deteksi.

Bagian events bersifat wajib untuk aturan, tetapi opsional untuk Penelusuran dan Dasbor.

Gunakan bagian events untuk mencantumkan predikat yang menentukan hal berikut:

  • Deklarasi variabel
  • Filter variabel peristiwa
  • Penggabungan variabel peristiwa

Bagian tentukan peristiwa

Aturan dan kueri yang hanya berfokus pada satu jenis peristiwa dapat menyertakan satu variabel peristiwa, seperti:

events:
  $e.metadata.event_type = "USER_LOGIN" // 'e' is the common convention for a single event

Aturan dan kueri yang memerlukan korelasi antara dua atau lebih jenis peristiwa yang berbeda (seperti login pengguna yang diikuti dengan modifikasi file), memerlukan variabel untuk setiap jenis peristiwa:

events:
  $login.metadata.event_type = "USER_LOGIN" // Event 1: User Login
  $file_op.metadata.event_type = "FILE_MODIFICATION" // Event 2: File Modification

Setelah variabel peristiwa dideklarasikan, Anda menggunakannya sebagai awalan untuk mengakses kolom tertentu dari jenis peristiwa tersebut. Misalnya, bagian event berikut memfilter peristiwa login yang gagal dari Okta:

events:
   $e.metadata.vendor_name = "Okta"
   $e.metadata.event_type = "USER_LOGIN"
   $e.security_result.action = "FAIL"

Deklarasi variabel

Untuk deklarasi variabel, gunakan sintaksis berikut:

  • <EVENT_FIELD> = <VAR>
  • <VAR> = <EVENT_FIELD>

Keduanya setara, seperti yang ditunjukkan dalam contoh berikut:

  • $e.source.hostname = $hostname
  • $userid = $e.principal.user.userid

Deklarasi ini menunjukkan bahwa variabel ini merepresentasikan kolom yang ditentukan untuk variabel peristiwa. Jika kolom peristiwa adalah kolom berulang, variabel match dapat merepresentasikan nilai apa pun dalam array. Anda juga dapat menetapkan beberapa kolom peristiwa ke satu variabel kecocokan atau placeholder. Hal ini disebut kondisi gabungan transitif.

Misalnya:

  • $e1.source.ip = $ip
  • $e2.target.ip = $ip

Setara dengan:

  • $e1.source.ip = $ip
  • $e1.source.ip = $e2.target.ip

Saat variabel digunakan, variabel harus dideklarasikan melalui deklarasi variabel. Jika variabel digunakan tanpa deklarasi apa pun, error kompilasi akan dipicu.

Untuk mengetahui informasi selengkapnya tentang variabel, lihat Ekspresi, operator, dan konstruksi lainnya.

Filter variabel peristiwa

Ekspresi boolean yang bertindak pada satu variabel peristiwa dianggap sebagai filter.

Penggabungan variabel peristiwa

Semua variabel peristiwa yang digunakan dalam aturan harus digabungkan dengan setiap variabel peristiwa lainnya dengan salah satu cara berikut:

  • Secara langsung melalui perbandingan kesetaraan antara kolom peristiwa dari dua variabel peristiwa yang digabungkan, misalnya: $e1.field = $e2.field. Ekspresi tidak boleh menyertakan operasi aritmetika (seperti, $\text{+, -, *, /}$).

  • Secara tidak langsung melalui gabungan transitif yang hanya melibatkan kolom peristiwa (lihat deklarasi variabel untuk definisi "gabungan transitif"). Ekspresi tidak boleh menyertakan aritmetika.

Misalnya, dengan asumsi $e1, $e2, dan $e3 digunakan dalam aturan, bagian events berikut valid:

events:
  $e1.principal.hostname = $e2.src.hostname // $e1 joins with $e2
  $e2.principal.ip = $e3.src.ip // $e2 joins with $e3
events:
  // $e1 joins with $e2 using function to event comparison
  re.capture($e1.src.hostname, ".*") = $e2.target.hostname
events:
  // $e1 joins with $e2 using an `or` expression
  $e1.principal.hostname = $e2.src.hostname
  or $e1.principal.hostname = $e2.target.hostname
  or $e1.principal.hostname = $e2.principal.hostname
events:
  // all of $e1, $e2 and $e3 are transitively joined using the placeholder variable $ip
  $e1.src.ip = $ip
  $e2.target.ip = $ip
  $e3.about.ip = $ip
events:
  // $e1 and $e2 are transitively joined using function to event comparison
  re.capture($e2.principal.application, ".*") = $app
  $e1.principal.hostname = $app

Namun, contoh berikut menunjukkan bagian events yang tidak valid.

events:
  // Event to arithmetic comparison is an invalid join condition for $e1 and $e2.
  $e1.principal.port = $e2.src.port + 1
events:
  $e1.src.ip = $ip
  $e2.target.ip = $ip
  $e3.about.ip = "192.1.2.0" //$e3 is not joined with $e1 or $e2.
events:
  $e1.src.port = $port

  // Arithmetic to placeholder comparison is an invalid transitive join condition.
  $e2.principal.port + 800 = $port

Langkah berikutnya

Informasi tambahan

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