Mengumpulkan log Gmail
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
- Buka Konsol Google Cloud.
- Pilih project Anda atau buat project baru.
- Di menu navigasi, buka Cloud Storage > Buckets.
- Klik Create bucket.
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 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).
- Ganti:
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
- Login dengan akun administrator super ke konsol Google Admin.
- Buka Menu > Pelaporan > Integrasi data.
- Arahkan ke kartu BigQuery Export, lalu klik Edit.
- Centang kotak Aktifkan ekspor data Google Workspace ke Google BigQuery.
- Di bagian ID project BigQuery, pilih project tempat Anda ingin menyimpan log.
- Di bagian Set data baru dalam project, masukkan nama set data yang akan digunakan untuk menyimpan log (misalnya,
workspace_logs). - Opsional: Centang kotak Batasi set data ke lokasi geografis tertentu dan pilih lokasi dari menu.
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
- Di Konsol Google Cloud, buka BigQuery.
- Di navigasi kiri, klik Scheduled queries.
- Klik Buat kueri terjadwal.
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 AndaPROJECT_ID: Project ID GCP Andaworkspace_logs: Nama set data BigQuery Anda
- Ganti:
Di bagian Schedule options:
- Ulangi: Pilih Jam.
- Setiap: Masukkan
1. - Tanggal mulai dan waktu proses: Pilih tanggal dan waktu saat ini.
Di bagian Destination for query results:
- Set data: Pilih set data untuk metadata kueri (bukan data yang diekspor).
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 Andagmail-logs-export: Nama bucket GCS Andaworkspace_logs: Nama set data BigQuery Anda
- Ganti:
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
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
Gmail Logs). - Pilih Google Cloud Storage V2 sebagai Source type.
Pilih Log GMAIL sebagai Jenis log.
Klik Get Service Account. Email akun layanan yang unik akan ditampilkan, misalnya:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comSalin alamat email ini untuk digunakan di langkah berikutnya.
Klik Berikutnya.
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 Andagmail-logs: Jalur folder/awalan tempat log disimpan
- Ganti:
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.
Klik Berikutnya.
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
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda.
- Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Add principals: Tempel email akun layanan Google SecOps.
- Tetapkan peran: Pilih Storage Object Viewer.
- 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.
- Ganti:
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.