Mengumpulkan log Atlassian Bitbucket

Didukung di:

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

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Atlassian Bitbucket Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih Atlassian Bitbucket sebagai Jenis log.
  6. Klik Berikutnya.
  7. 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.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. 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.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. 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

  1. Di Bitbucket, buka setelan repositori.
  2. Klik Webhooks di bagian Workflow.
  3. Klik Tambahkan webhook.
  4. 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.
  5. 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.