Mengumpulkan log Atlassian Bitbucket
Ringkasan
Parser ini mengekstrak kolom dari log JSON Atlassian Bitbucket dan memetakan kolom tersebut ke UDM. Fungsi ini menangani berbagai format log, mengisi entitas utama atau target berdasarkan kolom yang tersedia seperti alamat IP, ID pengguna, dan informasi aset. Fitur ini juga mengategorikan peristiwa berdasarkan aktivitas jaringan dan pengguna serta memperkaya data dengan temuan keamanan, jika ada. Parser memprioritaskan agentRealtimeInfo
daripada agentDetectionInfo
saat mengisi kolom.
Sebelum memulai
- Pastikan Anda memiliki instance Google Chronicle.
- Pastikan Anda memiliki akses dengan hak istimewa ke repositori di dalamnya.
Mengonfigurasi feed di Google SecOps untuk menyerap log Atlassian Bitbucket
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, Atlassian Bitbucket Logs).
- Pilih Webhook sebagai Jenis sumber.
- Pilih Atlassian Bitbucket sebagai Jenis log.
- Klik Berikutnya.
- Opsional: tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
\n
. - Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
- Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Konsol Google Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ganti kode berikut:
ENDPOINT_URL
: URL endpoint feed.API_KEY
: kunci API untuk mengautentikasi ke Google Security Operations.SECRET
: kunci rahasia yang Anda buat untuk mengautentikasi feed.
Membuat webhook di Atlassian Bitbucket
- Di Bitbucket, buka setelan repositori.
- Klik Webhooks di bagian Workflow.
- Klik Tambahkan webhook.
- Konfigurasikan kolom berikut:
- Judul: Berikan nama deskriptif (Misalnya, Google SecOps).
- URL: Masukkan URL endpoint Google SecOps API.
- Status: Tetapkan ke Aktif.
- Pemicu: Pilih peristiwa yang relevan.
- Klik Simpan.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
agentComputerName |
principal.hostname |
Diisi dari agentRealtimeInfo.agentComputerName . |
agentDetectionInfo.accountId |
metadata.product_deployment_id |
Dikonversi ke string. Digunakan jika agentRealtimeInfo.accountId tidak ada. |
agentDetectionInfo.accountName |
metadata.product_name |
Digunakan jika agentRealtimeInfo.accountName tidak ada. |
agentDetectionInfo.agentDomain |
principal.administrative_domain |
Dipetakan secara langsung. |
agentDetectionInfo.agentIpV4 |
target.ip |
Diekstrak dari array JSON dan digabungkan ke dalam kolom target.ip . |
agentDetectionInfo.agentIpV6 |
principal.ip |
Diekstrak dari array JSON dan digabungkan ke dalam kolom principal.ip . |
agentDetectionInfo.agentLastLoggedInUserName |
principal.user.userid |
Diurai untuk mengekstrak userid dan domain (jika ada). Jika tidak ada domain, langsung dipetakan ke principal.user.userid . |
agentDetectionInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Digunakan jika agentRealtimeInfo.agentOsName tidak ada. |
agentDetectionInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Digunakan jika agentRealtimeInfo.agentOsRevision tidak ada. |
agentDetectionInfo.agentRegisteredAt |
principal.asset.first_discover_time |
Diurai sebagai stempel waktu ISO8601. |
agentDetectionInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Digunakan jika agentRealtimeInfo.agentUuid tidak ada. Diawali dengan "agentUuid:". |
agentDetectionInfo.agentVersion |
metadata.product_version |
Digunakan jika agentRealtimeInfo.agentVersion tidak ada. |
agentDetectionInfo.externalIp |
target.ip |
Dipetakan secara langsung. |
agentDetectionInfo.groupId |
principal.user.group_identifiers |
Digabung ke dalam kolom jika tidak kosong atau "-". Digunakan jika agentRealtimeInfo.groupId tidak ada. |
agentDetectionInfo.groupName |
principal.group.group_display_name |
Digunakan jika agentRealtimeInfo.groupName tidak ada. |
agentDetectionInfo.siteId |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "agentDetectionInfo.siteId". Digunakan jika agentRealtimeInfo.siteId tidak ada. |
agentDetectionInfo.siteName |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "agentDetectionInfo.siteName". Digunakan jika agentRealtimeInfo.siteName tidak ada. |
agentRealtimeInfo.accountId |
metadata.product_deployment_id |
Dikonversi ke string. |
agentRealtimeInfo.accountName |
metadata.product_name |
Dipetakan secara langsung. |
agentRealtimeInfo.agentComputerName |
principal.hostname , principal.asset.hostname |
Dipetakan secara langsung. |
agentRealtimeInfo.agentId |
principal.asset_id , principal.asset.asset_id |
Diawali dengan "agentId:". |
agentRealtimeInfo.agentMachineType |
principal.asset.category |
Dipetakan secara langsung. |
agentRealtimeInfo.agentOsName |
principal.platform_version , principal.asset.platform_software.platform_version |
Dipetakan secara langsung. |
agentRealtimeInfo.agentOsRevision |
principal.platform_patch_level , principal.asset.platform_software.platform_patch_level |
Dipetakan secara langsung. |
agentRealtimeInfo.agentOsType |
principal.asset.platform_software.platform , principal.platform |
Dipetakan ke WINDOWS, MAC, atau LINUX berdasarkan nilai. |
agentRealtimeInfo.agentUuid |
principal.asset_id , principal.asset.asset_id |
Dipetakan secara langsung. Diawali dengan "agentUuid:". |
agentRealtimeInfo.agentVersion |
metadata.product_version |
Dipetakan secara langsung. |
agentRealtimeInfo.groupId |
principal.user.group_identifiers |
Digabung ke dalam kolom jika tidak kosong atau "-". |
agentRealtimeInfo.groupName |
principal.group.group_display_name |
Dipetakan secara langsung. |
agentRealtimeInfo.siteId |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "agentDetectionInfo.siteId". |
agentRealtimeInfo.siteName |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "agentDetectionInfo.siteName". |
associatedItems.0.id |
principal.resource.id |
Dipetakan secara langsung. |
associatedItems.0.name |
principal.resource.name |
Dipetakan secara langsung. |
associatedItems.0.typeName |
principal.resource.resource_subtype |
Dipetakan secara langsung. |
authorAccountId |
principal.user.userid |
Dipetakan secara langsung. |
category |
metadata.product_event_type |
Dipetakan secara langsung. Jika tidak ada dan pesan berisi "ancaman", tetapkan ke "Ancaman". |
id |
metadata.product_log_id |
Dikonversi ke string. |
indicators.0.description |
security_result.description |
Dipetakan secara langsung. |
objectItem.id |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "objectItem.id". |
objectItem.name |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "objectItem.name". |
objectItem.typeName |
additional.fields |
Ditambahkan sebagai pasangan nilai kunci dengan kunci "objectItem.typeName". |
remoteAddress |
principal.ip |
Dipetakan secara langsung. |
summary |
security_result.summary |
Dipetakan secara langsung. |
threatInfo.classification |
security_result.category_details |
Dipetakan secara langsung. Juga digunakan untuk menentukan security_result.category . |
threatInfo.collectionId |
metadata.ingestion_labels |
Ditambahkan sebagai key-value pair dengan kunci "alert_aggregation_value". |
threatInfo.confidenceLevel |
security_result.confidence_details |
Dipetakan secara langsung. Juga digunakan untuk menentukan security_result.confidence . |
threatInfo.createdAt |
metadata.collected_timestamp |
Diurai sebagai stempel waktu ISO8601. |
threatInfo.detectionEngines |
metadata.ingestion_labels |
key dan title setiap elemen ditambahkan sebagai key-value pair. |
threatInfo.fileExtensionType |
target.process.file.mime_type |
Dipetakan secara langsung. |
threatInfo.filePath |
target.file.full_path |
Dipetakan secara langsung. |
threatInfo.fileSize |
target.file.size |
Dikonversi menjadi string, lalu menjadi bilangan bulat tanpa tanda tangan. |
threatInfo.identifiedAt |
event_timestamp |
Diurai sebagai stempel waktu ISO8601. |
threatInfo.maliciousProcessArguments |
principal.process.command_line |
Dipetakan secara langsung. Juga digunakan di kolom security_result.summary jika summary tidak ada. |
threatInfo.md5 |
target.file.md5 |
Dipetakan secara langsung. |
threatInfo.originatorProcess |
target.process.parent_process.file.full_path |
Dipetakan secara langsung. Juga digunakan di kolom security_result.summary jika summary tidak ada. |
threatInfo.processUser |
target.user.userid |
Dipetakan secara langsung. |
threatInfo.sha1 |
target.file.sha1 |
Dipetakan secara langsung. |
threatInfo.sha256 |
target.file.sha256 |
Dipetakan secara langsung. |
threatInfo.storyline |
principal.process.product_specific_process_id |
Diawali dengan "ID:". |
threatInfo.threatId |
security_result.threat_id |
Dipetakan secara langsung. |
threatInfo.threatName |
security_result.threat_name , target.file.names |
Dipetakan dan digabungkan langsung ke target.file.names . Juga digunakan di kolom security_result.summary jika summary tidak ada. Tetapkan ke "GENERIC_EVENT" pada awalnya. Diubah menjadi "NETWORK_UNCATEGORIZED", "STATUS_UPDATE", atau "USER_UNCATEGORIZED" berdasarkan keberadaan akun utama dan IP/nama host/pengguna target. Disalin dari kolom event.type . Tetapkan ke "Atlassian Bitbucket". Tetapkan ke "Atlassian Bitbucket" pada awalnya. Dapat diganti oleh agentRealtimeInfo.accountName atau agentDetectionInfo.accountName . |
timestamp |
metadata.event_timestamp , timestamp |
Dipetakan secara langsung. |
Perubahan
2023-06-12
- Parser yang baru dibuat.