Mengumpulkan log Cloudflare Page Shield
Parser Version: 1.0
Dokumen ini menjelaskan cara menyerap log Cloudflare Page Shield ke Google Security Operations menggunakan Amazon S3.
Page Shield membantu mengelola resource yang dimuat oleh pengunjung situs Anda, termasuk skrip, koneksinya, dan cookie, serta memicu notifikasi peringatan saat resource berubah atau dianggap berbahaya.
Sebelum memulai
- Instance Google SecOps
- Akun Cloudflare dengan Page Shield diaktifkan
- Akses istimewa ke dasbor Cloudflare
- Akses istimewa ke AWS (S3, IAM)
Opsi ini menggunakan Cloudflare Logpush untuk mengekspor peristiwa Page Shield ke Amazon S3, yang kemudian di-ingest oleh Google SecOps.
Mengaktifkan Page Shield
- Login ke dasbor Cloudflare.
- Pilih akun dan domain Anda.
- Buka Keamanan > Page Shield.
- Klik Aktifkan Page Shield.
Membuat bucket Amazon S3
- Buka konsol Amazon S3.
- Klik Create Bucket.
- Berikan detail konfigurasi berikut:
- Nama Bucket: Masukkan nama yang bermakna untuk bucket (misalnya,
cloudflare-pageshield-logs). - Region: Pilih region AWS pilihan Anda (misalnya,
us-east-1).
- Nama Bucket: Masukkan nama yang bermakna untuk bucket (misalnya,
- Klik Create.
- Simpan nama dan region bucket untuk referensi pada masa mendatang.
Membuat pengguna IAM dengan akses S3
- Buka IAM console.
- Klik Pengguna > Tambahkan pengguna.
- Masukkan nama pengguna (misalnya,
chronicle-s3-user). - Pilih Akses terprogram.
- Klik Berikutnya: Izin.
- Pilih Attach existing policies directly.
- Telusuri dan pilih kebijakan AmazonS3FullAccess.
- Klik Berikutnya: Tanda.
- Klik Berikutnya: Tinjau.
- Klik Create user.
- Klik Download file .csv untuk menyimpan ID Kunci Akses dan Kunci Akses Rahasia.
Mengonfigurasi kebijakan bucket S3 untuk Cloudflare
- Di konsol Amazon S3, pilih bucket Anda.
- Klik Permissions > Bucket policy.
- Klik Edit.
Tempel kebijakan berikut, dengan mengganti
<BUCKET_NAME>dengan nama bucket Anda:{ "Id": "Policy1506627184792", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1506627150918", "Action": ["s3:PutObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::<BUCKET_NAME>/*", "Principal": { "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"] } } ] }Klik Simpan perubahan.
Buat tugas Cloudflare Logpush
- Login ke dasbor Cloudflare.
- Pilih akun dan domain Anda.
- Buka Analytics & Logs > Logs.
- Klik Create a Logpush job.
- Di Select a destination, pilih Amazon S3.
- Masukkan informasi tujuan berikut:
- Bucket name: Masukkan nama bucket S3 Anda (misalnya,
cloudflare-pageshield-logs). - Region bucket: Pilih region yang cocok dengan bucket S3 Anda.
- Jalur bucket (opsional): Masukkan awalan jalur (misalnya,
pageshield/).
- Bucket name: Masukkan nama bucket S3 Anda (misalnya,
- Klik Lanjutkan.
- Untuk membuktikan kepemilikan, Cloudflare akan mengirimkan file ke tujuan yang Anda tentukan. Untuk menemukan token, pilih tombol Buka di tab Ringkasan file tantangan kepemilikan, lalu tempelkan ke dasbor Cloudflare untuk memverifikasi akses Anda ke bucket. Masukkan Token Kepemilikan, lalu pilih Lanjutkan.
- Di Pilih set data, pilih Peristiwa Page Shield.
- Klik Berikutnya.
- Konfigurasi tugas logpush Anda:
- Nama tugas: Masukkan nama deskriptif (misalnya,
pageshield-to-s3). - Jika log cocok: Biarkan kosong untuk menyertakan semua peristiwa atau konfigurasi filter sesuai kebutuhan.
- Kirim kolom berikut: Pilih Semua kolom atau pilih kolom tertentu.
- Nama tugas: Masukkan nama deskriptif (misalnya,
- Klik Kirim.
Mengonfigurasi feed di Google SecOps untuk menyerap log Page Shield
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
Cloudflare Page Shield S3). - Pilih Amazon S3 V2 sebagai Jenis sumber.
- Pilih Cloudflare Page Shield sebagai Jenis log.
- Klik Berikutnya.
Tentukan nilai untuk parameter input berikut:
URI S3: Masukkan URI bucket dalam format:
s3://<BUCKET_NAME>/<BUCKET_PATH>/Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
- Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer.
- 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.
ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3.
Secret Access Key: Kunci rahasia pengguna dengan akses ke bucket S3.
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.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| URLContainsCDNCGIPath | event.idm.read_only_udm.additional.fields.CGI_label | Nilai diambil dari URLContainsCDNCGIPath, ditetapkan sebagai string_value dalam label dengan kunci "CGI" |
| Tindakan | event.idm.read_only_udm.additional.fields.action_label | Nilai diambil dari Tindakan, ditetapkan sebagai string_value dalam label dengan kunci "action" |
| resource.first_page_url | event.idm.read_only_udm.additional.fields.first_page_label | Nilai diambil dari resource.first_page_url, ditetapkan sebagai string_value dalam label dengan kunci "first_page_url" |
| resource.last_page_url | event.idm.read_only_udm.additional.fields.last_page_label | Nilai diambil dari resource.last_page_url, ditetapkan sebagai string_value dalam label dengan kunci "last_page_url" |
| nama | event.idm.read_only_udm.additional.fields.name_label | Nilai diambil dari nama, ditetapkan sebagai string_value dalam label dengan kunci "name" |
| ts | event.idm.read_only_udm.metadata.event_timestamp | Dikonversi dari ts (UNIX) menjadi stempel waktu |
| event.idm.read_only_udm.metadata.event_type | Diperoleh berdasarkan has_principal, has_target, has_target_user: NETWORK_CONNECTION jika principal dan target; USER_UNCATEGORIZED jika target_user; STATUS_UPDATE jika principal; atau GENERIC_EVENT | |
| resource.url | event.idm.read_only_udm.network.http.referral_url | Nilai diambil dari resource.url |
| Host | event.idm.read_only_udm.principal.asset.hostname | Nilai diambil dari Host atau host.hostname |
| Host | event.idm.read_only_udm.principal.hostname | Nilai diambil dari Host atau host.hostname |
| alert_type | event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label | Nilai diambil dari alert_type, ditetapkan sebagai nilai dalam label dengan kunci "alert_type" |
| resource.cryptomining_score | event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label | Nilai diambil dari resource.cryptomining_score, ditetapkan sebagai nilai dalam label dengan kunci "cryptominingscore%{index2}" |
| resource.dataflow_score | event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label | Nilai diambil dari resource.dataflow_score, ditetapkan sebagai nilai dalam label dengan kunci "dataflowscore%{index2}" |
| policie.description | event.idm.read_only_udm.principal.resource.attribute.labels.desc_label | Nilai diambil dari policie.description, ditetapkan sebagai nilai dalam label dengan kunci "description_%{index}" |
| version.fetched_at | event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label | Nilai diambil dari version.fetched_at, ditetapkan sebagai nilai dalam label dengan kunci "fetchedat%{index2}" |
| version.hash | event.idm.read_only_udm.principal.resource.attribute.labels.hash_label | Nilai diambil dari version.hash, ditetapkan sebagai nilai dalam label dengan kunci "hash_%{index2}" |
| policie.id | event.idm.read_only_udm.principal.resource.attribute.labels.id_label | Nilai diambil dari policie.id, ditetapkan sebagai nilai dalam label dengan kunci "policyid%{index}" |
| data.options.remove_dashboard_links | event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label | Nilai yang diambil dari data.options.remove_dashboard_links, ditetapkan sebagai nilai dalam label dengan kunci "remove_dashboard_links" |
| resource.resource_type | event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label | Nilai diambil dari resource.resource_type, ditetapkan sebagai nilai dalam label dengan kunci "resourcetype%{index2}" |
| data.type | event.idm.read_only_udm.principal.resource.attribute.labels.type_label | Nilai diambil dari data.type, ditetapkan sebagai nilai dalam label dengan kunci "type" |
| data.zones | event.idm.read_only_udm.principal.resource.attribute.labels.zones_label | Nilai diambil dari data.zones, ditetapkan sebagai nilai dalam label dengan kunci "zones" |
| resource.id | event.idm.read_only_udm.principal.resource.id | Nilai diambil dari resource.id |
| PageURL | event.idm.read_only_udm.principal.url | Nilai yang diambil dari PageURL |
| account_id | event.idm.read_only_udm.principal.user.product_object_id | Nilai diambil dari account_id |
| policy_id | event.idm.read_only_udm.security_result.detection_fields.policy_id_label | Nilai diambil dari policy_id, ditetapkan sebagai nilai dalam label dengan kunci "policy_id" |
| policy_name | event.idm.read_only_udm.security_result.detection_fields.policy_name_label | Nilai diambil dari policy_name, ditetapkan sebagai nilai dalam label dengan kunci "policy_name" |
| teks biasa | event.idm.read_only_udm.security_result.description | Nilai yang diambil dari teks |
| resource.first_seen_at | event.idm.read_only_udm.security_result.first_discovered_time | Dikonversi dari resource.first_seen_at ke stempel waktu ISO8601 |
| PolicyID | event.idm.read_only_udm.security_result.rule_name | Nilai yang diambil dari PolicyID |
| data.severity | event.idm.read_only_udm.security_result.severity | Diperoleh dari data.severity: jika "INFO" → "INFORMATIONAL"; jika "WARN" → "MEDIUM"; jika tidak, "UNKNOWN_SEVERITY" |
| URL | event.idm.read_only_udm.target.url | Nilai yang diambil dari URL |
| URLHost | event.idm.read_only_udm.target.user.email_addresses | Nilai diambil dari URLHost jika cocok dengan pola email |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.