Mengumpulkan log pemberitahuan Netskope v1

Didukung di:

Ringkasan

Parser ini mengekstrak log pemberitahuan Netskope dari pesan berformat JSON, yang mengubahnya menjadi UDM Google Security Operations. Fungsi ini menormalisasi kolom, mengurai stempel waktu, menangani pemberitahuan dan tingkat keparahan, mengekstrak informasi jaringan (IP, port, protokol), memperkaya data pengguna dan file, serta memetakan kolom ke struktur UDM. Parser juga menangani aktivitas Netskope tertentu seperti login dan peristiwa DLP serta menambahkan label kustom untuk konteks yang ditingkatkan.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke Netskope.

Mengaktifkan akses Netskope REST API

  1. Login ke tenant Netskope menggunakan kredensial administrator Anda.
  2. Buka Setelan > Alat > REST API v1.
  3. Buat kunci API baru khusus untuk Google SecOps.
  4. Berikan nama deskriptif (misalnya, Kunci Google SecOps).
  5. Salin dan simpan kunci dan rahasia yang dihasilkan.

Mengonfigurasi feed di Google SecOps untuk menyerap log Netskope Alert

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Feed name, masukkan nama untuk feed (misalnya, Netskope Alert Logs).
  4. Pilih Third party API sebagai Source type.
  5. Pilih Netskope sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • Header HTTP Autentikasi: pasangan kunci yang dibuat sebelumnya dalam format <key>:<secret>, digunakan untuk melakukan autentikasi terhadap Netskope API.
    • Nama Host API: FQDN (nama domain yang sepenuhnya memenuhi syarat) endpoint REST API Netskope Anda (misalnya myinstance.goskope.com).
    • Endpoint API: Masukkan alerts.
    • Jenis Konten: Masukkan all.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.

Opsional: Menambahkan konfigurasi feed untuk menyerap Log peristiwa Netskope

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log Peristiwa Netskope).
  4. Pilih Third party API sebagai Source type.
  5. Pilih Netskope sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • Header HTTP Autentikasi: pasangan kunci yang dibuat sebelumnya dalam format <key>:<secret>, digunakan untuk melakukan autentikasi terhadap Netskope API.
    • Nama Host API: FQDN (nama domain yang sepenuhnya memenuhi syarat) endpoint REST API Netskope Anda (misalnya myinstance.goskope.com).
    • Endpoint API: Masukkan events.
    • Jenis Konten: Masukkan halaman, aplikasi, audit, infrastruktur, atau jaringan, bergantung pada peristiwa yang ingin Anda uraikan.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
