Mengumpulkan log Cloudflare

Didukung di:

Dokumen ini menjelaskan cara menyerap log Cloudflare ke Google Security Operations menggunakan Webhook (tujuan HTTP) atau Google Cloud Storage. Cloudflare menghasilkan data operasional dalam bentuk log untuk DNS, permintaan HTTP, peristiwa Firewall, Audit, Zero Trust, dan CASB. Integrasi ini memungkinkan Anda mengirim log tersebut ke Google SecOps untuk dianalisis dan dipantau.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps.
  • Akun Cloudflare Enterprise dengan Logpush diaktifkan.
  • Untuk metode Webhook: Akses istimewa ke Konsol Google Cloud.
  • Untuk metode GCS: Akses istimewa ke Google Cloud Storage.

Metode 1: Mengonfigurasi ekspor log Cloudflare menggunakan Webhook (tujuan HTTP)

Metode ini memungkinkan Anda melakukan streaming log Cloudflare langsung ke Google Security Operations tanpa penyimpanan perantara, sehingga mengurangi biaya dan menyederhanakan konfigurasi.

Mengonfigurasi feed Webhook di Google SecOps

  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, Cloudflare Webhook).
  5. Pilih Webhook sebagai Jenis sumber.
  6. Pilih Cloudflare sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: \n.
    • 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.
  11. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  12. Salin dan simpan kunci rahasia karena Anda tidak dapat melihat rahasia ini lagi.
  13. Buka tab Detail.
  14. Salin URL endpoint feed dari kolom Endpoint Information.
  15. Klik Done.

Membuat kunci API untuk feed Webhook

  1. Buka halaman Credentials Google Cloud Console.
  2. Pilih project Anda (project yang terkait dengan instance Google SecOps Anda).
  3. Klik Create credentials > API key.
  4. Klik Edit kunci API.
  5. Di bagian Pembatasan API, pilih Batasi kunci.
  6. Di drop-down Select APIs, telusuri dan pilih Chronicle API.
  7. Klik Simpan.
  8. Salin nilai kunci API.

Mengonfigurasi tujuan HTTP Cloudflare Logpush

  1. Login ke dasbor Cloudflare.
  2. Pilih akun Enterprise atau domain yang ingin Anda gunakan dengan Logpush.
  3. Buka Analytics & Logs > Logs.
  4. Klik Create a Logpush job.
  5. Di bagian Pilih tujuan, pilih Tujuan HTTP.
  6. Masukkan URL endpoint HTTP dengan parameter autentikasi:

    <ENDPOINT_URL>?header_X-goog-api-key=<API_KEY>&header_X-Webhook-Access-Key=<SECRET_KEY>
    

    Ganti kode berikut:

    • <ENDPOINT_URL>: URL endpoint feed dari Google SecOps.
    • <API_KEY>: kunci API dari Konsol Google Cloud (dienkode agar sesuai ketentuan URL jika berisi karakter khusus).
    • <SECRET_KEY>: kunci rahasia dari feed Webhook (dienkode URL jika berisi karakter khusus).
  7. Klik Lanjutkan.

  8. Pilih set data yang akan dikirim (misalnya, Permintaan HTTP, Log DNS, Peristiwa firewall, Log audit, Log Zero Trust, Temuan CASB).

  9. Konfigurasi tugas Logpush Anda:

    • Masukkan Nama tugas.
    • Di bagian Jika log cocok, konfigurasikan filter secara opsional.
    • Di Kirim kolom berikut, pilih kolom yang akan disertakan.
    • Pilih format stempel waktu:
      • RFC 3339 (direkomendasikan untuk Google SecOps)
      • Unix (detik sejak epoch)
      • UnixNano (nanodetik sejak epoch)
    • Konfigurasi frekuensi sampling jika diperlukan.
  10. Klik Submit untuk membuat tugas Logpush.

Memverifikasi integrasi Webhook

