Mengumpulkan log F5 Distributed Cloud Services

Didukung di:

Dokumen ini menjelaskan cara menyerap log F5 Distributed Cloud Services ke Google Security Operations menggunakan Google Cloud Storage V2.

F5 Distributed Cloud Services adalah platform pengelolaan aplikasi, jaringan, dan keamanan berbasis SaaS yang menyediakan infrastruktur cloud terdistribusi, pengiriman aplikasi, keamanan API, dan kemampuan firewall aplikasi web di berbagai lokasi multicloud dan edge.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Project Google Cloud dengan Cloud Storage API diaktifkan
  • Izin untuk membuat dan mengelola bucket GCS
  • Izin untuk mengelola kebijakan IAM di bucket GCS
  • Akses istimewa ke konsol F5 Distributed Cloud
  • Izin untuk membuat objek Global Log Receiver di F5 Distributed Cloud

Membuat bucket Google Cloud Storage

  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, f5-dcs-logs)
    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.

Mengonfigurasi F5 Distributed Cloud untuk mengekspor ke GCS

Menambahkan bucket GCS ke daftar yang diizinkan firewall

  1. F5 Distributed Cloud Global Log Receiver memerlukan rentang alamat IP berikut untuk ditambahkan ke daftar yang diizinkan firewall Anda:

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. Jika bucket GCS Anda menggunakan Kontrol Layanan VPC atau aturan firewall, tambahkan rentang IP ini ke daftar yang diizinkan.

Membuat akun layanan Google Cloud untuk F5 Distributed Cloud

  1. Di Konsol Google Cloud, buka IAM & Admin > Service Accounts.
  2. Klik Create Service Account.
  3. Berikan detail konfigurasi berikut:

    • Nama akun layanan: Masukkan f5-dcs-log-writer (atau nama deskriptif)
    • Deskripsi akun layanan: Masukkan Service account for F5 Distributed Cloud to write logs to GCS
  4. Klik Create and Continue.

  5. Di bagian Grant this service account access to project:

    1. Klik Pilih peran.
    2. Telusuri dan pilih Storage Object Admin.
  6. Klik Lanjutkan.

  7. Klik Done.

Membuat kunci akun layanan

  1. Di daftar Akun Layanan, klik akun layanan yang Anda buat (misalnya, f5-dcs-log-writer).
  2. Buka tab Kunci.
  3. Klik Tambahkan Kunci > Buat kunci baru.
  4. Pilih JSON sebagai jenis kunci.
  5. Klik Create.
  6. File kunci JSON akan didownload ke komputer Anda.
  7. Simpan file ini dengan aman. Anda akan membutuhkannya pada langkah berikutnya.

Memberikan izin IAM pada bucket GCS

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, f5-dcs-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Tambahkan prinsipal: Masukkan email akun layanan (misalnya, f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com)
    • Tetapkan peran: Pilih Storage Object Admin
  6. Klik Simpan.

Buat kredensial Google Cloud di konsol F5 Distributed Cloud

  1. Login ke konsol F5 Distributed Cloud di https://<tenant>.console.ves.volterra.io.
  2. Pilih layanan Multi-Cloud Network Connect dari halaman beranda.
  3. Buka Kelola > Pengelolaan Situs > Kredensial Cloud.
  4. Klik Add Cloud Credentials.
  5. Di bagian Metadata:
    • Nama: Masukkan nama deskriptif (misalnya, gcp-chronicle-logs)
    • Deskripsi (opsional): Masukkan Cloud Storage credentials for Google SecOps log export
  6. Di bagian Cloud Credentials Type, pilih GCP Credentials.
  7. Klik Configure di kolom GCP Credentials.
  8. Di menu dropdown Credential Type, pilih Service Account Credentials File.
  9. Klik Upload File, lalu pilih file kunci JSON yang Anda download di langkah sebelumnya.
  10. Klik Terapkan.
  11. Klik Simpan dan Keluar.

Membuat Penerima Log Global

  1. Di F5 Distributed Cloud Console, pastikan Anda berada di layanan Multi-Cloud Network Connect.
  2. Buka Manage > Log Management > Global Log Receiver.
  3. Klik Tambahkan Penerima Log Global.
  4. Di bagian Metadata:

    • Nama: Masukkan nama deskriptif (misalnya, chronicle-gcs-receiver)
    • Deskripsi (opsional): Masukkan Global log receiver for Google SecOps SIEM
  5. Di dropdown Jenis Log, pilih jenis log yang ingin Anda ekspor:

    • Log Permintaan: Log permintaan/respons HTTP dengan pengguna, jalur, metode, kode respons
    • Peristiwa Keamanan: Peristiwa WAF, DDoS, Perlindungan API, Pertahanan Bot
    • Log Audit: Perubahan konfigurasi melalui API publik
    • Log Permintaan DNS: Log kueri DNS
  6. Di dropdown Log Message Selection, pilih salah satu opsi berikut:

    • Pilih log dari namespace saat ini: Mengirim log hanya dari namespace saat ini
    • Pilih log dari semua namespace: Mengirim log dari semua namespace (direkomendasikan untuk visibilitas yang komprehensif)
    • Pilih log di namespace tertentu: Mengirim log dari namespace yang ditentukan (klik Tambahkan item untuk menambahkan nama namespace)
  7. Di dropdown Receiver Configuration, pilih GCP Bucket Receiver.

  8. Di kolom GCP Bucket Name, masukkan nama bucket GCS Anda (misalnya, f5-dcs-logs).

  9. Di dropdown GCP Cloud Credentials, pilih kredensial cloud yang Anda buat sebelumnya (misalnya, gcp-chronicle-logs).

  10. Opsional: Luaskan Tampilkan Kolom Lanjutan untuk mengonfigurasi opsi batch:

    • Opsi Waktu Tunggu Batch: Pilih Detik Waktu Tunggu dan masukkan nilai (default: 300 detik)
    • Peristiwa Maksimal Batch: Pilih Peristiwa Maksimal dan masukkan nilai antara 32 dan 2000 (biarkan tidak disetel jika tidak ada batas)
    • Batch Byte: Pilih Byte Maksimum dan masukkan nilai antara 4096 dan 1048576 (default: 10485760 byte / 10 MB)
  11. Klik Simpan dan Keluar.