access_method extensions.auth.auth_details Dipetakan langsung dari kolom access_method.
action security_result.action Dipetakan langsung dari kolom action, atau ditetapkan ke QUARANTINE jika action adalah "alert" atau "bypass". ALLOW jika action diizinkan. BLOCK jika action diblokir.
action security_result.action_details Dipetakan dari kolom action jika "alert" atau "bypass".
activity security_result.description Dipetakan langsung dari kolom activity.
alert is_alert Tetapkan ke true jika alert adalah "yes", false jika tidak.
alert_name - Tidak dipetakan ke objek IDM.
alert_type security_result.category_details Dipetakan langsung dari kolom alert_type.
app target.application Dipetakan langsung dari kolom app.
app_activity additional.fields{key:"app_activity", value:{string_value: }} Dipetakan langsung dari kolom app_activity sebagai pasangan nilai kunci di additional.fields.
app_session_id target.resource.attribute.labels{key:"App Session Id", value: } Diekstrak dari kolom message menggunakan grok dan ditambahkan sebagai label.
appcategory security_result.category_details Dipetakan langsung dari kolom appcategory jika category kosong.
browser network.http.user_agent Dipetakan langsung dari kolom browser jika bukan "tidak diketahui".
browser_version network.http.parsed_user_agent.browser_version Dipetakan langsung dari kolom browser_version.
browser_version network.http.parsed_user_agent.family Tetapkan ke "USER_DEFINED" jika browser_version ada.
category security_result.category_details Dipetakan langsung dari kolom category.
cci security_result.detection_fields{key:"cci", value: } Dipetakan langsung dari kolom cci sebagai pasangan nilai kunci di detection_fields.
ccl security_result.confidence Tetapkan berdasarkan nilai ccl: "poor" atau "low" dipetakan ke LOW_CONFIDENCE, "medium" ke MEDIUM_CONFIDENCE, "high" atau "excellent" ke HIGH_CONFIDENCE.
ccl security_result.confidence_details Dipetakan langsung dari kolom ccl.
client_bytes network.sent_bytes Dipetakan langsung dari kolom client_bytes setelah dikonversi ke bilangan bulat tanpa tanda tangan.
count additional.fields{key:"count", value:{string_value: }} Dipetakan langsung dari kolom count sebagai pasangan nilai kunci di additional.fields.
device principal.resource.resource_subtype Dipetakan langsung dari kolom device.
device principal.resource.type Tetapkan ke "DEVICE" jika kolom device ada.
dlp_file target.file.full_path Dipetakan langsung dari kolom dlp_file jika ada, atau dari file_path.
dlp_profile security_result.rule_type Dipetakan langsung dari kolom dlp_profile.
dlp_rule security_result.rule_name Dipetakan langsung dari kolom dlp_rule.
dlp_rule_severity security_result.severity Dipetakan langsung dari kolom dlp_rule_severity jika alert_type adalah DLP.
dlp_rule_severity _severity Dipetakan dari kolom dlp_rule_severity jika severity kosong.
domain target.asset.hostname Dipetakan langsung dari kolom domain.
domain target.hostname Dipetakan langsung dari kolom domain.
dsthost target.asset.hostname Dipetakan langsung dari kolom dsthost jika bukan IP dan dstip kosong, jika tidak, dipetakan ke target.hostname.
dsthost target.hostname Dipetakan langsung dari kolom dsthost jika bukan IP dan dstip tidak kosong.
dstip target.asset.ip Dipetakan langsung dari kolom dstip.
dstip target.ip Dipetakan langsung dari kolom dstip.
dstport target.port Dipetakan langsung dari kolom dstport setelah dikonversi menjadi bilangan bulat.
dst_country target.location.country_or_region Dipetakan langsung dari kolom dst_country.
dst_location target.location.city Dipetakan langsung dari kolom dst_location.
dst_region target.location.name Dipetakan langsung dari kolom dst_region.
file_path target.file.full_path Dipetakan langsung dari kolom file_path jika dlp_file kosong.
file_size target.file.size Dipetakan langsung dari kolom file_size setelah dikonversi ke bilangan bulat tanpa tanda tangan.
file_type target.file.mime_type Dipetakan langsung dari kolom file_type jika bukan "Tidak diketahui".
from_user network.email.from Dipetakan langsung dari kolom from_user jika berupa alamat email.
from_user_category principal.resource.attribute.labels{key:"From User Category", value: } Dipetakan langsung dari kolom from_user_category sebagai pasangan nilai kunci di principal.resource.attribute.labels.
hostname principal.asset.hostname Dipetakan langsung dari kolom hostname jika tidak kosong, jika tidak, dari instance_id.
hostname principal.hostname Dipetakan langsung dari kolom hostname jika tidak kosong, jika tidak, dari instance_id.
id.time metadata.event_timestamp Diurai dan dipetakan ke stempel waktu peristiwa dalam metadata.
instance_id principal.asset.hostname Dipetakan langsung dari kolom instance_id jika hostname kosong.
instance_id principal.hostname Dipetakan langsung dari kolom instance_id jika hostname kosong.
intermediary intermediary Dipetakan langsung dari kolom intermediary.
ip_protocol network.ip_protocol Dipetakan dari kolom ip_protocol setelah diuraikan oleh file parse_ip_protocol.include.
is_alert is_alert Kolom yang dihasilkan parser. Tetapkan ke benar jika kolom alert adalah "ya".
is_significant is_significant Kolom yang dihasilkan parser. Tetapkan ke benar jika _severity adalah "KRITIS" atau "TINGGI".
ja3 network.tls.client.ja3 Dipetakan langsung dari kolom ja3 jika cocok dengan pola heksadesimal.
ja3s network.tls.server.ja3s Dipetakan langsung dari kolom ja3s jika cocok dengan pola heksadesimal.
malware_id security_result.threat_id Dipetakan langsung dari kolom malware_id.
malware_name security_result.threat_name Dipetakan langsung dari kolom malware_name.
malware_severity security_result.severity Dipetakan langsung dari kolom malware_severity setelah dikonversi ke huruf besar.
malware_type security_result.detection_fields{key:"Malware Type", value: } Dipetakan langsung dari kolom malware_type sebagai pasangan nilai kunci di detection_fields.
matched_username principal.user.email_addresses Dipetakan langsung dari kolom matched_username jika berupa alamat email.
md5 target.file.md5 Dipetakan langsung dari kolom md5 jika tidak kosong atau "Tidak tersedia".
metadata.event_type metadata.event_type Awalnya ditetapkan ke "GENERIC_EVENT", lalu berpotensi diganti berdasarkan kolom lain. Tetapkan ke NETWORK_HTTP jika srcip atau hostname dan dstip atau dsthost atau domain ada. Tetapkan ke STATUS_UPDATE jika srcip atau hostname ada, tetapi tidak ada dstip, dsthost, atau domain. Tetapkan ke USER_UNCATEGORIZED jika user ada. Tetapkan ke EMAIL_UNCATEGORIZED jika activity adalah "Pemindaian Introspeksi" dan shared_with atau from_user ada. Tetapkan ke USER_LOGIN jika activity adalah "Login Gagal", "Login Berhasil", atau "Upaya Login".
metadata.log_type metadata.log_type Tetapkan ke "NETSKOPE_ALERT".
metadata.product_log_id metadata.product_log_id Dipetakan langsung dari kolom _id.
metadata.product_name metadata.product_name Tetapkan ke "Netskope Alert".
metadata.vendor_name metadata.vendor_name Tetapkan ke "Netskope".
netskope_pop observer.hostname Dipetakan langsung dari kolom netskope_pop.
object additional.fields{key:"Object", value:{string_value: }} Dipetakan langsung dari kolom object sebagai pasangan nilai kunci di additional.fields.
object_id additional.fields{key:"Object id", value:{string_value: }} Dipetakan langsung dari kolom object_id sebagai pasangan nilai kunci di additional.fields.
object_type additional.fields{key:"Object type", value:{string_value: }} Dipetakan langsung dari kolom object_type sebagai pasangan nilai kunci di additional.fields.
organization_unit principal.administrative_domain Dipetakan langsung dari kolom organization_unit.
os principal.platform Dipetakan dari kolom os: "Windows" dipetakan ke WINDOWS, "MAC" ke MAC, "LINUX" ke LINUX.
os_version principal.platform_version Dipetakan langsung dari kolom os_version.
other_categories - Tidak dipetakan ke objek IDM.
page network.http.referral_url Dipetakan langsung dari kolom page jika referer kosong.
policy security_result.summary Dipetakan langsung dari kolom policy.
principal.user.email_addresses principal.user.email_addresses Digabung dari kolom user jika merupakan alamat email.
protocol network.application_protocol Dipetakan langsung dari kolom protocol setelah menghapus semua yang ada setelah "/" pertama. Dikonversi ke huruf besar.
publisher_cn additional.fields{key:"publisher_cn", value:{string_value: }} Dipetakan langsung dari kolom publisher_cn sebagai pasangan nilai kunci di additional.fields.
publisher_name additional.fields{key:"publisher_name", value:{string_value: }} Dipetakan langsung dari kolom publisher_name sebagai pasangan nilai kunci di additional.fields.
referer network.http.referral_url Dipetakan langsung dari kolom referer.
security_result.alert_state security_result.alert_state Tetapkan ke "ALERTING" jika alert adalah "yes", "NOT_ALERTING" jika alert adalah "no", "UNSPECIFIED" jika tidak.
security_result.category_details security_result.category_details Digabung dari kolom category atau appcategory atau alert_type.
security_result.confidence security_result.confidence Berasal dari kolom ccl.
security_result.confidence_details security_result.confidence_details Dipetakan langsung dari kolom ccl.
security_result.description security_result.description Dipetakan langsung dari kolom activity.
security_result.rule_name security_result.rule_name Dipetakan langsung dari kolom dlp_rule.
security_result.rule_type security_result.rule_type Dipetakan langsung dari kolom dlp_profile.
security_result.severity security_result.severity Berasal dari kolom _severity atau malware_severity atau dlp_rule_severity.
security_result.summary security_result.summary Dipetakan langsung dari kolom policy.
security_result.threat_id security_result.threat_id Dipetakan langsung dari kolom malware_id.
security_result.threat_name security_result.threat_name Dipetakan langsung dari kolom malware_name.
server_bytes network.received_bytes Dipetakan langsung dari kolom server_bytes setelah dikonversi ke bilangan bulat tanpa tanda tangan.
severity _severity Dipetakan langsung dari kolom severity.
sha256 target.file.sha256 Dipetakan langsung dari kolom sha256.
shared_with network.email.to Diurai dari kolom shared_with dan ditambahkan ke array network.email.to jika merupakan alamat email.
site additional.fields{key:"site", value:{string_value: }} Dipetakan langsung dari kolom site sebagai pasangan nilai kunci di additional.fields.
src_country principal.location.country_or_region Dipetakan langsung dari kolom src_country.
src_latitude principal.location.region_latitude Dipetakan langsung dari kolom src_latitude.
src_location principal.location.city Dipetakan langsung dari kolom src_location.
src_longitude principal.location.region_longitude Dipetakan langsung dari kolom src_longitude.
src_region principal.location.name Dipetakan langsung dari kolom src_region.
srcip principal.asset.ip Diekstrak dari kolom srcip menggunakan grok dan digabungkan ke dalam array principal.asset.ip dan principal.ip.
srcip principal.ip Diekstrak dari kolom srcip menggunakan grok dan digabungkan ke dalam array principal.asset.ip dan principal.ip.
srcport principal.port Dipetakan langsung dari kolom srcport setelah dikonversi menjadi bilangan bulat.
target.user.email_addresses target.user.email_addresses Digabung dari kolom to_user jika merupakan alamat email.
threat_match_field security_result.detection_fields{key:"Threat Match Field", value: } Dipetakan langsung dari kolom threat_match_field sebagai pasangan nilai kunci di detection_fields.
timestamp metadata.event_timestamp Diurai dari kolom timestamp atau id.time.
to_user target.user.email_addresses Diurai dari kolom to_user dan ditambahkan ke array target.user.email_addresses jika merupakan alamat email.
to_user_category target.resource.attribute.labels{key:"To User Category", value: } Dipetakan langsung dari kolom to_user_category sebagai pasangan nilai kunci di target.resource.attribute.labels.
traffic_type security_result.detection_fields{key:"traffic_type", value: } Dipetakan langsung dari kolom traffic_type sebagai pasangan nilai kunci di detection_fields.
tunnel_id additional.fields{key:"tunnel_id", value:{string_value: }} Dipetakan langsung dari kolom tunnel_id sebagai pasangan nilai kunci di additional.fields.
tunnel_type additional.fields{key:"tunnel_type", value:{string_value: }} Dipetakan langsung dari kolom tunnel_type sebagai pasangan nilai kunci di additional.fields.
type security_result.detection_fields{key:"type", value: } Dipetakan langsung dari kolom type sebagai pasangan nilai kunci di detection_fields.
ur_normalized - Tidak dipetakan ke objek IDM.
url target.url Dipetakan langsung dari kolom url.
user event.idm.read_only_udm.principal.user.userid Dipetakan langsung dari kolom user.
user principal.user.email_addresses Dipetakan langsung dari kolom user jika berupa alamat email.
useragent network.http.user_agent Dipetakan langsung dari kolom useragent.
useragent network.http.parsed_user_agent Dikonversi ke parseduseragent dan dipetakan ke network.http.parsed_user_agent.
user_agent network.http.user_agent Dipetakan langsung dari kolom user_agent.
user_agent network.http.parsed_user_agent Dikonversi ke parseduseragent dan dipetakan ke network.http.parsed_user_agent.