Setelah konfigurasi, log akan muncul di Google SecOps dalam beberapa menit. Untuk memverifikasi:

  1. Buka Investigasi > Penelusuran SIEM.
  2. Telusuri log dengan label penyerapan yang Anda konfigurasi.
  3. Pastikan log Cloudflare diuraikan dengan benar.

Metode 2: Mengonfigurasi ekspor log Cloudflare menggunakan Google Cloud Storage

Membuat bucket Google Cloud Storage

  1. Login ke konsol Google Cloud.
  2. Buka halaman Cloud Storage > Buckets.
  3. Klik Create.
  4. Di halaman Buat bucket, masukkan informasi bucket Anda:
    • Name: Masukkan nama unik yang memenuhi persyaratan nama bucket (misalnya, cloudflare-data).
    • Jenis lokasi: Pilih jenis lokasi dan wilayah.
    • Untuk mengaktifkan namespace hierarkis, klik panah peluas untuk meluaskan Optimalkan untuk beban kerja berorientasi file dan intensif data, lalu pilih Aktifkan Namespace hierarkis di bucket ini.
  5. Klik Create.

Memberikan izin Cloudflare ke bucket

  1. Di konsol Cloud Storage, pilih bucket GCS (misalnya, cloudflare-data).
  2. Klik tab Permissions.
  3. Klik Grant access.
  4. Di kolom Add principals, masukkan logpush@cloudflare-data.iam.gserviceaccount.com.
  5. Di dropdown Assign roles, pilih Storage Object Admin.
  6. Klik Simpan.

Mengonfigurasi Cloudflare Logpush ke Cloud Storage

  1. Login ke dasbor Cloudflare.
  2. Pilih akun Enterprise atau domain yang ingin Anda gunakan dengan Logpush.
  3. Buka Analytics & Logs > Logs.
  4. Klik Create a Logpush job.
  5. Di Pilih tujuan, pilih Google Cloud Storage.
  6. Masukkan jalur bucket GCS Anda (misalnya, cloudflare-data/logs/).
  7. Klik Lanjutkan.

  8. Masukkan Token Kepemilikan, lalu klik Lanjutkan.

  9. Pilih set data yang akan dikirim ke penyimpanan.

  10. Konfigurasi tugas Logpush Anda:

    • Masukkan Nama tugas.
    • Di bagian Jika log cocok, Anda dapat memilih peristiwa yang akan disertakan dan/atau dihapus dari log Anda.
    • Di Kirim kolom berikut, pilih kolom yang akan didorong.
    • Pilih format stempel waktu:
      • RFC 3339 (direkomendasikan untuk Google SecOps)
      • Unix (detik sejak epoch)
      • UnixNano (nanodetik sejak epoch)
    • Konfigurasi frekuensi sampling jika diperlukan.
  11. Klik Kirim.

Mengonfigurasi feed di Google SecOps untuk menyerap log Cloudflare dari GCS

  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, Cloudflare GCS Logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih Cloudflare sebagai Jenis log.
  7. Klik Get Service Account.
  8. Klik Berikutnya.
  9. Tentukan nilai untuk parameter input berikut:

    • URI Bucket Penyimpanan: URL bucket Google Cloud Storage dalam format gs://my-bucket/<value>/.

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

  10. Klik Berikutnya.

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

