Mengumpulkan log peringatan Netskope v1
Ringkasan
Parser ini mengekstrak log peringatan Netskope dari pesan berformat JSON, lalu mengubahnya menjadi UDM Google Security Operations. Proses 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 lebih baik.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke Netskope.
Mengaktifkan akses Netskope REST API
- Login ke tenant Netskope menggunakan kredensial administrator Anda.
- Buka Setelan > Alat > REST API v1.
- Buat kunci API baru khusus untuk Google SecOps.
- Berikan nama deskriptif (misalnya, Kunci Google SecOps).
- Salin dan simpan kunci dan rahasia yang dihasilkan.
Menyiapkan feed
Ada dua titik entri berbeda untuk menyiapkan feed di platform Google SecOps:
- Setelan SIEM > Feed
- Hub Konten > Paket Konten
Menyiapkan feed dari Setelan SIEM > Feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed; misalnya, Netskope Alert Logs.
- Pilih Third party API sebagai Source type.
- Pilih Netskope sebagai Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Header HTTP Autentikasi: pasangan kunci yang dihasilkan sebelumnya dalam format
<key>:<secret>
, digunakan untuk melakukan autentikasi terhadap Netskope API. - Nama Host API: FQDN (nama domain yang sepenuhnya memenuhi syarat) endpoint Netskope REST API Anda (misalnya
myinstance.goskope.com
). - Endpoint API: Masukkan alerts.
- Jenis Konten: Masukkan all.
- Header HTTP Autentikasi: pasangan kunci yang dihasilkan sebelumnya dalam format
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
Menyiapkan feed dari Hub Konten
Tentukan nilai untuk kolom berikut:
- Header HTTP Autentikasi: pasangan kunci yang dihasilkan sebelumnya dalam format
<key>:<secret>
, digunakan untuk melakukan autentikasi terhadap Netskope API. - Nama Host API: FQDN (nama domain yang sepenuhnya memenuhi syarat) endpoint Netskope REST API Anda (misalnya
myinstance.goskope.com
). - Endpoint API: Masukkan alerts.
- Jenis Konten: Masukkan all.
Opsi lanjutan
- Nama Feed: Nilai yang telah diisi otomatis yang mengidentifikasi feed.
- Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
- Namespace Aset: Namespace yang terkait dengan feed.
- Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.
Opsional: Tambahkan konfigurasi feed untuk menyerap log Peristiwa Netskope
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, Log Peristiwa Netskope).
- Pilih Third party API sebagai Source type.
- Pilih Netskope sebagai Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Header HTTP Autentikasi: pasangan kunci yang dihasilkan sebelumnya dalam format
<key>:<secret>
, digunakan untuk melakukan autentikasi terhadap Netskope API. - Nama Host API: FQDN (nama domain yang sepenuhnya memenuhi syarat) endpoint Netskope REST API Anda (misalnya
myinstance.goskope.com
). - Endpoint API: Masukkan events.
- Jenis Konten: Masukkan page, application, audit, infrastructure, atau network, bergantung pada peristiwa yang ingin Anda parsing.
- Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Header HTTP Autentikasi: pasangan kunci yang dihasilkan sebelumnya dalam format
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
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 adalah blokir. |
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 |
Ditetapkan 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 "unknown". |
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 : "rendah" atau "buruk" dipetakan ke LOW_CONFIDENCE , "sedang" ke MEDIUM_CONFIDENCE , "tinggi" atau "sangat baik" 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 tidak bertanda. |
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, atau 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 tidak bertanda. |
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, atau dari instance_id . |
hostname |
principal.hostname |
Dipetakan langsung dari kolom hostname jika tidak kosong, atau dari instance_id . |
id.time |
metadata.event_timestamp |
Diuraikan dan dipetakan ke event_timestamp 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 . |
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 menjadi 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 disetel 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 dstip , dsthost , atau domain . Tetapkan ke USER_UNCATEGORIZED jika user ada. Setel ke EMAIL_UNCATEGORIZED jika activity adalah "Introspection Scan" dan shared_with atau from_user ada. Disetel 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 |
Setel 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 |
Digabungkan dari kolom user jika berupa alamat email. |
protocol |
network.application_protocol |
Dipetakan langsung dari kolom protocol setelah menghapus semua yang ada setelah "/" pertama. Dikonversi menjadi 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 |
Ditetapkan ke "ALERTING" jika alert adalah "yes", "NOT_ALERTING" jika alert adalah "no", "UNSPECIFIED" jika tidak. |
security_result.category_details |
security_result.category_details |
Digabungkan dari kolom category atau appcategory atau alert_type . |
security_result.confidence |
security_result.confidence |
Diperoleh 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 |
Diperoleh 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 tidak bertanda. |
severity |
_severity |
Dipetakan langsung dari kolom severity . |
sha256 |
target.file.sha256 |
Dipetakan langsung dari kolom sha256 . |
shared_with |
network.email.to |
Diuraikan dari kolom shared_with dan ditambahkan ke array network.email.to jika berupa 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 |
Digabungkan dari kolom to_user jika berupa 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 |
Diuraikan dari kolom timestamp atau id.time . |
to_user |
target.user.email_addresses |
Diuraikan dari kolom to_user dan ditambahkan ke array target.user.email_addresses jika berupa 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 . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.