Menggunakan tabel data

Didukung di:

Tabel data adalah konstruksi data multikolom yang memungkinkan Anda memasukkan data Anda sendiri ke Google Security Operations. Tabel ini dapat berfungsi sebagai tabel pencarian dengan kolom yang ditentukan dan data yang disimpan dalam baris. Anda dapat membuat atau mengimpor tabel data ke akun Google SecOps menggunakan UI Google SecOps, API tabel data, atau dengan menggunakan kueri YARA-L dalam aturan.

Mengelola tabel data menggunakan antarmuka pengguna Google SecOps

Bagian berikut menjelaskan cara mengelola tabel data menggunakan antarmuka pengguna, termasuk cara mengakses tabel data, menambahkan tabel data baru dan mengedit kontennya, mengimpor data ke tabel, menambahkan baris, memisahkan data menggunakan koma atau tab, dan cara menghapus tabel data dari akun Anda.

Mengakses tabel data

Untuk membuka halaman tabel data, buka sidebar navigasi kiri, lalu klik Detections > Data tables. Anda dapat menelusuri tabel data yang ada dengan memasukkan namanya di kolom penelusuran di bagian atas sidebar.

Menambahkan tabel data baru

Untuk menambahkan tabel data baru ke Google SecOps, selesaikan langkah-langkah berikut:

  1. Klik tambahkan Tambahkan di kanan atas sidebar.

  2. Pada dialog Create new data table, beri nama tabel baru dan (opsional) tambahkan deskripsi.

  3. Klik Buat. Tabel data baru akan muncul di jendela utama dan siap menerima data.

Mengimpor data ke tabel data

Untuk menambahkan data ke tabel data, Anda dapat mengimpornya langsung ke Google SecOps sebagai berikut:

  1. Klik Impor Data.

  2. Pilih file CSV standar (hanya file CSV yang dapat diimpor ke Google SecOps).

  3. Klik Buka jika Anda siap mengimpor data ke tabel data.

Menambahkan baris data baru ke tabel data

Untuk menambahkan baris data baru ke tabel data secara manual, Anda dapat memasukkannya langsung, dengan baris pertama berfungsi sebagai header tabel. Untuk melakukannya, lakukan hal berikut:

  1. Di tab Details, tempatkan kursor di akhir baris yang ada, lalu tekan Enter.

  2. Masukkan baris data baru:

    1. Pisahkan kolom data menggunakan koma atau tab.
    2. Pastikan untuk mencocokkan setiap item data dengan kolom data yang sesuai.
    3. Saat Anda memasukkan data baris di tab Detail, data tersebut akan diisi di Editor tabel.

Menentukan apakah akan menggunakan koma atau tab untuk memisahkan data

Untuk memisahkan data menggunakan koma atau tab, lakukan hal berikut:

  1. Klik Edit jenis pemisah di samping Impor Data.

  2. Pada dialog Edit jenis pemisah, pilih Titik koma atau Tab dari menu Pemisah.

Menghapus tabel data

Untuk menghapus tabel data:

  1. Pilih tabel data dari daftar Tabel data di sebelah kiri.

  2. Klik Hapus.

Mengelola tabel data menggunakan Chronicle API

Anda juga dapat menggunakan resource REST yang tersedia di Chronicle API untuk mengelola tabel data di Google SecOps. API ini memiliki fungsi yang setara dengan antarmuka pengguna, dan menyertakan beberapa fitur tambahan yang memungkinkan Anda mengelola tabel data dengan performa dan skala yang lebih besar.

Berikut adalah resource REST tabel data:

Menggunakan tabel data di Google SecOps

Setelah mengimpor tabel data ke instance Google SecOps, Anda dapat menggunakannya untuk memfilter, meningkatkan kualitas, dan memperkaya data menggunakan aturan. Dokumen ini menyertakan banyak contoh dalam sintaksis YARA-L, yang dapat Anda sertakan ke dalam aturan Google SecOps dalam instance Anda. Untuk informasi selengkapnya tentang cara mengedit aturan di Google SecOps, lihat Mengelola aturan menggunakan Editor Aturan.

Anda dapat menggunakan tabel data bersama dengan aturan dengan cara berikut:

Memfilter data peristiwa dan entitas UDM menggunakan tabel data

Anda dapat memfilter peristiwa dan entitas UDM dengan membandingkannya dengan entri dalam tabel data.

