Mengumpulkan log Cloud Run
Panduan ini menjelaskan cara mengekspor log Cloud Run ke Google Security Operations menggunakan Cloud Storage. Parser mengekstrak kolom dari log JSON, lalu mengubahnya menjadi Unified Data Model (UDM). Parser ini menangani berbagai format log, termasuk data permintaan HTTP dan log audit sistem, memetakan kolom yang relevan ke UDM, sekaligus memperkaya data dengan label dan metadata khusus untuk Cloud Run.
Sebelum Memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps.
- Cloud Run disiapkan dan aktif di lingkungan Google Cloud Anda.
- Akses istimewa ke Google Cloud.
Membuat Bucket Google Cloud Storage
- Login ke Google Cloud konsol.
Buka halaman Cloud Storage Buckets.
Klik Buat.
Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah menyelesaikan setiap langkah berikut, klik Continue untuk melanjutkan ke langkah berikutnya:
Di bagian Mulai, lakukan tindakan berikut:
- Masukkan nama unik yang memenuhi persyaratan nama bucket; misalnya, cloudrun-logs.
Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan bagian Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan namespace hierarkis di bucket ini.
Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Labels.
Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.
Di bagian Pilih tempat untuk menyimpan data Anda, lakukan tindakan berikut:
- Pilih Jenis lokasi.
Gunakan menu jenis lokasi untuk memilih Location tempat data objek dalam bucket Anda akan disimpan secara permanen.
Untuk menyiapkan replikasi lintas bucket, luaskan bagian Siapkan replikasi lintas bucket.
Di bagian Pilih kelas penyimpanan untuk data Anda, pilih kelas penyimpanan default untuk bucket, atau pilih Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.
Di bagian Pilih cara mengontrol akses ke objek, pilih tidak untuk menerapkan pencegahan akses publik, lalu pilih model kontrol akses untuk objek bucket Anda.
Di bagian Pilih cara melindungi data objek, lakukan hal berikut:
- Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
- Untuk memilih cara data objek Anda akan dienkripsi, klik panah peluas berlabel Data encryption, lalu pilih Data encryption method.
Klik Create.
Mengonfigurasi Ekspor Log di Cloud Run
- Di halaman Google Cloud Welcome, klik ikon Cloud Run.
- Telusuri Logging di kotak penelusuran di bagian atas, lalu klik Enter.
- Di Log Explorer, filter log dengan memilih Cloud Run di Log Name, lalu klik Apply.
- Klik More Actions > Create Sink dari menu.
- Berikan konfigurasi berikut:
- Sink Details: masukkan nama dan deskripsi.
- Klik Berikutnya.
- Sink Destination: pilih bucket Cloud Storage.
- Cloud Storage Bucket: pilih bucket Cloud Storage yang dibuat sebelumnya atau buat bucket Cloud Storage baru.
- Klik Berikutnya.
- Pilih Log untuk disertakan dalam Sink: log default akan diisi saat Anda memilih opsi di bucket Cloud Storage.
- Klik Berikutnya.
- Opsional: Pilih Log yang akan dikecualikan dari Sink: pilih log yang tidak ingin Anda sinkronkan.
- Klik Create Sink.
Menyiapkan feed
Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:
- Buka SIEM Settings > Feeds.
- Klik Tambahkan Feed Berita Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Feed name, masukkan nama untuk feed; misalnya, Cloud Run Logs.
- Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih GCP Cloud Run sebagai Log type.
- Klik Get Service Account sebagai Chronicle Service Account.
- Klik Berikutnya.
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.
Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
- URI Bucket Penyimpanan:URL bucket penyimpanan Google Cloud dalam format
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel Pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
httpRequest.latency |
target.resource.attribute.labels.[] |
Nilai httpRequest.latency dari log mentah digunakan sebagai nilai untuk label dengan kunci http_request_latency dalam target.resource.attribute.labels. |
httpRequest.protocol |
network.application_protocol |
Jika httpRequest.protocol berisi HTTP, kolom UDM ditetapkan ke HTTP. |
httpRequest.remoteIp |
principal.asset.ip |
Nilai httpRequest.remoteIp dari log mentah digunakan. |
httpRequest.remoteIp |
principal.ip |
Nilai httpRequest.remoteIp dari log mentah digunakan. |
httpRequest.requestMethod |
network.http.method |
Nilai httpRequest.requestMethod dari log mentah digunakan. |
httpRequest.requestSize |
network.sent_bytes |
Nilai httpRequest.requestSize dari log mentah dikonversi menjadi bilangan bulat yang tidak bertanda tangan dan digunakan. |
httpRequest.requestUrl |
target.url |
Nilai httpRequest.requestUrl dari log mentah digunakan. |
httpRequest.responseSize |
network.received_bytes |
Nilai httpRequest.responseSize dari log mentah dikonversi menjadi bilangan bulat yang tidak bertanda tangan dan digunakan. |
httpRequest.serverIp |
target.asset.ip |
Nilai httpRequest.serverIp dari log mentah digunakan. |
httpRequest.serverIp |
target.ip |
Nilai httpRequest.serverIp dari log mentah digunakan. |
httpRequest.status |
network.http.response_code |
Nilai httpRequest.status dari log mentah dikonversi menjadi bilangan bulat dan digunakan. |
httpRequest.userAgent |
network.http.parsed_user_agent |
Nilai httpRequest.userAgent dari log mentah diuraikan sebagai string agen pengguna. |
httpRequest.userAgent |
network.http.user_agent |
Nilai httpRequest.userAgent dari log mentah digunakan. |
insertId |
metadata.product_log_id |
Nilai insertId dari log mentah digunakan. |
labels.instanceId |
additional.fields.[] |
Nilai labels.instanceId digunakan sebagai nilai untuk label dengan kunci instanceId dalam additional.fields. |
labels.run.googleapis.com_execution_name |
additional.fields.[] |
Nilai labels.run.googleapis.com_execution_name digunakan sebagai nilai untuk label dengan kunci execution_name dalam additional.fields. |
labels.run.googleapis.com_task_attempt |
additional.fields.[] |
Nilai labels.run.googleapis.com_task_attempt digunakan sebagai nilai untuk label dengan kunci task_attempt dalam additional.fields. |
labels.run.googleapis.com_task_index |
additional.fields.[] |
Nilai labels.run.googleapis.com_task_index digunakan sebagai nilai untuk label dengan kunci task_index dalam additional.fields. |
logName |
metadata.product_event_type |
Nilai logName dari log mentah digunakan. |
resource.labels.configuration_name |
target.resource.attribute.labels.[] |
Nilai resource.labels.configuration_name digunakan sebagai nilai untuk label dengan kunci configuration_name dalam target.resource.attribute.labels. |
resource.labels.job_name |
additional.fields.[] |
Nilai resource.labels.job_name digunakan sebagai nilai untuk label dengan kunci job_name dalam additional.fields. |
resource.labels.location |
target.location.name |
Nilai resource.labels.location dari log mentah digunakan. |
resource.labels.project_id |
target.resource.attribute.labels.[] |
Nilai resource.labels.project_id digunakan sebagai nilai untuk label dengan kunci project_id dalam target.resource.attribute.labels. |
resource.labels.revision_name |
target.resource.attribute.labels.[] |
Nilai resource.labels.revision_name digunakan sebagai nilai untuk label dengan kunci revision_name dalam target.resource.attribute.labels. |
resource.labels.service_name |
target.resource.attribute.labels.[] |
Nilai resource.labels.service_name digunakan sebagai nilai untuk label dengan kunci service_name dalam target.resource.attribute.labels. |
resource.type |
target.resource.resource_subtype |
Nilai resource.type dari log mentah digunakan. |
severity |
security_result.severity |
Jika nilai severity cocok dengan Info (tidak peka huruf besar/kecil), kolom UDM akan ditetapkan ke INFORMATIONAL. |
textPayload |
additional.fields.[] |
Nilai textPayload digunakan sebagai nilai untuk label dengan kunci Textpayload dalam additional.fields. |
timestamp |
metadata.event_timestamp |
Nilai timestamp dari log mentah diuraikan sebagai stempel waktu. |
timestamp |
timestamp |
Nilai timestamp dari log mentah diuraikan sebagai stempel waktu. Ditentukan oleh logika parser berdasarkan keberadaan kolom tertentu. Nilai defaultnya adalah GENERIC_EVENT. Jika has_principal_ip, has_target_ip, dan httpRequest.protocol cocok dengan HTTP, maka akan ditetapkan ke NETWORK_HTTP. Hardcode ke GCP_RUN. Dihardcode ke GCP_RUN. Hardcode ke Google Cloud Platform. Dihardcode ke GOOGLE_CLOUD_PLATFORM. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.