Menguji koneksi

  1. Dalam daftar Global Log Receiver, temukan penerima yang Anda buat (misalnya, chronicle-gcs-receiver).
  2. Klik tiga titik (...) di kolom Tindakan.
  3. Pilih Uji Koneksi.
  4. Tunggu hingga pengujian selesai.
  5. Pesan yang menunjukkan koneksi berhasil akan muncul.

Memverifikasi log di bucket GCS

  1. Buka Cloud Storage > Buckets di konsol GCP.
  2. Klik nama bucket Anda (misalnya, f5-dcs-logs).
  3. Pastikan file log dibuat di bucket.
  4. F5 Distributed Cloud mengatur log dalam struktur folder berikut:

    YYYY/MM/DD/HH/
    
    • Folder dibuat untuk setiap hari (YYYY/MM/DD)
    • Dalam setiap folder hari, subfolder dibuat untuk setiap jam (HH)
    • Setiap 5 menit, file gzip terkompresi baru ditulis ke subfolder per jam
    • File dalam format NDJSON (JSON yang dibatasi baris baru)
  5. Klik file gzip untuk mendownload dan memeriksa format log.

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.

Dapatkan email akun layanan

  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, F5 DCS Logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih F5 Distributed Cloud Services sebagai Log type.
  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:

      gs://f5-dcs-logs/
      

      Ganti f5-dcs-logs dengan nama bucket GCS Anda.

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

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, f5-dcs-logs).
  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.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