Perubahan

2024-06-04

  • Memetakan "matched_username" ke "principal.user.email_addresses".
  • Jika "action" adalah "bypass" atau "alert", petakan "action" ke "security_result.action_details" dan tetapkan "security_result.action" ke "QUARANTINE".
  • Jika "alert_type" adalah "DLP", petakan "dlp_rule_severity" ke "security_result.severity".

2024-02-19

  • Mengubah pemetaan "client_bytes" dari "network.received_bytes" menjadi "network.sent_bytes".
  • Mengubah pemetaan "server_bytes" dari "network.sent_bytes" menjadi "network.received_bytes".

2024-02-08

  • Memetakan "useragent" dan "user_agent" ke "network.http.user_agent" dan "network.http.parsed_user_agent".

2023-11-10

  • Menambahkan pola Grok, untuk memeriksa apakah "srcip" adalah pola IP yang valid.
  • Memetakan "instance_id" ke "principal.hostname".
  • Memetakan "traffic_type" ke "security_result.detection_fields".
  • Memetakan "app_activity" ke "additional.fields".
  • Memetakan "count" ke "additional.fields".
  • Memetakan "site" ke "additional.fields".
  • Memetakan "device" ke "principal.resource.resource_sub_type".
  • Memetakan "type" ke "security_result.detection_fields".
  • Mengubah pemetaan "hostname" menggunakan "replace", bukan "rename".
  • Mengubah pemetaan "cci" dari "additional.fields" menjadi "security_result.detection_fields".
  • Mengubah pemetaan "ccl" dari "additional.fields" menjadi "security_result.confidence_details".
  • Mengisi "security_result.confidence" sesuai dengan nilai di "ccl".

