Mengumpulkan log Cloudflare Page Shield

Didukung di:

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

  1. Login ke dasbor Cloudflare.
  2. Pilih akun dan domain Anda.
  3. Buka Security > Page Shield.
  4. Klik Aktifkan Page Shield.

Buat bucket Amazon S3

  1. Buka konsol Amazon S3.
  2. Klik Create Bucket.
  3. 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).
  4. Klik Buat.
  5. Simpan nama bucket dan region untuk referensi di masa mendatang.

Membuat pengguna IAM dengan akses S3

  1. Buka IAM console.
  2. Klik Pengguna > Tambahkan pengguna.
  3. Masukkan nama pengguna (misalnya, chronicle-s3-user).
  4. Pilih Akses terprogram.
  5. Klik Berikutnya: Izin.
  6. Pilih Lampirkan kebijakan yang ada secara langsung.
  7. Telusuri dan pilih kebijakan AmazonS3FullAccess.
  8. Klik Berikutnya: Tanda.
  9. Klik Berikutnya: Tinjau.
  10. Klik Buat pengguna.
  11. Klik Download .csv file untuk menyimpan Access Key ID dan Secret Access Key.

Mengonfigurasi kebijakan bucket S3 untuk Cloudflare

  1. Di konsol Amazon S3, pilih bucket Anda.
  2. Klik Izin > Kebijakan bucket.
  3. Klik Edit.
  4. 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"]
          }
        }
      ]
    }
    
  5. Klik Simpan perubahan.

Buat tugas Cloudflare Logpush

  1. Login ke dasbor Cloudflare.
  2. Pilih akun dan domain Anda.
  3. Buka Analytics & Logs > Logs.
  4. Klik Create a Logpush job.
  5. Di Pilih tujuan, pilih Amazon S3.
  6. Masukkan informasi tujuan berikut:
    • Nama bucket: 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/).
  7. Klik Lanjutkan.
  8. 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.
  9. Di Pilih set data, pilih Peristiwa Page Shield.
  10. Klik Berikutnya.
  11. 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.
  12. Klik Kirim.

Mengonfigurasi feed di Google SecOps untuk menyerap log Page Shield

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Cloudflare Page Shield S3).
  5. Pilih Amazon S3 V2 sebagai Jenis sumber.
  6. Pilih Cloudflare Page Shield sebagai Jenis log.
  7. Klik Berikutnya.
  8. 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.

    • Kunci Akses Rahasia: Kunci rahasia pengguna dengan akses ke bucket S3.

    • Namespace aset: Namespace aset.

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

  9. Klik Berikutnya.

  10. 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; selain itu 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 yang diambil dari Host atau host.hostname
Host event.idm.read_only_udm.principal.hostname Nilai yang 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 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 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 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 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 diambil dari URL
URLHost event.idm.read_only_udm.target.user.email_addresses Nilai diambil dari URLHost jika cocok dengan pola email

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