Mengumpulkan log Cloud Run

Didukung di:

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

  1. Login ke konsol Google Cloud.
  2. Buka halaman Cloud Storage Buckets.

    Buka Buckets

  3. Klik Buat.

  4. Di halaman Buat bucket, masukkan informasi bucket Anda. Setelah menyelesaikan setiap langkah berikut, klik Lanjutkan untuk melanjutkan ke langkah berikutnya:

    1. Di bagian Mulai, lakukan tindakan berikut:

      1. Masukkan nama unik yang memenuhi persyaratan nama bucket; misalnya, cloudrun-logs.
      2. 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.

      3. Untuk menambahkan label bucket, klik panah peluas untuk meluaskan bagian Labels.

      4. Klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.

    2. Di bagian Pilih tempat untuk menyimpan data, lakukan hal berikut:

      1. Pilih Jenis lokasi.
      2. Gunakan menu jenis lokasi untuk memilih Location tempat data objek dalam bucket Anda akan disimpan secara permanen.

      3. Untuk menyiapkan replikasi lintas bucket, luaskan bagian Menyiapkan replikasi lintas bucket.

    3. 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.

    4. 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.

    5. Di bagian Pilih cara melindungi data objek, lakukan hal berikut:

      1. Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket.
      2. Untuk memilih cara enkripsi data objek, klik panah peluas berlabel Enkripsi data, lalu pilih Metode enkripsi data.
  5. Klik Buat.

Mengonfigurasi Ekspor Log di Cloud Run

  1. Di halaman Google Cloud Selamat datang, klik ikon Cloud Run.
  2. Telusuri Logging di kotak penelusuran di bagian atas, lalu klik Enter.
  3. Di Log Explorer, filter log dengan memilih Cloud Run di Log Name, lalu klik Apply.
  4. Klik More Actions > Create Sink dari menu.
  5. Berikan konfigurasi berikut:
    1. Sink Details: masukkan nama dan deskripsi.
    2. Klik Berikutnya.
    3. Sink Destination: pilih Cloud Storage Bucket.
    4. Cloud Storage Bucket: pilih bucket yang dibuat sebelumnya atau buat bucket baru.
    5. Klik Berikutnya.
    6. Choose Logs to include in Sink: log default diisi saat Anda memilih opsi di Bucket Cloud Storage.
    7. Klik Berikutnya.
    8. Opsional: Choose Logs to filter out of Sink: pilih log yang tidak ingin Anda sink.
  6. Klik Create Sink.

Mengonfigurasi feed di Google SecOps untuk menyerap log Cloud Run

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed; misalnya, Cloud Run Logs.
  4. Pilih Google Cloud Storage sebagai Source type.
  5. Pilih GCP Cloud Run sebagai Jenis log.
  6. Klik Get Service Account sebagai Chronicle Service Account.
  7. Klik Berikutnya.
  8. 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.

  9. Klik Berikutnya.

  10. 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, dan projects/1234/logs/run.googleapis.com%2Fvarlog%2Fsystem.
  • Memetakan httpRequest.latency ke target.resource.attribute.labels.
  • Memetakan resource.labels.configuration_name ke target.resource.attribute.labels.
  • Memetakan resource.labels.revision_name ke target.resource.attribute.labels.
  • Memetakan resource.labels.service_name ke target.resource.attribute.labels.
  • Memetakan httpRequest.protocol ke network.application_protocol.
  • Memetakan httpRequest.requestMethod ke network.http.method.
  • Memetakan httpRequest.requestSize ke network.sent_bytes.
  • Memetakan httpRequest.requestUrl ke target.url.
  • Memetakan httpRequest.responseSize ke network.received_bytes.
  • Memetakan httpRequest.remoteIp ke principal.ip dan principal.asset.ip.
  • Memetakan httpRequest.serverIp ke target.ipandtarget.asset.ip`.
  • Memetakan httpRequest.status ke network.http.response_code.
  • Memetakan httpRequest.userAgent ke network.http.user_agent.
  • Memetakan logName ke metadata.product_event_type.
  • Memetakan textPayload ke additional.fields.
  • Memetakan labels.run.googleapis.com_execution_name ke additional.fields.
  • Memetakan labels.run.googleapis.com_task_attempt ke additional.fields.
  • Memetakan labels.run.googleapis.com_task_index ke additional.fields.
  • Memetakan labels.instanceId ke additional.fields.
  • Memetakan resource.labels.job_name ke additional.fields.

2023-04-13

Peningkatan:

  • Tetapkan target.resource.attribute.cloud.environment ke GOOGLE_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.