2023-07-14

  • Perbaikan Bug -
  • Nilai yang diekstrak untuk 'browser_session_id','app_session_id' menggunakan pola Grok sebelum pemetaan.
  • Menambahkan pemeriksaan kondisi untuk memvalidasi email sebelum memetakan kolom 'to_user'.

2023-07-06

  • Peningkatan -
  • Mengubah pola Grok untuk mengidentifikasi apakah "dsthost" adalah alamat IP atau bukan.
  • Jika "dsthost" adalah alamat IP, maka dipetakan ke "target.ip", jika tidak, dipetakan ke "target.hostname".

2023-06-06

  • Peningkatan -
  • Memetakan "domain" ke "target.hostname".
  • Memetakan "app_session_id" ke "target.resource.attribute.labels".
  • Memetakan "malware_severity" ke "security_result.severity".
  • Memetakan "malware_type" ke "security_result.detection_fields".
  • Memetakan "threat_match_field" ke "security_result.detection_fields".
  • Memetakan "ja3" ke "network.tls.client.ja3".
  • Memetakan "ja3s" ke "network.tls.server.ja3s".
  • Memetakan "cci", "ccl" ke "additional.fields".
  • Memetakan "access_method" ke "extensions.auth.auth_details".
  • Memetakan "browser_version" ke "network.http.parsed_user_agent.browser_version".
  • Memetakan "dlp_profile" ke "security_result.rule_type".
  • Memetakan "dlp_rule" ke "security_result.rule_name".
  • Memetakan "netskope_pop" ke "observer.hostname".
  • Memetakan "page" ke "network.http.referral_url".
  • Memetakan "to_user" ke "target.user.email_addresses".
  • Memetakan "to_user_category" ke "target.resource.attribute.labels".

