Mengumpulkan log Atlassian Jira
Ringkasan
Parser ini menangani log Atlassian Jira dalam format SYSLOG dan JSON. Pertama-tama, pesan akan diurai sebagai JSON. Jika gagal, alat ini akan menggunakan pola grok untuk mengurai pesan berformat SYSLOG, mengekstrak berbagai kolom seperti alamat IP, nama pengguna, metode HTTP, dan kode respons sebelum memetakannya ke UDM. Parser juga menangani peristiwa audit Jira tertentu, termasuk keberhasilan dan kegagalan login, serta memetakan kolom yang relevan ke atribut hasil keamanan dalam UDM.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke Atlassian Jira.
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 Nama feed, masukkan nama untuk feed (misalnya, Log Atlassian Jira).
- Pilih Webhook sebagai Jenis sumber.
- Pilih Atlassian Jira sebagai Jenis log.
- Klik Berikutnya.
- Opsional: tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti
\n
. - Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Pemisah pemisahan: pemisah yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Selesaikan, lalu klik Kirim.
- 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.
- Di tab Detail, salin URL endpoint feed dari kolom Informasi Endpoint. Anda perlu menentukan URL endpoint ini di aplikasi klien Anda.
- Klik Selesai.
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.
Tentukan URL endpoint
- Di aplikasi klien Anda, tentukan URL endpoint HTTPS yang disediakan di feed webhook.
Aktifkan autentikasi dengan menentukan kunci API dan kunci rahasia 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 Jira untuk Google SecOps
- Akses instance Jira Anda sebagai administrator.
- Buka Setelan settings > Sistem > WebHooks.
- Klik Create a WebHook.
- Konfigurasikan detail webhook berikut:
- Nama: Berikan nama deskriptif untuk webhook (misalnya, Integrasi Google SecOps).
- URL: Masukkan URL endpoint Google SecOps API.
- Peristiwa: Pilih peristiwa Jira yang akan memicu webhook. Pilih peristiwa yang relevan dengan kebutuhan pemantauan keamanan Anda (Misalnya, masalah dibuat, masalah diperbarui, komentar ditambahkan). Anda dapat memilih Semua Peristiwa jika diperlukan.
- Opsional: Filter JQL: Gunakan filter JQL untuk lebih menyaring peristiwa yang memicu webhook. Hal ini berguna untuk berfokus pada project, jenis masalah, atau kriteria lainnya.
- Kecualikan isi: Biarkan tidak dicentang. Webhook harus mengirimkan data peristiwa dalam format JSON ke Google SecOps.
- Klik Buat untuk menyimpan konfigurasi webhook.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
affectedObjects.id |
target.resource.attribute.labels.value |
Kolom id dalam setiap objek array affectedObjects dipetakan ke label dengan kunci "ID_[index]" dengan [index] adalah posisi objek dalam array. |
affectedObjects.name |
target.resource.attribute.labels.value |
Kolom name dalam setiap objek array affectedObjects dipetakan ke label dengan kunci "Name_[index]" dengan [index] adalah posisi objek dalam array. |
affectedObjects.type |
target.resource.attribute.labels.value |
Kolom type dalam setiap objek array affectedObjects dipetakan ke label dengan kunci "Type_[index]" dengan [index] adalah posisi objek dalam array. |
associatedItems.0.id |
target.user.userid |
Jika associatedItems.0.typeName adalah "USER", kolom ini dipetakan ke target.user.userid . Jika tidak, item dipetakan ke label dengan kunci "associatedItems Id" di security_result.detection_fields . |
associatedItems.0.name |
target.user.user_display_name |
Jika associatedItems.0.typeName adalah "USER", kolom ini dipetakan ke target.user.user_display_name . Jika tidak, item tersebut dipetakan ke label dengan kunci "associatedItems Name" di security_result.detection_fields . |
associatedItems.0.parentId |
target.process.parent_process.pid |
Jika associatedItems.0.typeName adalah "USER", kolom ini dipetakan ke target.process.parent_process.pid . |
associatedItems.0.parentName |
target.resource.parent |
Jika associatedItems.0.typeName adalah "USER", kolom ini dipetakan ke target.resource.parent . |
associatedItems.0.typeName |
security_result.detection_fields.value |
Dipetakan ke label dengan kunci "associatedItems TypeName" di security_result.detection_fields . |
author.id |
principal.user.userid |
Dipetakan ke principal.user.userid . |
author.name |
principal.user.user_display_name |
Dipetakan ke principal.user.user_display_name . |
author.type |
principal.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Jenis Penulis" di principal.resource.attribute.labels . |
author.uri |
principal.url |
Dipetakan ke principal.url . |
authorAccountId |
principal.user.userid |
Dipetakan ke principal.user.userid . |
authorKey |
target.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Author Key" di target.resource.attribute.labels . |
auditType.action |
security_result.summary |
Dipetakan ke security_result.summary . Juga digunakan untuk mendapatkan security_result.action dan metadata.event_type (USER_LOGIN jika tindakan berisi "login", ALLOW jika "berhasil", BLOCK jika "gagal"). |
auditType.area |
metadata.product_event_type |
Dipetakan ke metadata.product_event_type . |
auditType.category |
security_result.category_details |
Dipetakan ke security_result.category_details . |
category |
metadata.product_event_type |
Dipetakan ke metadata.product_event_type . |
changedValues.changedFrom |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Diubah Dari" di security_result.about.resource.attribute.labels . |
changedValues.changedTo |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Diubah Menjadi" di security_result.about.resource.attribute.labels . |
changedValues.fieldName |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "FieldName" di security_result.about.resource.attribute.labels . |
changedValues.i18nKey |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "FieldName" di security_result.about.resource.attribute.labels . |
changedValues.key |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Diubah Dari" di security_result.about.resource.attribute.labels . |
changedValues.to |
security_result.about.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Diubah Menjadi" di security_result.about.resource.attribute.labels . |
created |
metadata.event_timestamp |
Diuraikan dan dipetakan ke metadata.event_timestamp . |
dst_ip |
target.ip |
Dipetakan ke target.ip . |
extraAttributes.name |
principal.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Name" di principal.resource.attribute.labels . |
extraAttributes.value |
principal.resource.attribute.labels.value |
Dipetakan ke label dengan kunci "Nilai" di principal.resource.attribute.labels . |
http_method |
network.http.method |
Dipetakan ke network.http.method . |
http_referral_url |
network.http.referral_url |
Dipetakan ke network.http.referral_url . |
id |
metadata.product_log_id |
Dipetakan ke metadata.product_log_id . |
objectItem.id |
security_result.detection_fields.value |
Dipetakan ke label dengan kunci "objectItem Id" di security_result.detection_fields . |
objectItem.name |
security_result.detection_fields.value |
Dipetakan ke label dengan kunci "objectItem Name" di security_result.detection_fields . |
objectItem.typeName |
security_result.detection_fields.value |
Dipetakan ke label dengan kunci "objectItem TypeName" di security_result.detection_fields . |
path |
principal.url |
Jika bukan "-" atau "/status", dipetakan ke principal.url . |
protocol |
network.ip_protocol |
Jika "HTTP", dipetakan ke network.ip_protocol . |
remoteAddress |
principal.ip |
Dipetakan ke principal.ip . |
response_code |
network.http.response_code |
Dipetakan ke network.http.response_code . |
sent_bytes |
network.sent_bytes |
Dipetakan ke network.sent_bytes . |
source |
principal.ip |
Diuraikan untuk mengekstrak alamat IP dan digabungkan ke dalam principal.ip . |
src_ip1 , src_ip2 , src_ip3 |
principal.ip |
Dipetakan ke principal.ip . |
summary |
metadata.description |
Dipetakan ke metadata.description . |
user_agent |
network.http.user_agent |
Dipetakan ke network.http.user_agent . |
user_name |
principal.user.userid |
Dipetakan ke principal.user.userid . Tetapkan ke "MACHINE" jika auditType.action berisi "login". Berasal dari date_time jika mengurai syslog, atau created jika mengurai JSON. Jika timestamp tersedia di JSON, timestamp akan digunakan, bukan created . Jika tidak ada yang ada, create_time dari batch akan digunakan. Diperoleh berdasarkan keberadaan kolom lain: NETWORK_HTTP jika dst_ip ada, USER_UNCATEGORIZED jika user_name atau (associatedItems.0.typeName adalah "USER" dan associatedItems.0.id ada) ada, STATUS_UPDATE jika src_ip1 , src_ip2 , src_ip3 , atau remoteAddress ada, atau GENERIC_EVENT jika tidak. Diganti menjadi USER_LOGIN jika auditType.action berisi "login". Selalu ditetapkan ke "ATLASSIAN_JIRA". Selalu ditetapkan ke "ATLASSIAN_JIRA". Tetapkan ke "ALLOW" jika auditType.action berisi "login berhasil", "BLOCK" jika auditType.action berisi "login gagal". |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.