Mengumpulkan log Jenkins
Parser ini mengekstrak informasi penting 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 memiliki prasyarat berikut:
- Instance Google SecOps.
- Akses istimewa ke Google Cloud IAM.
- Akses istimewa ke Penyimpanan Google Cloud .
- Akses istimewa ke Jenkins.
Membuat Bucket Penyimpanan Google Cloud
- Buka Cloud Storage.
- Membuat 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 Google Cloud Layanan
- Buka IAM & Admin > Service Accounts.
- Buat akun layanan baru. Beri nama deskriptif (misalnya, jenkins-logs).
- Berikan peran Storage Object Creator kepada akun layanan di bucket GCS yang Anda buat di 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 Google OAuth Credentials 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.
Jenis: pilih Akun Layanan Google dari kunci pribadi.
Project name: tetapkan nama untuk kredensial.
Upload file kunci JSON yang Anda peroleh selama Google Cloud Pembuatan akun layanan.
Klik Create.
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.
- Log Name: 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.
- Menguji upload log.
Menyiapkan feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Klik Tambahkan Feed Berita Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed; misalnya, Jenkins Logs.
- Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih Jenkins sebagai Log type.
- Klik Get Service Account sebagai Chronicle Service Account.
Tentukan nilai untuk parameter input berikut:
- Storage Bucket URI: 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.
- Storage Bucket URI: 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 akan 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, ID tersebut 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 /, elemen ini akan dibagi menjadi object dan act. Jika ada », elemen ini akan dibagi menjadi object dan act. Jika tidak, elemen ini akan diperlakukan sebagai act dan berpotensi diurai 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 objek jika / ada. Mewakili ID objek yang lebih spesifik. Kunci di-hardcode sebagai "Plugin Name". |
| src_ip | principal.ip | Diekstrak dari pesan atau data. Mewakili alamat IP sumber. |
| user | principal.user.userid | Diekstrak dari pesan atau data. Menunjukkan pengguna yang terkait dengan peristiwa. |
| metadata.event_timestamp | Disalin dari kolom @timestamp 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 | Dihardcode sebagai Jenkins. | |
| metadata.product_version | Dihardcode sebagai Jenkins. | |
| metadata.vendor_name | Dihardcode sebagai JENKINS. | |
| metadata.event_timestamp | Dibuat dari kolom year, month, day, time, dan ampm. |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.