Mengumpulkan log layanan F5 Distributed Cloud Services
Versi Parser: 6.0
Dokumen ini menjelaskan cara menyerap log layanan 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 multi-cloud dan edge.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Project Google Cloud dengan Cloud Storage API yang 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
- 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 Memberi nama bucket Anda Masukkan nama yang unik secara global (misalnya, f5-dcs-logs)Location type Pilih sesuai kebutuhan Anda (Region, Dual-region, Multi-region) Location Pilih lokasi (misalnya, us-central1)Storage class Standard (direkomendasikan untuk log yang sering diakses) Kontrol akses Seragam (direkomendasikan) Alat perlindungan Opsional: Mengaktifkan pembuatan versi objek atau kebijakan retensi Klik Create.
Mengonfigurasi F5 Distributed Cloud untuk mengekspor ke GCS
Menambahkan bucket GCS ke daftar yang diizinkan firewall
F5 Distributed Cloud Global Log Receiver memerlukan rentang alamat IP berikut untuk ditambahkan ke daftar yang diizinkan firewall Anda:
193.16.236.64/29185.160.8.152/29
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
- Di Konsol Google Cloud, buka IAM & Admin > Service Accounts.
- Klik Create Service Account.
Berikan detail konfigurasi berikut:
- Service account name: Masukkan
f5-dcs-log-writer(atau nama deskriptif) - Service account description: Masukkan
Service account for F5 Distributed Cloud to write logs to GCS
- Service account name: Masukkan
Klik Create and Continue.
Di bagian Grant this service account access to project:
- Klik Pilih peran.
- Telusuri dan pilih Storage Object Admin.
Klik Lanjutkan.
Klik Done.
Membuat kunci akun layanan
- Dalam daftar Service Accounts, klik akun layanan yang Anda buat (misalnya,
f5-dcs-log-writer). - Buka tab Keys.
- Klik Add Key > Create new key.
- Pilih JSON sebagai jenis kunci.
- Klik Create.
- File kunci JSON akan didownload ke komputer Anda.
- Simpan file ini dengan aman. Anda akan membutuhkannya pada langkah berikutnya.
Memberikan izin IAM di bucket GCS
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda (misalnya,
f5-dcs-logs). - Buka tab Izin.
- Klik Grant access.
- Berikan detail konfigurasi berikut:
- Tambahkan entitas: Masukkan email akun layanan (misalnya,
f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com) - Assign roles: Pilih Storage Object Admin
- Tambahkan entitas: Masukkan email akun layanan (misalnya,
- Klik Simpan.
Membuat kredensial Google Cloud di konsol F5 Distributed Cloud
- Login ke konsol F5 Distributed Cloud di
https://<tenant>.console.ves.volterra.io. - Pilih layanan Multi-Cloud Network Connect dari halaman beranda.
- Buka Manage > Site Management > Cloud Credentials.
- Klik Add Cloud Credentials.
- Di bagian Metadata:
- Name: Masukkan nama deskriptif (misalnya,
gcp-chronicle-logs) - Deskripsi (opsional): Masukkan
Cloud Storage credentials for Google SecOps log export
- Name: Masukkan nama deskriptif (misalnya,
- Di bagian Cloud Credentials Type, pilih GCP Credentials.
- Klik Configure di kolom GCP Credentials.
- Di dropdown Credential Type, pilih Service Account Credentials File.
- Klik Upload File dan pilih file kunci JSON yang Anda download di langkah sebelumnya.
- Klik Terapkan.
- Klik Save and Exit.
Membuat Penerima Log Global
- Di F5 Distributed Cloud Console, pastikan Anda berada di layanan Multi-Cloud Network Connect.
- Buka Manage > Log Management > Global Log Receiver.
- Klik Add Global Log Receiver.
Di bagian Metadata:
- Name: Masukkan nama deskriptif (misalnya,
chronicle-gcs-receiver) - Deskripsi (opsional): Masukkan
Global log receiver for Google SecOps SIEM
- Name: Masukkan nama deskriptif (misalnya,
Di dropdown Log Type, 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, peristiwa Bot Defense
- Log Audit: Perubahan konfigurasi melalui API publik
- Log Permintaan DNS: Log kueri DNS
Di dropdown Log Message Selection, pilih salah satu opsi berikut:
- Select logs from current namespace: Mengirim log hanya dari namespace saat ini
- Select logs from all namespaces: Mengirim log dari semua namespace (direkomendasikan untuk visibilitas yang komprehensif)
- Select logs in specific namespaces: Mengirim log dari namespace yang ditentukan (klik Add item untuk menambahkan nama namespace)
Di dropdown Receiver Configuration, pilih GCP Bucket Receiver.
Di kolom GCP Bucket Name, masukkan nama bucket GCS Anda (misalnya,
f5-dcs-logs).Di dropdown GCP Cloud Credentials, pilih kredensial cloud yang Anda buat sebelumnya (misalnya,
gcp-chronicle-logs).Opsional: Luaskan Show Advanced Fields untuk mengonfigurasi opsi batch:
- Batch Timeout Options: Pilih Timeout Seconds dan masukkan nilai (default:
300detik) - Batch Max Events: Pilih Max Events dan masukkan nilai antara 32 dan 2000 (biarkan tidak ditetapkan untuk tidak ada batas)
- Batch Bytes: Pilih Max Bytes dan masukkan nilai antara 4096 dan 1048576 (default:
10485760byte / 10 MB)
- Batch Timeout Options: Pilih Timeout Seconds dan masukkan nilai (default:
Klik Save and Exit.
Menguji koneksi
- Dalam daftar Global Log Receiver, temukan penerima yang Anda buat (misalnya,
chronicle-gcs-receiver). - Klik titik tiga (...) di kolom Actions.
- Pilih Test Connection.
- Tunggu hingga pengujian selesai.
Pesan yang menunjukkan koneksi berhasil akan muncul.
Memverifikasi log di bucket GCS
- Buka Cloud Storage > Buckets di GCP Console.
- Klik nama bucket Anda (misalnya,
f5-dcs-logs). - Pastikan file log dibuat di bucket.
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)
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.
Mendapatkan email akun layanan
- Buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Klik Tambahkan Feed Berita Baru.
- Klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
F5 DCS Logs). - Pilih Google Cloud Storage V2 sebagai Source type.
- Pilih F5 Distributed Cloud Services sebagai Log type.
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:
Storage bucket URL: Masukkan URI bucket GCS:
gs://f5-dcs-logs/Ganti
f5-dcs-logsdengan nama bucket GCS Anda.Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:
- Never: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
- Delete transferred files: Menghapus file setelah transfer berhasil.
Delete transferred files and empty directories: Menghapus file dan direktori kosong setelah transfer berhasil.
Usia File Maksimum: Sertakan file yang diubah dalam jumlah 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 berita baru Anda di layar Finalize, lalu klik Submit.
Memberikan izin IAM ke akun layanan Google SecOps
Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.
- Buka Cloud Storage > Buckets.
- Klik nama bucket Anda (misalnya,
f5-dcs-logs). - Buka tab Izin.
- Klik Grant access.
Berikan detail konfigurasi berikut:
- Add principals: Tempel email akun layanan Google SecOps
- Assign roles: Pilih Storage Object Viewer
Klik Simpan.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| _id | metadata.product_log_id | Nilai disalin langsung |
| src | principal.namespace | Nilai disalin langsung |
| kubernetes_labels_app | target.resource.attribute.labels | Digabungkan dari app_label (berasal dari kubernetes_labels_app) |
| kubernetes_host | target.hostname | Nilai disalin langsung |
| kubernetes_container_name | target.resource.product_object_id | Nilai disalin 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 | Diurai menggunakan filter tanggal dengan RFC 3339, 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 cocok dengan allow, BLOCK jika cocok dengan deny |
| tingkat keseriusan, | security_result.severity | Setel ke HIGH jika terjadi error/peringatan; CRITICAL jika kritis; MEDIUM jika pemberitahuan; LOW jika informasi/info |
| tingkat keseriusan, | security_result.severity_details | Nilai disalin langsung |
| api_endpoint | target.labels | Digabungkan dari api_endpoint_label (berasal dari api_endpoint) |
| app_firewall_name | principal.process.command_line | Nilai disalin 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 ke float |
| longitude | principal.location.region_longitude | Dikonversi ke 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 langsung |
| policy_hit.policy_rule_description | security_result.description | Nilai disalin langsung |
| policy_hit.policy_set | target.resource.name | Nilai disalin 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 (berasal 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 time) |
| 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 | Merged from violation_rating_label (derived from 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 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 ekspresi reguler IPv4 |
| host | principal.ip, principal.asset.ip | Digabungkan jika cocok dengan ekspresi reguler IPv4 |
| hostname | principal.hostname, principal.asset.hostname | Nilai disalin langsung jika tidak kosong atau - |
| http_version | network.application_protocol_version | Nilai disalin langsung |
| http_version | network.application_protocol | Tetapkan ke HTTP jika berisi HTTP, HTTPS jika berisi HTTPS |
| jaringan | principal.nat_ip | Digabungkan jika cocok dengan ekspresi reguler IPv4 |
| dst_ip | target.ip, target.asset.ip | Digabungkan jika cocok dengan ekspresi reguler 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 site) |
| cluster_name | additional.fields | Digabungkan dari cluster_name_field (berasal dari cluster_name) |
| domain | principal.administrative_domain | Nilai disalin langsung |
| metode | network.http.method | Nilai disalin langsung jika tidak kosong atau T/A |
| namespace | target.namespace | Nilai disalin langsung |
| city | principal.location.city | Nilai disalin langsung |
| aliran | security_result.detection_fields | Digabungkan dari stream_label (berasal dari stream) |
| region | principal.location.country_or_region | Nilai disalin 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 | Setel ke NETWORK_CONNECTION jika semuanya benar; STATUS_UPDATE jika has_principal benar; jika tidak, GENERIC_EVENT |
| metadata.vendor_name | Tetapkan ke "F5_DCS" | |
| metadata.product_name | Setel ke "F5 DCS" | |
| perantara | perantara | Digabungkan secara langsung |
rsp_size |
event.idm.read_only_udm.network.received_bytes |
Dipetakan dari log perubahan |
dst |
event.idm.read_only_udm.target.ip dan event.idm.read_only_udm.target.asset.ip |
Dipetakan dari log perubahan |
has_sec_event |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
app |
event.idm.read_only_udm.target.application |
Dipetakan dari log perubahan |
node_id |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
sample_rate |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_first_downstream_tx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_first_upstream_rx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_first_upstream_tx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_last_downstream_tx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_last_rx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_last_upstream_rx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
time_to_last_upstream_tx_byte |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
timeseries_enabled |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
sni |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
terminated_time |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
rtt_downstream_seconds |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
rtt_upstream_seconds |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
rsp_code_details |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
authority |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
connected_time |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
req_id |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
proxy_type |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
vh_type |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
dst_instance |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
lb_port |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
mtls |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
ja4_tls_fingerprint |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
duration_with_data_tx_delay |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
dst_site |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
protocol and scheme |
event.idm.read_only_udm.network.application_protocol |
Dipetakan dari log perubahan |
referer |
event.idm.read_only_udm.network.http.referral_url |
Dipetakan dari log perubahan |
tls_cipher_suite |
event.idm.read_only_udm.network.tls.cipher |
Dipetakan dari log perubahan |
tls_version |
event.idm.read_only_udm.network.tls.version |
Dipetakan dari log perubahan |
user_agent |
event.idm.read_only_udm.network.http.user_agent |
Dipetakan dari log perubahan |
user_agent |
event.idm.read_only_udm.network.http.parsed_user_agent |
Dipetakan dari log perubahan |
browser_type |
event.idm.read_only_udm.principal.browser.browser_type |
Dipetakan dari log perubahan |
content-type |
event.idm.read_only_udm.principal.process.file.mime_type |
Dipetakan dari log perubahan |
response_flags |
security_result.detection_fields |
Dipetakan dari log perubahan |
original_authority |
event.idm.read_only_udm.target.administrative_domain |
Dipetakan dari log perubahan |
country |
event.idm.read_only_udm.principal.location.country_or_region |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.