Mengumpulkan log Gmail

Didukung di:

Dokumen ini menjelaskan cara menyerap log Gmail ke Google Security Operations menggunakan Google Cloud Storage V2.

Gmail adalah layanan email Google Workspace yang menyediakan email yang aman dan cerdas dengan perlindungan spam dan phishing bawaan. Log Gmail mencatat informasi mendetail tentang pengiriman email, peristiwa keamanan, dan alur pesan melalui infrastruktur Gmail.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Project GCP dengan Cloud Storage API dan BigQuery API yang diaktifkan
  • Akun Google Workspace dengan edisi yang sesuai (Enterprise Standard, Enterprise Plus, Education Standard, atau Education Plus)
  • Akses administrator super ke konsol Admin Google Workspace
  • Izin untuk membuat dan mengelola bucket GCS
  • Izin untuk mengelola kebijakan IAM di bucket GCS
  • Izin untuk membuat kueri terjadwal BigQuery
  • Akun layanan gapps-reports@system.gserviceaccount.com harus memiliki peran editor di project BigQuery

Membuat bucket Google Cloud Storage

Menggunakan Konsol Google Cloud

  1. Buka Konsol Google Cloud.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, gmail-logs-export)
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region)
    Location Pilih lokasi (misalnya, us-central1)
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses)
    Access control Seragam (direkomendasikan)
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi
  6. Klik Create.

Menggunakan alat command line gcloud

  • Atau, buat bucket menggunakan perintah gcloud:

    gcloud storage buckets create gs://gmail-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • Ganti:
      • gmail-logs-export: Nama bucket yang Anda inginkan (unik secara global).
      • us-central1: Region pilihan Anda (misalnya, us-central1, europe-west1).

Mengonfigurasi Google Workspace untuk mengekspor log ke BigQuery

Log Google Workspace, termasuk log Gmail, diekspor ke BigQuery melalui fitur log dan laporan Workspace terpadu.

Mengaktifkan BigQuery Export untuk log Workspace

  1. Login dengan akun administrator super ke konsol Google Admin.
  2. Buka Menu > Pelaporan > Integrasi data.
  3. Arahkan ke kartu BigQuery Export, lalu klik Edit.
  4. Centang kotak Aktifkan ekspor data Google Workspace ke Google BigQuery.
  5. Di bagian ID project BigQuery, pilih project tempat Anda ingin menyimpan log.
  6. Di bagian Set data baru dalam project, masukkan nama set data yang akan digunakan untuk menyimpan log (misalnya, workspace_logs).
  7. Opsional: Centang kotak Batasi set data ke lokasi geografis tertentu dan pilih lokasi dari menu.
  8. Klik Simpan.

Setelah mengaktifkan ekspor, peristiwa log aktivitas biasanya tersedia dalam waktu 10 menit. Data diekspor ke tabel bernama activity_YYYYMMDD dalam set data yang ditentukan.

Membuat kueri terjadwal untuk mengekspor dari BigQuery ke GCS

Untuk mengekspor log Gmail secara otomatis dari BigQuery ke Cloud Storage berdasarkan jadwal berulang, buat kueri terjadwal menggunakan pernyataan EXPORT DATA.

Menggunakan Konsol BigQuery

  1. Di Konsol Google Cloud, buka BigQuery.
  2. Di navigasi kiri, klik Scheduled queries.
  3. Klik Buat kueri terjadwal.
  4. Di Query editor, masukkan SQL berikut:

    EXPORT DATA OPTIONS(
        uri='gs://gmail-logs-export/gmail-logs/*.json',
        format='JSON',
        overwrite=false
    ) AS
    SELECT 
        *
    FROM 
        `PROJECT_ID.workspace_logs.activity_*`
    WHERE 
        record_type = 'gmail'
        AND _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
    
    • Ganti:
      • gmail-logs-export: Nama bucket GCS Anda
      • PROJECT_ID: Project ID GCP Anda
      • workspace_logs: Nama set data BigQuery Anda
  5. Di bagian Schedule options:

    • Ulangi: Pilih Jam.
    • Setiap: Masukkan 1.
    • Tanggal mulai dan waktu proses: Pilih tanggal dan waktu saat ini.
  6. Di bagian Destination for query results:

    • Set data: Pilih set data untuk metadata kueri (bukan data yang diekspor).
  7. Klik Simpan.

Menggunakan alat command line bq

  • Atau, buat kueri terjadwal menggunakan perintah bq:

    bq mk \
        --transfer_config \
        --project_id=PROJECT_ID \
        --data_source=scheduled_query \
        --display_name='Gmail Logs Export to GCS' \
        --schedule='every 1 hours' \
        --params='{
            "query":"EXPORT DATA OPTIONS(uri=\"gs://gmail-logs-export/gmail-logs/*.json\", format=\"JSON\", overwrite=false) AS SELECT * FROM `PROJECT_ID.workspace_logs.activity_*` WHERE record_type = \"gmail\" AND _TABLE_SUFFIX = FORMAT_DATE(\"%Y%m%d\", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))",
            "destination_table_name_template":"gmail_export_metadata",
            "write_disposition":"WRITE_TRUNCATE"
        }'
    
    • Ganti:
      • PROJECT_ID: Project ID GCP Anda
      • gmail-logs-export: Nama bucket GCS Anda
      • workspace_logs: Nama set data BigQuery Anda

Mengambil akun layanan Google SecOps

Google SecOps menggunakan akun layanan unik untuk membaca data dari bucket GCS Anda. Anda harus memberi akun layanan ini akses ke bucket Anda.