2023-03-23

  • Peningkatan -
  • Memetakan "security_result.alert_state" ke "ALERTING" jika "alert" sama dengan "yes".
  • Memetakan "security_result.alert_state" ke "NOT_ALERTING" jika "alert" sama dengan "no".
  • Memetakan "security_result.alert_state" ke "UNSPECIFIED" jika "alert" null.

2022-07-23

  • Menghapus pemetaan yang tidak diperlukan untuk "metadata.description".

2022-07-01

  • Kolom "os" dipetakan ke "principal.platform".
  • Kolom "dsthost" dipetakan ke "target.ip" jika "dsthost" adalah IP, jika tidak, dipetakan ke "target.hostname".
  • Kolom "dstport" dipetakan ke "target.port".
  • Kolom "srcport" dipetakan ke "principal.port".
  • Kolom "user" dipetakan ke "principal.user.email_addresses", jika "user" adalah alamat email yang valid.
  • Kolom "src_latitude" dipetakan ke "principal.location.region_latitude".
  • Kolom "src_longitude" dipetakan ke "principal.location.region_longitude".
  • Kolom "ip_protocol" dipetakan ke "network.ip_protocol".
  • Kolom "client_bytes" dipetakan ke "network.received_bytes".
  • Kolom "server_bytes" dipetakan ke "network.sent_bytes".
  • Kolom "browser_session_id" dipetakan ke "network.session_id".
  • Kolom "network_session_id" dipetakan ke "network.session_id".
  • Kolom "appcategory" dipetakan ke "security_result.category_details".
  • Kolom "publisher_cn" dipetakan ke "additional.fields[n]".
  • Kolom "publisher_name" dipetakan ke "additional.fields[n]".
  • Kolom "tunnel_id" dipetakan ke "additional.fields[n]".
  • Kolom "tunnel_type" dipetakan ke "additional.fields[n]".
  • Mengubah pemetaan untuk kolom "shared_with" dari "intermediary.user.email_addresses" menjadi "network.email.to".
  • Mengubah pemetaan untuk kolom "network.email.to" dari "principal.user.email_addresses" menjadi "network.email.from".
  • Menambahkan pemeriksaan bersyarat untuk kolom "_severity", "shared_with", "from_user", "protocol".
  • Mengubah "metadata.event_type" untuk kasus berikut:
  • "GENERIC_EVENT" ke "NETWORK_HTTP" dengan "principal.ip or principal.hostname" dan "target.ip or target.hostname" tidak null.
  • "GENERIC_EVENT" ke "STATUS_UPDATE" dengan "principal.ip atau principal.hostname" tidak null.
  • "GENERIC_EVENT" ke "USER_UNCATEGORIZED" dengan "principal.user.userid" tidak null.

2022-06-17

  • Perbaikan Bug:
  • Menambahkan pemeriksaan bersyarat untuk "md5" == "not available".