Memberikan izin IAM ke akun layanan Google SecOps

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket (misalnya, cloudflare-data).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Di kolom Add principals, tempelkan email akun layanan Google SecOps.
  6. Di dropdown Assign roles, pilih Storage Object Viewer.
  7. Klik Simpan.

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
ClientIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip Nilai diambil dari kolom ClientIP.
ClientRequestHost read_only_udm.target.asset.hostname, read_only_udm.target.hostname Nilai diambil dari kolom ClientRequestHost.
ClientRequestMethod read_only_udm.network.http.method Nilai diambil dari kolom ClientRequestMethod.
ClientRequestURI read_only_udm.target.url Nilai diambil dari kolom ClientRequestURI. Jika kolom ClientRequestHost tidak kosong, nilai akan digabungkan dengan kolom ClientRequestHost.
ClientSrcPort read_only_udm.principal.port Nilai diambil dari kolom ClientSrcPort.
ClientRequestUserAgent read_only_udm.network.http.user_agent Nilai diambil dari kolom ClientRequestUserAgent.
ClientSSLCipher read_only_udm.network.tls.cipher Nilai diambil dari kolom ClientSSLCipher.
ClientSSLProtocol read_only_udm.network.tls.version Nilai diambil dari kolom ClientSSLProtocol.
Country read_only_udm.target.location.country_or_region Nilai diambil dari kolom Negara.
CreatedAt read_only_udm.metadata.event_timestamp Nilai diambil dari kolom CreatedAt.
Datetime read_only_udm.metadata.event_timestamp Nilai diambil dari kolom Datetime.
DestinationIP read_only_udm.target.asset.ip, read_only_udm.target.ip Nilai diambil dari kolom DestinationIP.
DestinationPort read_only_udm.target.port Nilai diambil dari kolom DestinationPort.
DeviceID read_only_udm.principal.asset_id Nilai diambil dari kolom DeviceID dan diberi awalan "Cloudflare:".
DeviceName read_only_udm.principal.asset.hostname, read_only_udm.principal.hostname Nilai diambil dari kolom DeviceName.
DstIP read_only_udm.target.asset.ip, read_only_udm.target.ip Nilai diambil dari kolom DstIP.
DstPort read_only_udm.target.port Nilai diambil dari kolom DstPort.
EdgeResponseBytes read_only_udm.network.received_bytes Nilai diambil dari kolom EdgeResponseBytes.
EdgeResponseStatus read_only_udm.network.http.response_code Nilai diambil dari kolom EdgeResponseStatus.
EdgeServerIP read_only_udm.target.asset.ip, read_only_udm.target.ip Nilai diambil dari kolom EdgeServerIP.
Email read_only_udm.principal.user.email_addresses, read_only_udm.target.user.email_addresses Nilai diambil dari kolom Email.
FirewallMatchesActions read_only_udm.security_result.action Nilai disetel ke "ALLOW" jika kolom FirewallMatchesAction adalah "allow", "Allow", "ALLOW", "skip", "SKIP", atau "Skip", "ALLOW_WITH_MODIFICATION" jika kolom FirewallMatchesAction adalah "challengeSolved" atau "jschallengeSolved", "BLOCK" jika kolom FirewallMatchesAction adalah "drop" atau "block", "UNKNOWN_ACTION" jika kolom FirewallMatchesAction tidak kosong.
FirewallMatchesRuleIDs read_only_udm.security_result.rule_id Nilai diambil dari kolom FirewallMatchesRuleIDs.
FirewallMatchesSources read_only_udm.security_result.rule_name Nilai diambil dari kolom FirewallMatchesSources.
HTTPMethod read_only_udm.network.http.method Nilai diambil dari kolom HTTPMethod.
HTTPHost read_only_udm.target.hostname Nilai diambil dari kolom HTTPHost.
HTTPVersion read_only_udm.network.application_protocol Nilai diambil dari kolom HTTPVersion. Jika nilai berisi "HTTP", nilai tersebut akan diganti dengan "HTTP".
IPAddress read_only_udm.target.asset.ip, read_only_udm.target.ip Nilai diambil dari kolom IPAddress.
IsIsolated read_only_udm.about.labels, read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom IsIsolated dan dikonversi menjadi string.
Location read_only_udm.principal.location.name Nilai diambil dari kolom Lokasi.
OriginIP read_only_udm.intermediary.ip, read_only_udm.target.asset.ip, read_only_udm.target.ip Nilai diambil dari kolom OriginIP.
OriginPort read_only_udm.target.port Nilai diambil dari kolom OriginPort.
OwnerID read_only_udm.target.user.product_object_id Nilai diambil dari kolom OwnerID.
Policy read_only_udm.security_result.rule_name Nilai diambil dari kolom Kebijakan.
PolicyID read_only_udm.security_result.rule_id Nilai diambil dari kolom PolicyID.
PolicyName read_only_udm.security_result.rule_name Nilai diambil dari kolom PolicyName.
Protocol read_only_udm.network.ip_protocol Nilai diambil dari kolom Protocol dan dikonversi menjadi huruf besar.
QueryCategoryIDs read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom QueryCategoryIDs.
QueryName read_only_udm.network.dns.questions.name Nilai diambil dari kolom QueryName.
QueryNameReversed read_only_udm.network.dns.questions.name Nilai diambil dari kolom QueryNameReversed.
QuerySize read_only_udm.network.sent_bytes Nilai diambil dari kolom QuerySize.
QueryType read_only_udm.network.dns.questions.type Nilai diambil dari kolom QueryType. Jika nilainya adalah salah satu jenis data DNS yang diketahui, nilai tersebut akan dipetakan ke nilai numerik yang sesuai. Jika tidak, nilai akan dikonversi menjadi string.
RData read_only_udm.network.dns.answers Nilai diambil dari kolom RData. Kolom jenis dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
RayID read_only_udm.metadata.product_log_id Nilai diambil dari kolom RayID.
Referer read_only_udm.network.http.referral_url Nilai diambil dari kolom Referer.
RequestID read_only_udm.metadata.product_log_id Nilai diambil dari kolom RequestID.
ResolverDecision read_only_udm.security_result.summary Nilai diambil dari kolom ResolverDecision.
ResourceID read_only_udm.target.resource.id, read_only_udm.target.resource.product_object_id Nilai diambil dari kolom ResourceID.
ResourceType read_only_udm.target.resource.resource_subtype Nilai diambil dari kolom ResourceType.
SNI read_only_udm.network.tls.client.server_name Nilai diambil dari kolom SNI.
SecurityAction read_only_udm.security_result.action Nilai ditetapkan ke "ALLOW" jika kolom SecurityAction kosong atau kolom sec_action kosong, "ALLOW_WITH_MODIFICATION" jika kolom SecurityAction adalah "challengeSolved" atau "jschallengeSolved", "BLOCK" jika kolom SecurityAction adalah "drop" atau "block".
SecurityLevel read_only_udm.security_result.severity Nilai diambil dari kolom SecurityLevel dan dipetakan ke nilai tingkat keparahan UDM yang sesuai.
SessionID read_only_udm.network.session_id Nilai diambil dari kolom SessionID.
SessionStartTime read_only_udm.metadata.event_timestamp Nilai diambil dari kolom SessionStartTime.
SourceIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip, read_only_udm.src.asset.ip, read_only_udm.src.ip Nilai diambil dari kolom SourceIP.
SourcePort read_only_udm.principal.port, read_only_udm.src.port Nilai diambil dari kolom SourcePort.
SrcIP read_only_udm.principal.asset.ip, read_only_udm.principal.ip Nilai diambil dari kolom SrcIP.
SrcPort read_only_udm.principal.port Nilai diambil dari kolom SrcPort.
TemporaryAccessDuration read_only_udm.network.session_duration.seconds Nilai diambil dari kolom TemporaryAccessDuration.
Timestamp read_only_udm.metadata.event_timestamp Nilai diambil dari kolom Stempel waktu.
Transport read_only_udm.network.ip_protocol Nilai diambil dari kolom Transportasi dan dikonversi menjadi huruf besar.
URL read_only_udm.target.url Nilai diambil dari kolom URL.
UserAgent read_only_udm.network.http.user_agent Nilai diambil dari kolom UserAgent.
UserID read_only_udm.principal.user.product_object_id Nilai diambil dari kolom UserID.
UserUID read_only_udm.target.user.product_object_id Nilai diambil dari kolom UserUID.
VirtualNetworkID read_only_udm.principal.resource.product_object_id Nilai diambil dari kolom VirtualNetworkID.
WAFAction read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFAction.
WAFAttackScore read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFAttackScore.
WAFFlags read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFFlags.
WAFProfile read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFProfile.
WAFRCEAttackScore read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFRCEAttackScore.
WAFRuleID read_only_udm.security_result.about.labels, read_only_udm.security_result.about.resource.attribute.labels, read_only_udm.security_result.threat_id Nilai diambil dari kolom WAFRuleID.
WAFRuleMessage read_only_udm.security_result.rule_name, read_only_udm.security_result.threat_name Nilai diambil dari kolom WAFRuleMessage.
WAFSQLiAttackScore read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFSQLiAttackScore.
WAFXSSAttackScore read_only_udm.security_result.about.resource.attribute.labels Nilai diambil dari kolom WAFXSSAttackScore.
ZoneID read_only_udm.additional.fields Nilai diambil dari kolom ZoneID.
read_only_udm.metadata.log_type Nilai ditetapkan ke "CLOUDFLARE".
read_only_udm.metadata.product_name Nilai ditetapkan ke "Cloudflare Gateway DNS" jika log adalah log DNS, "Cloudflare Gateway HTTP" jika log adalah log HTTP Gateway, "Cloudflare Audit" jika log adalah log Audit, atau "Web Application Firewall" jika tidak.
read_only_udm.metadata.vendor_name Nilai ditetapkan ke "Cloudflare".
read_only_udm.network.application_protocol Nilai ditetapkan ke "DNS" jika log adalah log DNS, "HTTP" jika kolom HTTPVersion berisi "HTTP", atau nilai kolom Protocol yang dikonversi menjadi huruf besar jika kolom Protocol tidak kosong dan bukan "tls" atau "TLS".
read_only_udm.network.direction Nilai ditetapkan ke "OUTBOUND" jika kolom EgressIP tidak kosong.
read_only_udm.network.http.parsed_user_agent Nilai diambil dari kolom UserAgent atau ClientRequestUserAgent dan diuraikan menggunakan filter parseduseragent.
read_only_udm.extensions.auth.type Nilai ditetapkan ke "MACHINE" jika kolom Action adalah "login" atau "logout".
read_only_udm.metadata.event_type Nilai ditetapkan ke "NETWORK_DNS" jika log adalah log DNS, "NETWORK_CONNECTION" jika log adalah log HTTP Gateway, "USER_RESOURCE_ACCESS" jika log adalah log Audit dan kolom ActorIP dan ActorEmail kosong, "USER_RESOURCE_UPDATE_CONTENT" jika log adalah log Audit dan kolom ResourceType dan newvalue tidak kosong, "USER_LOGIN" jika kolom Action adalah "login", "USER_LOGOUT" jika kolom Action adalah "logout", "USER_RESOURCE_ACCESS" jika kolom Email tidak kosong dan cocok dengan format alamat email, atau "NETWORK_CONNECTION" jika kolom EgressIP dan SourceIP tidak kosong atau kolom OriginIP dan SourceIP tidak kosong.
read_only_udm.target.file.mime_type Nilai diambil dari kolom EdgeResponseContentType.
read_only_udm.target.location.country_or_region Nilai diambil dari kolom Negara.
read_only_udm.target.resource.id Nilai diambil dari kolom AccountID atau kolom ResourceID.
read_only_udm.target.resource.product_object_id Nilai diambil dari kolom AccountID, kolom AppUUID, atau kolom ResourceID.
read_only_udm.target.user.product_object_id Nilai diambil dari kolom OwnerID atau kolom UserUID.

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