Mengonfigurasi feed di Google SecOps untuk menyerap log Gmail

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Gmail Logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih Log GMAIL sebagai Jenis log.

  7. Klik Get Service Account. Email akun layanan yang unik akan ditampilkan, misalnya:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Salin alamat email ini untuk digunakan di langkah berikutnya.

  9. Klik Berikutnya.

  10. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket GCS dengan jalur awalan:

       gs://gmail-logs-export/gmail-logs/
      
      • Ganti:
        • gmail-logs-export: Nama bucket GCS Anda
        • gmail-logs: Jalur folder/awalan tempat log disimpan
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.

    • Usia File Maksimum: Menyertakan file yang diubah dalam beberapa hari terakhir. Defaultnya adalah 180 hari.

    • Namespace aset: Namespace aset.

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.

  11. Klik Berikutnya.

  12. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Memberikan izin IAM ke akun layanan Google SecOps

Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.

Menggunakan Konsol Google Cloud

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda.
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempel email akun layanan Google SecOps.
    • Tetapkan peran: Pilih Storage Object Viewer.
  6. Klik Simpan.

Menggunakan alat command line gcloud

  • Atau, berikan izin menggunakan perintah gcloud:

    gcloud storage buckets add-iam-policy-binding gs://gmail-logs-export \
        --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.objectViewer"
    
    • Ganti:
      • gmail-logs-export: Nama bucket Anda.
      • SECOPS_SERVICE_ACCOUNT_EMAIL: Email akun layanan Google SecOps.

Menggunakan alat command line gsutil (lama)

  • Beri akun layanan SecOps akses Object Viewer ke bucket ekspor log Gmail.

    gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \
        gs://gmail-logs-export
    

Verifikasi izin

  • Untuk memverifikasi bahwa izin telah diberikan dengan benar:

    gcloud storage buckets get-iam-policy gs://gmail-logs-export \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

Anda akan melihat email akun layanan Google SecOps di output.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
attachment.file_extension_type, attachment.sha256, attachment.file_name, domains tentang Digabungkan dengan detail lampiran dan domain link
message_info.post_delivery_info.action_type, gmail.message_info.post_delivery_info.action_type, event_info.mail_event_type, gmail.event_info.mail_event_type, tok.product_bucket, tok.scope_name, record_type, token.client_type, message_info.num_message_attachments, gmail.message_info.num_message_attachments additional.fields Digabungkan dengan berbagai kolom metadata tambahan
action_type, description, rule_id metadata.description Disetel ke deskripsi tertentu berdasarkan nilai action_type, atau dari deskripsi, atau "Konten tidak pantas" jika rule_id == 7
metadata.event_type Tetapkan ke "EMAIL_TRANSACTION"
event_name metadata.product_event_type Nilai disalin secara langsung
metadata.product_name Tetapkan ke "GMAIL"
metadata.vendor_name Disetel ke "Google"
__incoming_message, __outcoming_message network.direction Setel ke "INBOUND" jika pesan masuk terdeteksi, "OUTBOUND" jika pesan keluar
destination.address network.email.cc Digabungkan dari alamat tujuan dengan indeks > 0
message_info.source.from_header_address, message_info.source.address network.email.from Nilai dari from_header_address jika tidak kosong, atau dari source.address
message_info.rfc2822_message_id, gmail.message_info.rfc2822_message_id network.email.mail_id Diekstrak dari rfc2822_message_id, menghapus < >, menggunakan grok
message_info.subject, gmail.message_info.subject network.email.subject Nilai dari message_info.subject jika tidak kosong, atau gmail.message_info.subject
destination.address network.email.to Digabungkan dari alamat tujuan pertama
network.ip_protocol Ditetapkan ke "TCP"
_payload_size network.received_bytes Disetel ke _payload_size jika pesan masuk
_payload_size network.sent_bytes Disetel ke _payload_size jika pesan keluar
token.app_name, message_info.source.service, message_info.source.selector, gmail.message_info.source.service, gmail.message_info.source.selector principal.application Nilai dari token.app_name jika tidak kosong, atau digabungkan dari source.service dan source.selector
message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone principal.asset.hostname Nilai dari client_host_zone
client_ip principal.asset.ip Nilai disalin secara langsung
message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone principal.hostname Nilai dari client_host_zone
client_ip principal.ip Nilai disalin secara langsung
message_info.connection_info.ip_geo_country, gmail.message_info.connection_info.ip_geo_country principal.location.country_or_region Nilai dari ip_geo_country
email, source_address principal.user.email_addresses Digabungkan dari email_address dan source_address
token.client_id principal.user.group_identifiers Nilai disalin secara langsung
message_info.source.from_header_displayname, gmail.message_info.source.from_header_displayname principal.user.user_display_name Nilai dari from_header_displayname
source_address principal.user.userid Nilai disalin secara langsung
tindakan security_result.action Nilai disalin secara langsung
category security_result.category Nilai disalin secara langsung
category_details security_result.category_details Nilai disalin secara langsung
message_info.connection_info.smtp_response_reason, gmail.message_info.connection_info.smtp_response_reason, rule_description, reason security_result.description Disetel ke alasan respons SMTP, atau deskripsi aturan, atau alasan klasifikasi
stringMatch.predefined_detector_name, stringMatch.matched_string, stringMatch.match_expression, stringMatch.source, stringMatch.type security_result.detection_fields Digabungkan dengan objek kolom deteksi
rule_id security_result.rule_id Nilai disalin secara langsung
rule_name security_result.rule_name Nilai disalin secara langsung
_err_summary, rule_id, description security_result.summary Ditetapkan ke ringkasan error, atau ringkasan khusus aturan, atau deskripsi
_target_host target.administrative_domain Nilai disalin secara langsung
message_info.destination.0.service, message_info.destination.0.selector, gmail.message_info.destination.0.service, gmail.message_info.destination.0.selector target.application Digabungkan dari layanan dan pemilih

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.