Mengumpulkan log Jenkins
Ringkasan
Parser ini mengekstrak informasi penting seperti stempel waktu, ID pengguna, IP sumber, tindakan, dan ID objek dari log berformat JSON dan SYSLOG. Fungsi ini menggunakan pola grok untuk mencocokkan berbagai format pesan log, menangani variasi struktur, dan mengisi unified data model (UDM) dengan kolom yang diekstrak. Parser juga mengategorikan peristiwa berdasarkan keberadaan informasi pengguna atau IP.
Sebelum memulai
- Pastikan Anda memiliki instance Google Chronicle.
- Pastikan Anda memiliki akses dengan hak istimewa ke Google Cloud IAM.
- Pastikan Anda memiliki akses dengan hak istimewa ke Google Cloud Storage.
- Pastikan Anda memiliki akses dengan hak istimewa ke Jenkins.
Membuat Bucket Google Cloud Storage
- Buka Cloud Storage.
- Buat bucket baru. Pilih nama yang unik dan region yang sesuai.
- Pastikan bucket memiliki kontrol akses yang tepat (misalnya, hanya akun layanan yang diberi otorisasi yang dapat menulis ke bucket tersebut).
Membuat akun Layanan Google Cloud
- Buka IAM & Admin > Service Accounts.
- Buat akun layanan baru. Beri nama deskriptif (misalnya, jenkins-logs).
- Berikan peran Storage Object Creator ke akun layanan di bucket GCS yang Anda buat pada langkah sebelumnya.
- Buat kunci SSH untuk akun layanan Anda: Membuat dan menghapus kunci akun layanan.
Mendownload 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 Kredensial Google OAuth.
- Instal plugin dan mulai ulang Jenkins jika diperlukan.
Mengonfigurasi Jenkins untuk melakukan autentikasi dengan Google Cloud
Buka Kelola Jenkins > Kredensial > Sistem.
Klik add Add Credentials.
Kind: pilih Google Service Account from private key.
Project name: tetapkan nama untuk kredensial.
Upload file kunci JSON yang Anda peroleh selama pembuatan Akun layanan Google Cloud.
Klik Buat.
Mengonfigurasi log Jenkins untuk mengupload Google SecOps
- Di konfigurasi tugas Jenkins, tambahkan Google Storage Build Log Upload dalam tindakan pasca-build, dengan parameter berikut:
- Kredensial Google: Nama kredensial Google yang Anda buat di langkah sebelumnya.
- Nama Log: Nama file untuk menyimpan log build Jenkins, di jalur penyimpanan yang ditentukan.
- Storage Location: Nama bucket tempat Anda ingin mengupload log. Bucket harus dapat diakses oleh akun layanan yang Anda buat.
- Uji upload log.
Mengonfigurasi feed di Google SecOps untuk menyerap log Jenkins
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Feed name, masukkan nama untuk feed (misalnya, Jenkins Logs).
- Pilih Google Cloud Storage sebagai Source type.
- Pilih Jenkins sebagai Jenis log.
- Klik Get Service Account sebagai Chronicle Service Account.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Storage Bucket URI: URL bucket penyimpanan Google Cloud dalam format
gs://my-bucket/<value>
. - URI adalah: pilih Direktori yang menyertakan subdirektori.
- Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
- Namespace aset: namespace aset.
- Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
- Storage Bucket URI: URL bucket penyimpanan Google Cloud dalam format
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
act | security_result.action_details | Diekstrak dari kolom msg1 atau msg2. Merepresentasikan 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 akan dipetakan ke principal.ip. Jika cocok dengan pola nama pengguna, nama pengguna akan dipetakan ke principal.user.userid. Jika tidak, kolom ini akan dipetakan ke metadata.description. |
msg1 | target.asset.product_object_id ATAU security_result.action_details | Digunakan untuk mengekstrak object dan act. Jika ada / , / akan dibagi menjadi object dan act. Jika ada » , » akan dibagi menjadi object dan act. Jika tidak, » 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. |
objek | 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. Merepresentasikan alamat IP sumber. |
pengguna | principal.user.userid | Diekstrak dari pesan atau data. Mewakili pengguna yang terkait dengan peristiwa. |
metadata.event_timestamp | Disalin dari kolom @stempel waktu yang dihitung. | |
metadata.event_type | Ditentukan oleh logika parser. Tetapkan ke USER_UNCATEGORIZED jika user ada, STATUS_UNCATEGORIZED jika src_ip ada, dan GENERIC_EVENT jika tidak. | |
metadata.product_name | Di-hardcode sebagai Jenkins. | |
metadata.product_version | Di-hardcode sebagai Jenkins. | |
metadata.vendor_name | Di-hardcode sebagai JENKINS. | |
metadata.event_timestamp | Dibuat dari kolom year, month, day, time, dan ampm. |
Perubahan
2023-11-27
- Parser yang baru dibuat.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.