Mengumpulkan log Jenkins
Ringkasan
Parser ini mengekstrak informasi utama seperti stempel waktu, ID pengguna, IP sumber, tindakan, dan ID objek dari log berformat JSON dan SYSLOG. Parser ini menggunakan pola grok untuk mencocokkan berbagai format pesan log, menangani variasi dalam struktur, dan mengisi model data terpadu (UDM) dengan kolom yang diekstrak. Parser juga mengategorikan peristiwa berdasarkan keberadaan informasi pengguna atau IP.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke Google Cloud IAM.
- Akses istimewa ke Google Cloud Storage.
- Akses istimewa ke Jenkins.
Membuat Google Cloud Bucket Storage
- Buka Cloud Storage.
- Buat bucket baru. Pilih nama unik dan region yang sesuai.
- Pastikan bucket memiliki kontrol akses yang tepat (misalnya, hanya akun layanan yang diberi otorisasi yang dapat menulis ke bucket).
Buat Google Cloud Akun layanan
- Buka IAM & Admin > Service Accounts.
- Buat akun layanan baru. Beri nama deskriptif (misalnya, jenkins-logs).
- Beri akun layanan peran Storage Object Creator di bucket GCS yang Anda buat pada langkah sebelumnya.
- Buat kunci SSH untuk akun layanan Anda: Membuat dan menghapus kunci akun layanan.
Download file kunci JSON untuk akun layanan.
Menginstal plugin Google Cloud Storage di Jenkins
- Buka Manage Jenkins > Plugins.
- Pilih Plugin yang tersedia.
- Telusuri plugin Google Cloud Storage.
- Instal plugin dan mulai ulang Jenkins jika diperlukan.
Menginstal Plugin Kredensial OAuth Google di Jenkins
- Buka Manage Jenkins > Plugins.
- Pilih Plugin yang tersedia
- Telusuri plugin Google OAuth Credentials.
- Instal plugin dan mulai ulang Jenkins jika diperlukan.
Mengonfigurasi Jenkins untuk melakukan autentikasi dengan Google Cloud
Buka Manage Jenkins > Credentials > System.
Klik add Add Credentials.
Kind: pilih Google Service Account from private key.
Nama project: tetapkan nama untuk kredensial.
Upload file kunci JSON yang Anda peroleh selama Google Cloud Pembuatan akun layanan.
Klik Buat.
Mengonfigurasi log Jenkins untuk mengupload Google SecOps
- Dalam konfigurasi tugas Jenkins, tambahkan Google Storage Build Log Upload di tindakan pasca-build, dengan parameter berikut:
- Google Credentials: Nama kredensial Google yang Anda buat di langkah sebelumnya.
- Nama Log: Nama file untuk menyimpan log build Jenkins, di jalur penyimpanan yang ditentukan.
- Lokasi Penyimpanan: Nama bucket tempat Anda ingin mengupload log. Bucket harus dapat diakses oleh akun layanan yang Anda buat.
- Uji upload log.
Menyiapkan 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 Jenkins.
- Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih Jenkins sebagai Jenis log.
- Klik Dapatkan Akun Layanan sebagai Akun Layanan Chronicle.
Tentukan nilai untuk parameter input berikut:
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
gs://my-bucket/<value>/
. URL ini harus diakhiri dengan garis miring (/). - Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
Klik Buat Feed.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
act | security_result.action_details | Diekstrak dari kolom msg1 atau msg2. Mewakili tindakan yang dilakukan. Spasi kosong di awal dihapus. |
data | principal.user.userid ATAU principal.ip ATAU metadata.description | Jika data cocok dengan pola alamat IP, data tersebut dipetakan ke principal.ip. Jika cocok dengan pola nama pengguna, maka akan dipetakan ke principal.user.userid. Jika tidak, akan dipetakan ke metadata.description. |
msg1 | target.asset.product_object_id ATAU security_result.action_details | Digunakan untuk mengekstrak object dan act. Jika ada / , maka akan dibagi menjadi object dan act. Jika ada » , maka akan dibagi menjadi object dan act. Jika tidak, maka akan diperlakukan sebagai act dan berpotensi diuraikan lebih lanjut. |
msg2 | metadata.description ATAU security_result.action_details | Jika ada, awalnya dipetakan ke metadata.description. Jika berisi "completed:", nilai setelahnya akan diekstrak dan dipetakan ke security_result.action_details. |
object | target.asset.product_object_id | Diekstrak dari msg1. Mewakili objek yang ditindaklanjuti. |
object_id | target.resource.attribute.labels.value | Diekstrak dari object jika ada / . Mewakili ID objek yang lebih spesifik. Kunci di-hardcode sebagai "Nama Plugin". |
src_ip | principal.ip | Diekstrak dari pesan atau data. Mewakili alamat IP sumber. |
pengguna | principal.user.userid | Diekstrak dari pesan atau data. Mewakili pengguna yang terkait dengan acara. |
metadata.event_timestamp | Disalin dari kolom @timestamp kalkulasi. | |
metadata.event_type | Ditentukan oleh logika parser. Disetel ke USER_UNCATEGORIZED jika user ada, STATUS_UNCATEGORIZED jika src_ip ada, dan GENERIC_EVENT jika tidak. | |
metadata.product_name | Hardcode sebagai Jenkins. | |
metadata.product_version | Hardcode sebagai Jenkins. | |
metadata.vendor_name | Hardcode sebagai JENKINS. | |
metadata.event_timestamp | Dibuat dari kolom year, month, day, time, dan ampm. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.