_id metadata.product_log_id Nilai disalin secara langsung
src principal.namespace Nilai disalin secara langsung
kubernetes_labels_app target.resource.attribute.labels Digabungkan dari app_label (berasal dari kubernetes_labels_app)
kubernetes_host target.hostname Nilai disalin secara langsung
kubernetes_container_name target.resource.product_object_id Nilai disalin secara langsung
bot_info.classification security_result.detection_fields Digabungkan dari bot_info_classification_label (berasal dari bot_info.classification)
bot_info.name security_result.detection_fields Digabungkan dari bot_info_name_label (berasal dari bot_info.name)
bot_info.type security_result.detection_fields Digabungkan dari bot_info_type_label (berasal dari bot_info.type)
timestamp @timestamp Diuraikan menggunakan filter tanggal dengan RFC3339, UNIX, ISO8601
visitor_id security_result.detection_fields Digabungkan dari visitor_id_label (berasal dari visitor_id)
tag security_result.detection_fields Digabungkan dari tag_label (berasal dari tag)
tindakan security_result.action Setel ke ALLOW jika kecocokan diizinkan, BLOCK jika kecocokan ditolak
tingkat keseriusan, security_result.severity Setel ke TINGGI jika ada error/peringatan; KRITIS jika penting; SEDANG jika pemberitahuan; RENDAH jika informasi/info
tingkat keseriusan, security_result.severity_details Nilai disalin secara langsung
api_endpoint target.labels Digabungkan dari api_endpoint_label (berasal dari api_endpoint)
app_firewall_name principal.process.command_line Nilai disalin secara langsung
app_type security_result.detection_fields Digabungkan dari about_app_type (berasal dari app_type)
as_org security_result.detection_fields Digabungkan dari about_as_org (berasal dari as_org)
asn security_result.detection_fields Digabungkan dari about_asn (berasal dari asn)
kubernetes.pod_id security_result.detection_fields Digabungkan dari about_pod_id (berasal dari kubernetes.pod_id)
kubernetes.pod_name security_result.detection_fields Digabungkan dari about_pod_name (berasal dari kubernetes.pod_name)
latitude principal.location.region_latitude Dikonversi menjadi float
longitude principal.location.region_longitude Dikonversi menjadi float
req_params additional.fields Digabungkan dari about_req_params (berasal dari req_params)
as_number additional.fields Digabungkan dari about_as_number (dikonversi menjadi string dari as_number)
x_forwarded_for intermediary.ip Digabungkan jika IP valid
x_forwarded_for security_result.about.resource.attribute.labels Digabungkan dari x_forwarded_for_label jika bukan IP
policy_hit.malicious_user_mitigate_action security_result.detection_fields Digabungkan dari malicious_user_label (berasal dari policy_hit.malicious_user_mitigate_action)
policy_hit.policy security_result.about.resource.attribute.labels Digabungkan dari policy_label (berasal dari policy_hit.policy)
policy_hit.policy_namespace additional.fields Digabungkan dari policy_namespace_label (berasal dari policy_hit.policy_namespace)
policy_hit.policy_rule security_result.rule_name Nilai disalin secara langsung
policy_hit.policy_rule_description security_result.description Nilai disalin secara langsung
policy_hit.policy_set target.resource.name Nilai disalin secara langsung
policy_hit.result additional.fields Digabungkan dari result_label (berasal dari policy_hit.result)
vhost_id security_result.detection_fields Digabungkan dari vhostlabel (berasal dari vhost_id)
messageid security_result.detection_fields Digabungkan dari messageid_label (diperoleh dari messageid)
sec_event_name security_result.detection_fields Digabungkan dari sec_event_name_label (berasal dari sec_event_name)
sec_event_type security_result.detection_fields Digabungkan dari sec_event_type_label (berasal dari sec_event_type)
vh_name security_result.detection_fields Digabungkan dari vhost_name_label (berasal dari vh_name)
tls_fingerprint security_result.detection_fields Digabungkan dari tls_fingerprint_label (berasal dari tls_fingerprint)
waktu additional.fields Digabungkan dari time_label (berasal dari waktu)
kubernetes.namespace_name additional.fields Digabungkan dari namespace_name_label (berasal dari kubernetes.namespace_name)
src_instance additional.fields Digabungkan dari src_instance_label (berasal dari src_instance)
violation_rating additional.fields Digabungkan dari violation_rating_label (berasal dari violation_rating)
req_size additional.fields Digabungkan dari req_size_label (dikonversi menjadi string dari req_size)
rsp_code additional.fields Digabungkan dari rsp_code_label (dikonversi menjadi string dari rsp_code)
rsp_code_class additional.fields Digabungkan dari rsp_code_class_label (dikonversi menjadi string dari rsp_code_class)
rsp_size additional.fields Digabungkan dari rsp_size_label (dikonversi menjadi string dari rsp_size)
original_path additional.fields Digabungkan dari original_path_label (berasal dari original_path)
req_path target.url Nilai disalin secara langsung
req_headers_size additional.fields Digabungkan dari req_headers_size_label (berasal dari req_headers_size)
recommended_action additional.fields Digabungkan dari recommended_action_label (berasal dari recommended_action)
enforcement_mode additional.fields Digabungkan dari enforcement_mode_label (berasal dari enforcement_mode)
src_ip principal.ip, principal.asset.ip Digabungkan jika cocok dengan regex IPv4
host principal.ip, principal.asset.ip Digabungkan jika cocok dengan regex IPv4
hostname principal.hostname, principal.asset.hostname Nilai disalin langsung jika tidak kosong atau -
http_version network.application_protocol_version Nilai disalin secara langsung
http_version network.application_protocol Setel ke HTTP jika berisi HTTP, HTTPS jika berisi HTTPS
jaringan principal.nat_ip Digabungkan jika cocok dengan regex IPv4
dst_ip target.ip, target.asset.ip Digabungkan jika cocok dengan regex IPv4
dst_port target.port Dikonversi ke bilangan bulat
src_port principal.port Dikonversi ke bilangan bulat
src_site additional.fields Digabungkan dari src_site_field (berasal dari src_site)
situs additional.fields Digabungkan dari site_field (berasal dari situs)
cluster_name additional.fields Digabungkan dari cluster_name_field (berasal dari cluster_name)
domain principal.administrative_domain Nilai disalin secara langsung
metode network.http.method Nilai disalin langsung jika tidak kosong atau N/A
namespace target.namespace Nilai disalin secara langsung
city principal.location.city Nilai disalin secara langsung
aliran security_result.detection_fields Digabungkan dari stream_label (berasal dari stream)
region principal.location.country_or_region Nilai disalin secara langsung
pengguna principal.user.userid Diekstrak dari pengguna menggunakan pola grok untuk user_id
user_ip target.ip, target.asset.ip Digabungkan dari user_ip yang diekstrak
Cookie additional.fields Digabungkan dari cookie (berasal dari Cookie di req_headers)
X-F5-Request-Id security_result.detection_fields Digabungkan dari x_f5_request_id (berasal dari X-F5-Request-Id di req_headers)
X-Request-Id security_result.detection_fields Digabungkan dari request_id (berasal dari X-Request-Id di req_headers)
security_result security_result Digabungkan secara langsung
has_network, has_principal, has_target metadata.event_type Disetel ke NETWORK_CONNECTION jika semuanya benar; STATUS_UPDATE jika has_principal benar; atau GENERIC_EVENT
metadata.vendor_name Tetapkan ke "F5_DCS"
metadata.product_name Tetapkan ke "F5 DCS"
perantara perantara Digabungkan secara langsung

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