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, yang mengubahnya menjadi Unified Data Model (UDM). Fungsi ini menangani berbagai format log, termasuk data permintaan HTTP dan log audit sistem, yang memetakan kolom yang relevan ke UDM sekaligus memperkaya data dengan label dan metadata khusus untuk Cloud Run.
Sebelum Memulai
- Pastikan Anda memiliki instance Google Chronicle.
- Pastikan Cloud Run disiapkan dan aktif di lingkungan Google Cloud Anda.
- Pastikan Anda memiliki akses dengan hak istimewa ke Google Cloud.
Membuat Bucket Google Cloud Storage
- Login ke konsol Google Cloud.
Buka halaman Cloud Storage Buckets.
Klik Buat.
Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah menyelesaikan setiap langkah berikut, klik Lanjutkan 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 yang berorientasi pada 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, lakukan hal 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 Menyiapkan 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 Choose how to control access to objects, pilih not untuk menerapkan public access prevention, dan pilih access control model 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.
- Untuk memilih cara enkripsi data objek, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
Klik Buat.
Mengonfigurasi Ekspor Log di Cloud Run
- Di halaman Google Cloud Selamat datang, 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 Cloud Storage Bucket.
- Cloud Storage Bucket: pilih bucket yang dibuat sebelumnya atau buat bucket baru.
- Klik Berikutnya.
- Choose Logs to include in Sink: log default diisi saat Anda memilih opsi di Bucket Cloud Storage.
- Klik Berikutnya.
- Opsional: Choose Logs to filter out of Sink: pilih log yang tidak ingin Anda sink.
- Klik Create Sink.
Mengonfigurasi feed di Google SecOps untuk menyerap log Cloud Run
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed; misalnya, Cloud Run Logs.
- Pilih Google Cloud Storage sebagai Source type.
- Pilih GCP Cloud Run sebagai Jenis log.
- Klik Get Service Account sebagai Chronicle Service Account.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
- Storage Bucket URI: Google Cloud URL bucket penyimpanan 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: Google Cloud URL bucket penyimpanan dalam format
Klik Berikutnya.
Tinjau konfigurasi feed baru Anda di layar Finalize, lalu klik Submit.
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 tanpa tanda 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 tanpa tanda 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. Default-nya adalah GENERIC_EVENT . Jika has_principal_ip , has_target_ip , dan httpRequest.protocol cocok dengan HTTP , nilainya akan ditetapkan ke NETWORK_HTTP . Di-hardcode ke GCP_RUN . Di-hardcode ke GCP_RUN . Di-hardcode ke Google Cloud Platform . Di-hardcode ke GOOGLE_CLOUD_PLATFORM . |
Perubahan
2024-01-22
Peningkatan:
- Menambahkan pemetaan untuk log dengan logName
projects/1234/logs/run.googleapis.com%2Fstderr
,projects/1234/logs/run.googleapis.com%2Fstdout
,projects/1234/logs/run.googleapis.com%2Frequests
, danprojects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem
. - Memetakan
httpRequest.latency
ketarget.resource.attribute.labels
. - Memetakan
resource.labels.configuration_name
ketarget.resource.attribute.labels
. - Memetakan
resource.labels.revision_name
ketarget.resource.attribute.labels
. - Memetakan
resource.labels.service_name
ketarget.resource.attribute.labels
. - Memetakan
httpRequest.protocol
kenetwork.application_protocol
. - Memetakan
httpRequest.requestMethod
kenetwork.http.method
. - Memetakan
httpRequest.requestSize
kenetwork.sent_bytes
. - Memetakan
httpRequest.requestUrl
ketarget.url
. - Memetakan
httpRequest.responseSize
kenetwork.received_bytes
. - Memetakan
httpRequest.remoteIp
keprincipal.ip
danprincipal.asset.ip
. - Memetakan
httpRequest.serverIp
ke target.ipand
target.asset.ip`. - Memetakan
httpRequest.status
kenetwork.http.response_code
. - Memetakan
httpRequest.userAgent
kenetwork.http.user_agent
. - Memetakan
logName
kemetadata.product_event_type
. - Memetakan
textPayload
keadditional.fields
. - Memetakan
labels.run.googleapis.com_execution_name
keadditional.fields
. - Memetakan
labels.run.googleapis.com_task_attempt
keadditional.fields
. - Memetakan
labels.run.googleapis.com_task_index
keadditional.fields
. - Memetakan
labels.instanceId
keadditional.fields
. - Memetakan
resource.labels.job_name
keadditional.fields
.
2023-04-13
Peningkatan:
- Tetapkan
target.resource.attribute.cloud.environment
keGOOGLE_CLOUD_PLATFORM
. - Tetapkan
target.resource.name
ke nilai nama resource lengkap.
2022-07-13
- Parser yang Baru Dibuat.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.