Tautkan peristiwa UDM ke tabel data dengan salah satu cara berikut:

  • Menggunakan operator kesetaraan (=, !=, >, >=, <, <=) untuk perbandingan berbasis baris. Contoh, $<udm_variable>.<field_path> = %<data_table_name>.<column_name>.

  • Menggunakan kata kunci in untuk perbandingan berbasis kolom. Misalnya, $<udm_variable>.<field_path> in %<data_table_name>.<column_name>.`

Seperti daftar referensi, jenis data yang didukung untuk setiap kolom tabel data dapat berupa string, regex, atau CIDR.

Untuk menggunakan kolom tabel data jenis CIDR atau ekspresi reguler untuk perbandingan berbasis baris, gunakan sintaksis berikut:

net.ip_in_range_cidr($e.principal.ip, %<data_table_name>.<column_name>)

re.regex($e.principal.hostname, %<data_table_name>.<column_name>)

Untuk menggunakan kolom tabel data jenis CIDR atau ekspresi reguler untuk perbandingan berbasis kolom, gunakan sintaksis berikut:

$e.principal.ip in cidr %cidr_data_table.column_name

$e.principal.hostname in regex %regex_data_table.column_name

Jika Anda menentukan jenis data kolom sebagai CIDR atau ekspresi reguler, kecualikan kata kunci cidr atau regex.

Anda juga dapat menggunakan operator not dengan tabel data. Contoh aturan berikut memfilter entri dengan alamat IP ($e.principal.ip) yang tidak cocok dengan rentang CIDR yang tercantum di kolom benign_ip di cidr_data_table:

not $e.principal.ip in cidr %cidr_data_table.benign_ip

Menggabungkan tabel data dengan peristiwa atau entity UDM

Anda dapat menggunakan tabel data untuk memfilter peristiwa UDM menggunakan operator kesetaraan =, !=, >, >=, <, <= untuk perbandingan berbasis baris.

Dalam contoh berikut, aturan YARA-L memeriksa bahwa saat pengguna login, ID penggunanya ada di tabel data (example_table). Di baris yang sama pada tabel data tempat kecocokan terjadi, aturan ini juga memeriksa apakah akun pengguna aktif sebelum peristiwa login didaftarkan.

// Check if a user exists in a data table and the user is active for all user login events.

rule udm_join_data_table {
meta:
    description = "Join data table with UDM event"
event:
  $e.metadata.event_type = USER_LOGIN
  $e.security_result.action = ALLOW
  $e.principal.user.userid = $userid

// Event must match at least one row in the table where the uid in the table
// row is the userid for the event and the active date in the same table
// row is before the event timestamp

  %example_table.uid = $userid
  $e.principal.hostname = %example_table.hostname

match:
  $userid over 1h

condition:
  $e
}

Contoh berikut mengilustrasikan tabel data dan data peristiwa UDM. Berdasarkan logika dalam aturan YARA-L sebelumnya, pengguna dengan ID pengguna 32452 muncul dalam deteksi karena nama host pengguna di sistem cocok dengan nama host di tabel data.

Tabel data
uid title hostname
32452 HR host1
64452 Keuangan host2
46364 IT host3
Tabel peristiwa UDM
principal metadata security_result principal
32452 USER_LOGIN IZINKAN host1
64589 USER_LOGIN IZINKAN host9
87352 USER_LOGIN IZINKAN host4

Menggunakan tabel data sebagai daftar referensi multikolom

Anda dapat menggunakan tabel data sebagai daftar referensi multikolom. Meskipun daftar referensi dapat mengakses data dalam satu dimensi, tabel data memungkinkan Anda mengakses data dalam beberapa dimensi, sehingga memungkinkan pemfilteran data.

Anda dapat menautkan peristiwa UDM ke tabel data menggunakan kata kunci in untuk perbandingan berbasis kolom.

Tabel data dapat dirujuk sebagai daftar referensi multikolom menggunakan sintaksis yang sama dengan yang digunakan oleh daftar referensi:

%&lt;data_table_name>.&lt;column_name>.

Dalam contoh berikut, pemberitahuan dipicu untuk koneksi jaringan dengan kombinasi port dan protokol yang mencurigakan. Port dan protocol adalah kolom dalam tabel data badApps.

rule udm_in_data_table {

    meta:
        description = "Use data table as multicolumn reference list"

    events:
        $e.metadata.event_type = NETWORK_CONNECTION
        $e.security_result.action = ALLOW
        $e.target.asset.asset_id = $assetid
        
        // event port matches at least one value in table column port
        $e.target.port in %badApps.port
        
        // event IP matches at least 1 value in table column protocol
        $e.target.network.ip in %badApps.ip

    match:
        $assetid over 1h

    condition:
        $e
}

Memetakan jenis data ke satu kolom tabel data

Petakan setiap jenis data ke satu kolom tabel data. Setiap kolom yang berisi nilai untuk beberapa kolom harus dipisahkan sebelum dapat digunakan sebagai tabel data.

Dalam contoh berikut, kolom tabel data Field_value berisi nilai untuk beberapa kolom:

Field_value Field_name
altostrat.com FQDN
192.0.2.135 IP
charlie userid
contoh hostname

Tabel sebelumnya dibagi menjadi empat kolom dengan setiap kolom dipetakan ke hanya satu jenis kolom sebelum dapat digunakan untuk kasus penggunaan tabel data yang disajikan dalam dokumen ini.

FQDN IP Userid Hostname
altostrat.com 192.0.2.135 charlie contoh

Memetakan nama kolom ke kolom entity

Saat membuat tabel data, Anda dapat memetakan nama kolom tabel data ke kolom entity.

Dalam contoh tabel data berikut, kolom Userid dan Role dipetakan ke entity.user.userid dan entity.user.attribute.role.name:

Userid
(petakan ke entity.user.userid)
Email Peran
(petakan ke entity.user.attribute.role.name)
jack jack123@gmail.com admin
tony tony123@gmail.com engineer

Kolom Email tidak dapat dipetakan ke jalur entity entity.user.email_address karena merupakan kolom berulang. Anda tidak dapat memetakan kolom tabel data ke kolom berulang.

Anda dapat memetakan kolom tabel data ke kolom proto entity menggunakan kolom mapped_column_path dari resource DataTable.

Untuk kolom yang tidak memiliki jalur entity yang ditentukan, seperti Email dalam contoh tabel ini, Anda harus menentukan jenis data. Seperti halnya daftar referensi, jenis data yang didukung untuk tabel data adalah string, regex, dan cidr.

Anda dapat menentukan kolom yang dipetakan dan tidak dipetakan dalam tabel data menggunakan kondisi join. Kolom yang tidak dipetakan akan masuk ke kolom additional dari entity (tempat tabel data digabungkan) sebagai pasangan nilai kunci dengan kunci adalah nama kolom dan nilai adalah nilai baris untuk kolom tersebut.

Menulis hasil dari kueri YARA-L ke tabel data

Anda dapat menulis hasil dari kueri YARA-L ke tabel data. Dengan menggunakan fitur ini, Anda dapat membuat tabel data dari data Google SecOps dan menggunakan tabel ini untuk memfilter dan meningkatkan kualitas data lainnya.

Anda dapat menggunakan sintaksis aturan YARA-L untuk tabel data untuk hal berikut:

  • Tentukan sintaksis YARA-L untuk menulis hasil aturan ke tabel data. Anda dapat menggunakan sintaksis yang sama untuk penelusuran dan dasbor.

  • Gunakan tabel data untuk intelijen ancaman, respons insiden, dan kasus penggunaan keamanan lainnya.

  • Pastikan data konsisten dengan konvensi YARA-L.

Menulis deteksi dan pemberitahuan ke tabel data menggunakan aturan

Anda dapat menggunakan aturan YARA-L untuk mengirim deteksi dan pemberitahuan ke tabel data.

Dengan menggunakan fungsi write_row, Anda dapat menimpa baris tabel data dengan kunci yang cocok di tabel data menggunakan hasil dari aturan. Jika kunci tidak ditemukan dalam tabel, tambahkan baris baru.

Tentukan fungsi write_row di bagian ekspor kueri YARA-L. Menulis data ke tabel data harus menjadi tindakan akhir aturan. Tindakan ini memastikan bahwa variabel hasil ditulis ke tabel data.

export:
  %<data_table_name>.write_row(
  data_table_column_x_name: <value>,
  data_table_column_y_name: <value>,
  ...,
  ...,
  data_table_column_z_name: <value>
)
// depending on the key column(s), the rows will be updated for existing keys 
and appended for new keys

Mengubah tabel data menggunakan YARA-L

Berikut ini cara mengubah tabel data menggunakan YARA-L:

TableName: ip_user_domain_table (kolom kunci untuk kunci utama ditentukan saat pembuatan)

ip_address employee_id* domain
192.0.2.10 Dana altostrat.com
192.0.2.20 Quinn altostrat.com
192.0.2.30 Lee cymbalgroup.com

* menunjukkan kunci utama.

Aturan berikut menangkap kombinasi unik dari principal.ip, principal.user.employee_id, dan target.domain. Filter ini memfilter hasil berdasarkan prevalensi target.domain:

rule unique_principal_userid_and_ip_and_target_domain_with_low_prevalence {

    meta:
        author = "GP"
        description = "Captures unique combinations of principal.ip, 
        principal.user.employee_id, and target.domain where 
        target.domain.prevalence is less than 5"
        rule_version = "1.0"

    events:
        $e.principal.ip = $principal_ip
        $e.principal.user.employee_id = $principal_user_employee_id
        $e.target.domain.name = $target_domain
        $e.target.domain.prevalence.day_count < 5

    condition:
        $e
}

Hasil aturan:

ip empid domain
192.0.2.10 Dana altostrat.com
192.0.2.30 Lee examplepetstore.com
192.0.2.20 Quinn altostrat.com

Contoh: Menggunakan write_row untuk menulis output aturan ke tabel data

rule write_to_data_table {

  meta:
    author = "GP"
    description = "Captures uniqueprincipal.user.employee_id, and target.domain where target.domain.prevalence is less than 5"
    rule_version = "1.0"

  events:
    $e.principal.user.employee_id = $principal_user_employee_id
    $e.target.domain.name = $target_domain
    $e.target.domain.prevalence.day_count < 5

  outcome:
    $hostname = $target_domain
    $principal_emp_id = $principal_user_employee_id
 
  condition:
    $e

  export:
    %ips_with_hostnames.write_row (
    employeeid:$principal_emp_id,
    hostname:$hostname,
    )
}

Contoh: Memahami write_row

Dalam contoh berikut, user dan ip adalah kunci utama. Setiap deteksi yang tetap ada di tabel deteksi akan menghasilkan satu evaluasi panggilan fungsi di bagian ekspor aturan.

Berikut aturannya:

rule successful_logins_by_user_to_ip {
    meta:

    events:
        $e.metadata.event_type = "USER_LOGIN"
        all $e.security_result.action != "BLOCK"
        all $e.security_result.action != "UNKNOWN_ACTION"

        $user = $e.principal.user.userid
        $ip = $e.target.ip
        $ts = $e.metadata.event_timestamp.seconds

    match:
        $user, $ip over 1h

    outcome:
        $first_seen = min($ts)

    condition:
        $e

    export:
        %successful_logins.write(user:$user, ip:$ip)
}

Berikut adalah data peristiwa:

metadata: {
  event_type: USER_LOGIN
  event_timestamp: { seconds: 1283299200 }
}
principal: {
  user: {
    userid: "charlie"
  }
}
target: {
  ip: ["192.0.2.135", "192.0.2.136"]
}
security_result: {
  action: ALLOW
}

Deteksi berikut ditampilkan:

ID Deteksi Cocokkan $user Cocokkan $ip
0 charlie 192.0.2.135
1 charlie 192.0.2.136

Tabel data berisi hal berikut:

pengguna ip
charlie 192.0.2.135
charlie 192.0.2.136

Memperkaya grafik entity dengan tabel data

Anda dapat menggunakan tabel data untuk menambahkan, menghapus, atau mengganti entitas yang ditampilkan dalam grafik entitas. Gunakan fungsi di bagian setup aturan untuk menunjukkan cara menggabungkan, menambahkan, atau menggunakan tabel data untuk menghapus entitas dari peristiwa entitas yang dirujuk di bagian events.

Anda dapat menggunakan template aturan berikut untuk mengubah grafik entity:

rule entity_graph_template {

  meta:
    ...

  setup:
    // import the data table into entity graph
    <enrichment_keyword> <join_condition>

  events:
    ...

  match:
    ...

  condition:
    ...
}

Anda dapat menggunakan fungsi YARA-L 2.0 berikut untuk meningkatkan grafik entity dengan tabel data:

  • graph_override: Menutupi baris dalam grafik entity yang cocok dengan kondisi join dengan data dari tabel data.

    Contoh:

    [graph_override](?tab=t.0#heading=h.v0fps7eke1if)

  • graph_append: Menambahkan baris dari tabel data ke baris dalam grafik entity. Operasi graph_append memerlukan array yang menyertakan variabel tabel data dan variabel peristiwa entity, bukan kondisi join.

    Pada contoh berikut, $g1 adalah variabel grafik entity dan example_table adalah tabel data:

    graph_append [$g1, %example_table]

  • graph_exclude: Menghapus baris dalam grafik entity yang cocok dengan kondisi join.

    Contoh:

    [graph_exclude](?tab=t.0#heading=h.o0qbb5paki6g)

Kondisi join harus berupa ekspresi kesetaraan antara kolom tabel data dan kolom grafik entity. Untuk fungsi graph_override dan graph_exclude, sintaksis untuk mengakses tabel data adalah sebagai berikut:

<data_table_name>.<column_name>

Setiap filter yang ditentukan untuk <entity_variable> di bagian peristiwa akan diterapkan setelah peningkatannya dengan tabel data.

Setelah entitas dalam grafik entitas diperkaya dengan entitas dalam tabel data, variabel entitas dalam grafik entitas harus digabungkan ke entitas UDM.

Mengganti grafik entity dengan data dari tabel data

Dengan fungsi graph_override, kolom yang ada di grafik entity dan tabel data diganti dengan kolom dari tabel data. Kolom yang ada di grafik entity dan tidak ada di tabel data tetap sama. Kolom yang tidak ada dalam grafik entity, tetapi ada dalam tabel data, akan disertakan.

Hanya kolom tabel data yang dipetakan yang akan mengganti kolom grafik entity. Kolom yang tidak dipetakan ditambahkan ke kolom additional grafik entity tempat tabel data digabungkan.

Contoh: Mencocokkan pada satu join

Dalam contoh berikut, baris dalam grafik entity yang cocok dengan kondisi join antara kolom tabel data dan kolom grafik entity ($g1.graph.entity.ip = %example_table.my_ip) akan diganti oleh tabel data.

rule rule_override {
  meta:
    description = "Override entity context with data table before joining with UDM event"

  setup:
    //Rows in the entity graph that match the join condition are overridden by the data table
    graph_override ($g1.graph.entity.ip = %example_table.my_ip)

  events:
    $e.metadata.event_type = "NETWORK_CONNECTION"
    $e.security_result.action = "ALLOW"

    // Filter will be applied after graph is overridden by data table
    $g1.graph.entity.hostname = "ftp01"

    // Accessing unmapped columns
    $g1.graph.additional.fields["Owner"] = "alice"

    // Joining the UDM event with the enriched entity graph
    $e.target.ip = $iocip
    $g1.graph.entity.ip = $iocip

  match:
    $iocip over 1h

  condition:
    $e and $g1
}

Untuk menggunakan kolom yang tidak dipetakan (misalnya "Pemilik") dari tabel data, lalu pernyataan yang setara untuk $g1.graph.entity.owner = "alice" is $g1.graph.additional.fields["Owner"] = "alice". Hal ini karena semua kolom tabel data yang tidak dipetakan masuk ke kolom additional dari grafik entity ($g1).

Tabel berikut mengilustrasikan operasi penggantian saat baris dalam grafik entity diperkaya saat kolom IP dalam tabel data cocok dengan kolom IP dalam grafik entity.

Grafik entity yang ada
Hostname IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabel data
Hostname IP MAC Pemilik
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.6 …:cc bob
h2 10.1.1.7 …:dd chris
h3 10.1.1.4 …:ee doug

Grafik entity yang diperkaya
Hostname IP MAC Pemilik
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02
h3 10.1.1.4 …:ee doug

Contoh: Mencocokkan di beberapa join

Pada contoh berikut, baris dalam grafik entity yang cocok dengan beberapa kondisi join ($g1.graph.entity.ip = %example_table.my_ip dan $g1.graph.entity.hostname = %example_table.my_hostname) akan diganti oleh tabel data.

rule rule_override {
meta:
    description = "Override Entity context with Data Table before joining with UDM event"
setup:
  // example with more than one condition
  graph_override ($g1.graph.entity.ip = %example_table.my_ip and
  $g1.graph.entity.hostname = %example_table.my_hostname) 
events:
  $e.metadata.event_type = "NETWORK_CONNECTION"
  $e.security_result.action = "ALLOW"

  // Filter will be applied after graph is overridden by data table
  $g1.graph.entity.hostname = "ftp01"

  // joining the UDM event with the enriched entity graph
  $e.target.ip = $iocip
  $g1.graph.entity.ip = $iocip

match:
  $iocip over 1h

condition:
  $e and $g1
}

Tabel berikut mengilustrasikan operasi penggantian saat baris grafik entitas diperkaya jika kolom IP dan kolom nama host dalam tabel data cocok dengan kolom IP dan kolom nama host dalam grafik entitas.

Grafik entity yang ada
Hostname IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabel data
Hostname IP MAC Pemilik
ftp01 10.1.1.4 …:bb alice
h1 10.1.1.5 …:cc bob
h2 10.1.1.6 …:dd chris
h3 10.1.1.4 …:ee doug
Grafik entity yang diperkaya
Hostname IP MAC Pemilik
ftp01 10.1.1.4 …:bb alice
www01 10.1.1.5 …:02

Menambahkan data dari tabel data ke grafik entity

Dengan fungsi graph_append, tidak diperlukan kondisi join.

Dalam contoh berikut, semua baris dalam tabel data ditambahkan ke baris dalam grafik entity.

rule rule_append {
meta:
  description = "Data table append entity"
   
setup:
  graph_append [$g1, %example_table]

events:
    // filter UDM events
  $e.metadata.event_type = "NETWORK_CONNECTION"
  $e.security_result.action = "ALLOW"

  // Join the filtered UDM events with the enriched graph
  $e.target.ip = $iocip
  $g1.graph.entity.ip = $iocip

match:
  $iocip over 1h

condition:
  $e and $g1
}

Tabel contoh berikut mengilustrasikan operasi penambahan saat baris tabel data ditambahkan ke baris dalam grafik entity:

Grafik entity yang ada
Hostname IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabel data
Hostname IP MAC Pemilik
10.1.1.4 …:01 alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd chris
10.1.1.4 …:ee doug
Grafik entity yang diperkaya
Hostname IP MAC Pemilik
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
10.1.1.4 …:bb alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd chris
10.1.1.4 …:ee doug

Menggunakan graph_exclude untuk menghapus baris dari grafik entitas

Dengan fungsi graph_exclude, baris dalam grafik entity yang cocok dengan kondisi join akan dihapus dari grafik entity.

Dalam contoh berikut, semua baris dalam grafik entity yang cocok dengan kondisi join tertentu (antara kolom tabel data dan kolom grafik entity) akan dihapus. Tidak ada baris dari tabel data yang ditambahkan ke grafik entity.

rule rule_exclude {

    meta:
    setup:
      graph_exclude ($g1.graph.entity.ip = %example_table.ip)

    events:
        $e.metadata.event_type = "NETWORK_CONNECTION"
        $e.security_result.action = "ALLOW"
        $e.target.ip = $iocip
        $g1.graph.entity.ip = $iocip

    match:
        $iocip over 1h

    condition:
        $e and $g1
}

Tabel berikut mengilustrasikan operasi pengecualian saat baris grafik entitas yang cocok dengan kolom IP tabel data dihapus:

Grafik entity yang ada
Hostname IP MAC
ftp01 10.1.1.4 …:01
www01 10.1.1.5 …:02
Tabel data
IP MAC Pemilik
10.1.1.4 …:bb alice
10.1.1.6 …:cc bob
10.1.1.7 …:dd chris
Grafik entity yang diperkaya
Hostname IP MAC
www01 10.1.1.5 …:02

Batasan

  • Batas jumlah pernyataan in saat mereferensikan daftar referensi dalam aturan juga berlaku untuk pernyataan in dalam tabel data.

  • Hanya jenis file CSV yang didukung untuk diupload.

  • Ukuran maksimum tabel data adalah 10 GB.

  • Batas agregat maksimum volume data di seluruh tabel data dalam tenant adalah 1 TB.

  • Jumlah maksimum pernyataan in dalam aturan, dengan atau tanpa operator khusus: 7

  • Jumlah maksimum pernyataan in dengan operator regex: 4

  • Jumlah maksimum pernyataan in dengan operator cidr: 2

  • Placeholder tidak diizinkan di bagian penyiapan baru.

  • Kolom yang tidak dipetakan dari tabel data dengan jenis data yang ditetapkan ke string hanya dapat digabungkan dengan kolom string peristiwa UDM atau entity UDM.

  • Hanya gunakan kolom yang tidak dipetakan dalam tabel data dengan jenis data yang ditetapkan ke cidr atau regex untuk CIDR atau ekspresi reguler.

  • Anda tidak dapat memetakan kolom tabel data ke kolom berulang.

Menggunakan tabel data dengan aturan

Batasan berikut berlaku untuk tabel data saat digunakan dengan aturan:

Frekuensi berjalan

Frekuensi pengoperasian real-time tidak didukung untuk aturan dengan tabel data.

Gabungan

  • Tidak seperti entitas dan UDM, tabel data tidak mendukung placeholder. Artinya, Anda tidak dapat menerapkan satu kumpulan filter ke tabel data, menggabungkannya dengan entitas UDM, lalu menerapkan kumpulan filter yang berbeda ke tabel data yang sama dan menggabungkannya dengan variabel placeholder UDM lain.

  • Misalnya, tabel data bernama dt dengan 3 kolom: my_hostname, org, dan my_email serta dengan aturan berikut:

events:
$e1.principal.hostname =  %dt.my_hostname
%dt.org ="hr"

$e2.principal.email =  %dt.my_email
%dt.org !="hr"

Semua filter pada tabel data diterapkan terlebih dahulu, lalu baris yang difilter dari tabel data digabungkan dengan UDM. Dalam hal ini, tabel data kosong digabungkan dengan e1 dan e2 karena dua filter pada tabel data dt saling bertentangan (%dt.org ="hr" and %dt.org !="hr").

Output ke tabel data

  • Anda hanya dapat mengekspor variabel hasil ke tabel data. Anda tidak dapat mengekspor kolom tabel data atau jalur peristiwa secara langsung.

  • Daftar kolom harus menyertakan kolom kunci utama untuk tabel data.

  • Anda tidak boleh memiliki lebih dari 20 hasil.

  • Kolom tabel data tidak mendukung nilai berulang, sehingga semua variabel hasil yang ditulis ke tabel data harus berupa nilai tunggal.

  • Jika tabel data tidak ada, tabel baru akan dibuat dengan jenis data string default untuk semua kolom, mengikuti urutan yang ditentukan.

  • Hanya satu aturan yang dapat menulis ke tabel data dalam satu waktu. Jika aturan mencoba menulis ke tabel data yang sudah ditulis oleh aturan lain, kompilasi aturan akan gagal.

  • Tidak ada jaminan bahwa aturan produsen dapat menambahkan baris ke tabel data sebelum aturan konsumen untuk tabel data tersebut dimulai.

  • Aturan memiliki batas jumlah baris hasil. Batas 10.000 baris berlaku untuk hasil dan data yang dipertahankan. Batas yang sama berlaku untuk tabel data; satu eksekusi aturan dapat menghasilkan maksimum 10.000 baris ke tabel data.

  • Jika baris dengan kunci utama yang sama sudah ada di tabel data, kolom kunci non-utama akan diganti dengan nilai baru.

  • Anda hanya dapat menerapkan satu operasi pengayaan (override, append, atau exclude) ke satu variabel grafik entity.

  • Setiap operasi pengayaan dapat dilakukan hanya menggunakan satu tabel data.

  • Anda dapat menentukan maksimal dua operasi pengayaan dari jenis apa pun di bagian setup dari aturan YARA-L.

Pada contoh berikut, operasi penggantian diterapkan ke variabel grafik entity $g1 dan operasi append diterapkan ke variabel grafik entity $g2.

    setup:
    graph_override($g1.graph.entity.user.userid = %table1.myids)
    graph_append [$g2, %table1]

Dalam contoh sebelumnya, tabel data yang sama (table1) digunakan untuk meningkatkan grafik entity yang berbeda. Anda juga dapat menggunakan tabel data yang berbeda untuk meningkatkan kualitas grafik entity yang berbeda, sebagai berikut:

    setup:
    graph_override($g1.graph.entity.user.userid = %table1.myids)
    graph_append [$g2, %table2]