收集 F5 Distributed Cloud Services 服務記錄

剖析器版本:6.0

支援的服務:

本文說明如何使用 Google Cloud Storage V2,將 F5 Distributed Cloud Services 服務記錄擷取至 Google Security Operations。

F5 Distributed Cloud Services 是以 SaaS 為基礎的安全、網路和應用程式管理平台,提供分散式雲端基礎架構、應用程式推送、API 安全防護和網頁應用程式防火牆功能,適用於多雲端和邊緣位置。

事前準備

請確認您符合下列必要條件:

  • Google SecOps 執行個體
  • 已啟用 Cloud Storage API 的 Google Cloud 專案
  • 建立及管理 GCS bucket 的權限
  • 具備管理 GCS bucket IAM 政策的權限
  • F5 Distributed Cloud 控制台的特殊存取權
  • 在 F5 Distributed Cloud 建立全域記錄接收器物件的權限

建立 Google Cloud Storage bucket

  1. 前往 Google Cloud 控制台。
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
  4. 按一下「建立值區」。
  5. 提供下列設定詳細資料:

    設定 值
    為 bucket 命名 輸入全域不重複的名稱 (例如 f5-dcs-logs)
    位置類型 請根據需求選擇 (單一區域、雙區域、多區域)
    位置 選取位置 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或資料保留政策
  6. 點選「建立」。

設定 F5 Distributed Cloud,將資料匯出至 GCS

將 GCS bucket 新增至防火牆許可清單

  1. 您必須將下列 IP 位址範圍新增至防火牆許可清單,F5 Distributed Cloud Global Log Receiver 才能運作:

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. 如果 GCS bucket 使用 VPC Service Controls 或防火牆規則,請將這些 IP 範圍加入許可清單。

為 F5 Distributed Cloud 建立 Google Cloud 服務帳戶

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  2. 按一下「Create Service Account」(建立服務帳戶)。
  3. 提供下列設定詳細資料:

    • 服務帳戶名稱:輸入 f5-dcs-log-writer (或描述性名稱)
    • 服務帳戶說明:輸入 Service account for F5 Distributed Cloud to write logs to GCS
  4. 按一下「建立並繼續」。

  5. 在「將專案存取權授予這個服務帳戶」部分:

    1. 按一下「請選擇角色」。
    2. 搜尋並選取「Storage 物件管理員」。
  6. 按一下「繼續」。

  7. 按一下「完成」。

建立服務帳戶金鑰

  1. 在「Service Accounts」(服務帳戶) 清單中,按一下您建立的服務帳戶 (例如 f5-dcs-log-writer)。
  2. 前往「金鑰」分頁。
  3. 依序點選「新增金鑰」>「建立新的金鑰」。
  4. 選取「JSON」做為金鑰類型。
  5. 點選「建立」。
  6. JSON 金鑰檔案會下載到您的電腦。
  7. 請妥善保存這個檔案。後續步驟會用到。

授予 GCS bucket 的 IAM 權限

  1. 依序前往「Cloud Storage」>「Bucket」。
  2. 點選 bucket 名稱 (例如 f5-dcs-logs)。
  3. 前往「權限」分頁。
  4. 按一下「授予存取權」。
  5. 提供下列設定詳細資料:
    • 新增主體:輸入服務帳戶電子郵件地址 (例如 f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com)
    • 指派角色:選取「Storage 物件管理員」
  6. 按一下「儲存」。

在 F5 Distributed Cloud 控制台建立 Google Cloud 憑證

  1. 登入 F5 Distributed Cloud 控制台 (https://<tenant>.console.ves.volterra.io)。
  2. 在首頁選取「Multi-Cloud Network Connect」服務。
  3. 依序前往「管理」>「網站管理」>「雲端憑證」。
  4. 按一下「Add Cloud Credentials」。
  5. 在「Metadata」部分:
    • 名稱:輸入描述性名稱 (例如 gcp-chronicle-logs)
    • 說明 (選填):輸入 Cloud Storage credentials for Google SecOps log export
  6. 在「Cloud Credentials Type」(雲端憑證類型) 部分,選取「GCP Credentials」(GCP 憑證)。
  7. 按一下「GCP Credentials」欄位中的「Configure」。
  8. 在「Credential Type」(憑證類型) 下拉式選單中,選取「Service Account Credentials File」(服務帳戶憑證檔案)。
  9. 按一下「Upload File」,然後選取您在先前步驟中下載的 JSON 金鑰檔案。
  10. 按一下「套用」。
  11. 按一下「儲存並退出」。

建立全域記錄接收器

  1. 在 F5 Distributed Cloud 控制台中,確認您位於「多雲端網路連線」服務。
  2. 依序前往「Manage」>「Log Management」>「Global Log Receiver」。
  3. 按一下「Add Global Log Receiver」(新增全域記錄接收器)。
  4. 在「Metadata」(中繼資料) 部分:

    • 名稱:輸入描述性名稱 (例如 chronicle-gcs-receiver)
    • 說明 (選填):輸入 Global log receiver for Google SecOps SIEM
  5. 在「Log Type」(記錄類型) 下拉式選單中,選取要匯出的記錄類型:

    • 要求記錄:HTTP 要求/回應記錄,包含使用者、路徑、方法、回應代碼
    • 安全性事件:WAF 事件、DDoS、API 防護、Bot Defense 事件
    • 稽核記錄:透過公開 API 變更設定
    • DNS 要求記錄:DNS 查詢記錄
  6. 在「Log Message Selection」(記錄訊息選取) 下拉式選單中,選取下列其中一項:

    • 選取目前命名空間的記錄:僅傳送目前命名空間的記錄
    • 選取所有命名空間的記錄:傳送所有命名空間的記錄 (建議做法,可全面掌握情況)
    • 選取特定命名空間中的記錄:傳送指定命名空間中的記錄 (按一下「新增項目」即可新增命名空間名稱)
  7. 在「Receiver Configuration」下拉式選單中,選取「GCP Bucket Receiver」。

  8. 在「GCP Bucket Name」(GCP bucket 名稱) 欄位中,輸入 GCS bucket 的名稱 (例如 f5-dcs-logs)。

  9. 在「GCP Cloud Credentials」(GCP 雲端憑證) 下拉式選單中,選取先前建立的雲端憑證 (例如 gcp-chronicle-logs)。

  10. 選用:展開「Show Advanced Fields」,設定批次選項:

    • 批次逾時選項:選取「逾時秒數」並輸入值 (預設值:300 秒)
    • 批次事件數量上限:選取「事件數量上限」,然後輸入介於 32 到 2000 之間的值 (如不設限,請留空)
    • 批次位元組數:選取「位元組數上限」,然後輸入介於 4096 和 1048576 之間的值 (預設值:10485760 位元組/10 MB)
  11. 按一下「儲存並退出」。

測試連線

  1. 在「Global Log Receiver」(全域記錄接收器) 清單中,找出您建立的接收器 (例如 chronicle-gcs-receiver)。
  2. 按一下「動作」欄中的三點圖示 (...)。
  3. 選取「測試連線」。
  4. 等待測試完成。
  5. 畫面上應會顯示連線成功的訊息。

驗證 GCS bucket 中的記錄

  1. 在 GCP 控制台中,依序前往「Cloud Storage」>「Bucket」。
  2. 點選 bucket 名稱 (例如 f5-dcs-logs)。
  3. 確認 bucket 中是否已建立記錄檔。
  4. F5 Distributed Cloud 會按照下列資料夾結構整理記錄:

    YYYY/MM/DD/HH/
    
    • 系統會為每天建立一個資料夾 (YYYY/MM/DD)
    • 在每個日期資料夾中,系統會為每小時 (HH) 建立一個子資料夾
    • 每 5 分鐘,新的壓縮 gzip 檔案會寫入每小時子資料夾
    • 檔案格式為 NDJSON (以換行符號分隔的 JSON)
  5. 點選 gzip 檔案,下載並檢查記錄格式。

擷取 Google SecOps 服務帳戶

Google SecOps 會使用專屬服務帳戶,從 GCS bucket 讀取資料。您必須授予這個服務帳戶值區存取權。

取得服務帳戶電子郵件地址

  1. 依序前往「設定」>「資料管理」>「動態饋給」。如果使用的是 SIEM 專用平台,請依序前往「設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 F5 DCS Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」。
  6. 選取「F5 Distributed Cloud Services」做為「Log type」(記錄類型)。
  7. 按一下「Get Service Account」。系統會顯示專屬服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 複製這個電子郵件地址,下一個步驟將會用到。

  9. 點選「下一步」。

  10. 指定下列輸入參數的值:

    • Storage bucket URL:輸入 GCS bucket URI:

      gs://f5-dcs-logs/
      

      將 f5-dcs-logs 替換為 GCS bucket 名稱。

    • 來源刪除選項:根據偏好選取刪除選項:

      • Never:轉移後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:在成功轉移後刪除檔案。
      • 刪除已轉移的檔案和空白目錄:成功轉移後,刪除檔案和空白目錄。

    • 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)

    • 資產命名空間:資產命名空間

    • 擷取標籤:要套用至這個動態饋給事件的標籤

  11. 點選「下一步」。

  12. 在「完成」畫面中檢查新的新聞動態消息設定,然後按一下「提交」。

將 IAM 權限授予 Google SecOps 服務帳戶

Google SecOps 服務帳戶必須具備 GCS bucket 的「Storage 物件檢視者」角色。

  1. 依序前往「Cloud Storage」>「Bucket」。
  2. 點選 bucket 名稱 (例如 f5-dcs-logs)。
  3. 前往「權限」分頁。
  4. 按一下「授予存取權」。
  5. 提供下列設定詳細資料:

    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址
    • 指派角色:選取「Storage 物件檢視者」
  6. 按一下「儲存」。

UDM 對應表

記錄欄位 UDM 對應 邏輯
_id metadata.product_log_id 直接複製值
src principal.namespace 直接複製值
kubernetes_labels_app target.resource.attribute.labels 從 app_label 合併 (衍生自 kubernetes_labels_app)
kubernetes_host target.hostname 直接複製值
kubernetes_container_name target.resource.product_object_id 直接複製值
bot_info.classification security_result.detection_fields 從 bot_info_classification_label 合併 (衍生自 bot_info.classification)
bot_info.name security_result.detection_fields Merged from bot_info_name_label (derived from bot_info.name)
bot_info.type security_result.detection_fields Merged from bot_info_type_label (derived from bot_info.type)
時間戳記 @timestamp 使用日期篩選器剖析,格式為 RFC 3339、UNIX、ISO8601
visitor_id security_result.detection_fields 從 visitor_id_label (衍生自 visitor_id) 合併
標記 security_result.detection_fields 從 tag_label 合併 (衍生自 tag)
動作 security_result.action 如果與允許標籤相符,請設為「ALLOW」;如果與拒絕標籤相符,請設為「BLOCK」
嚴重性 security_result.severity 如果發生錯誤/警告,請設為「HIGH」;如果是重大錯誤,請設為「CRITICAL」;如果是通知,請設為「MEDIUM」;如果是資訊/info,請設為「LOW」
嚴重性 security_result.severity_details 直接複製值
api_endpoint target.labels 從 api_endpoint_label 合併 (衍生自 api_endpoint)
app_firewall_name principal.process.command_line 直接複製值
app_type security_result.detection_fields 從 about_app_type 合併 (衍生自 app_type)
as_org security_result.detection_fields 從 about_as_org 合併 (衍生自 as_org)
asn security_result.detection_fields 從 about_asn 合併 (衍生自 asn)
kubernetes.pod_id security_result.detection_fields 從 about_pod_id 合併 (衍生自 kubernetes.pod_id)
kubernetes.pod_name security_result.detection_fields 從 about_pod_name 合併 (衍生自 kubernetes.pod_name)
latitude principal.location.region_latitude 已轉換為浮點數
longitude principal.location.region_longitude 已轉換為浮點數
req_params additional.fields Merged from about_req_params (derived from req_params)
as_number additional.fields Merged from about_as_number (converted to string from as_number)
x_forwarded_for intermediary.ip 如果 IP 有效,則會合併
x_forwarded_for security_result.about.resource.attribute.labels 如果不是 IP,則從 x_forwarded_for_label 合併
policy_hit.malicious_user_mitigate_action security_result.detection_fields 從 malicious_user_label 合併 (衍生自 policy_hit.malicious_user_mitigate_action)
policy_hit.policy security_result.about.resource.attribute.labels 從 policy_label 合併 (衍生自 policy_hit.policy)
policy_hit.policy_namespace additional.fields 從 policy_namespace_label 合併 (衍生自 policy_hit.policy_namespace)
policy_hit.policy_rule security_result.rule_name 直接複製值
policy_hit.policy_rule_description security_result.description 直接複製值
policy_hit.policy_set target.resource.name 直接複製值
policy_hit.result additional.fields 從 result_label 合併 (衍生自 policy_hit.result)
vhost_id security_result.detection_fields 從 vhostlabel (衍生自 vhost_id) 合併
messageid security_result.detection_fields 從 messageid_label 合併 (衍生自 messageid)
sec_event_name security_result.detection_fields 從 sec_event_name_label 合併 (衍生自 sec_event_name)
sec_event_type security_result.detection_fields 從 sec_event_type_label 合併 (衍生自 sec_event_type)
vh_name security_result.detection_fields 從 vhost_name_label (衍生自 vh_name) 合併
tls_fingerprint security_result.detection_fields 從 tls_fingerprint_label (衍生自 tls_fingerprint) 合併
時間 additional.fields 從 time_label 合併 (衍生自 time)
kubernetes.namespace_name additional.fields 從 namespace_name_label 合併 (衍生自 kubernetes.namespace_name)
src_instance additional.fields 從 src_instance_label 合併 (衍生自 src_instance)
violation_rating additional.fields Merged from violation_rating_label (derived from violation_rating)
req_size additional.fields 從 req_size_label 合併 (從 req_size 轉換為字串)
rsp_code additional.fields 從 rsp_code_label 合併 (從 rsp_code 轉換為字串)
rsp_code_class additional.fields 從 rsp_code_class_label 合併 (從 rsp_code_class 轉換為字串)
rsp_size additional.fields 從 rsp_size_label 合併 (從 rsp_size 轉換為字串)
original_path additional.fields 合併自 original_path_label (衍生自 original_path)
req_path target.url 直接複製值
req_headers_size additional.fields 從 req_headers_size_label 合併 (衍生自 req_headers_size)
recommended_action additional.fields Merged from recommended_action_label (derived from recommended_action)
enforcement_mode additional.fields 從 enforcement_mode_label 合併 (衍生自 enforcement_mode)
src_ip principal.ip、principal.asset.ip 如果與 IPv4 規則運算式相符,則合併
主機 principal.ip、principal.asset.ip 如果與 IPv4 規則運算式相符,則合併
主機名稱 principal.hostname、principal.asset.hostname 如果不是空白或 -,則直接複製值
http_version network.application_protocol_version 直接複製值
http_version network.application_protocol 如果包含 HTTP,請設為 HTTP;如果包含 HTTPS,請設為 HTTPS
網路 principal.nat_ip 如果與 IPv4 規則運算式相符,則合併
dst_ip target.ip、target.asset.ip 如果與 IPv4 規則運算式相符,則合併
dst_port target.port 已轉換為整數
src_port principal.port 已轉換為整數
src_site additional.fields 從 src_site_field 合併 (衍生自 src_site)
網站 additional.fields 從 site_field 合併 (衍生自 site)
cluster_name additional.fields 從 cluster_name_field (衍生自 cluster_name) 合併
網域 principal.administrative_domain 直接複製值
方法 network.http.method 如果不是空白或不適用,則直接複製值
命名空間 target.namespace 直接複製值
城市 principal.location.city 直接複製值
串流 security_result.detection_fields 從 stream_label 合併 (衍生自 stream)
區域 principal.location.country_or_region 直接複製值
使用者 principal.user.userid 使用 user_id 的 grok 模式從使用者擷取
user_ip target.ip、target.asset.ip 從擷取的 user_ip 合併
Cookie additional.fields 從 Cookie 合併 (衍生自 req_headers 中的 Cookie)
X-F5-Request-Id security_result.detection_fields 從 x_f5_request_id 合併 (衍生自 req_headers 中的 X-F5-Request-Id)
X-Request-Id security_result.detection_fields 從 request_id 合併 (衍生自 req_headers 中的 X-Request-Id)
security_result security_result 直接合併
has_network, has_principal, has_target metadata.event_type 如果全部為 true,則設為 NETWORK_CONNECTION;如果 has_principal 為 true,則設為 STATUS_UPDATE;否則設為 GENERIC_EVENT
metadata.vendor_name 設為「F5_DCS」
metadata.product_name 設為「F5 DCS」
中介 中介 直接合併
rsp_size event.idm.read_only_udm.network.received_bytes 從變更記錄對應
dst event.idm.read_only_udm.target.ip 和 event.idm.read_only_udm.target.asset.ip 從變更記錄對應
has_sec_event event.idm.read_only_udm.additional.fields 從變更記錄對應
app event.idm.read_only_udm.target.application 從變更記錄對應
node_id event.idm.read_only_udm.additional.fields 從變更記錄對應
sample_rate event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_downstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_upstream_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_first_upstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_downstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_upstream_rx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
time_to_last_upstream_tx_byte event.idm.read_only_udm.additional.fields 從變更記錄對應
timeseries_enabled event.idm.read_only_udm.additional.fields 從變更記錄對應
sni event.idm.read_only_udm.additional.fields 從變更記錄對應
terminated_time event.idm.read_only_udm.additional.fields 從變更記錄對應
rtt_downstream_seconds event.idm.read_only_udm.additional.fields 從變更記錄對應
rtt_upstream_seconds event.idm.read_only_udm.additional.fields 從變更記錄對應
rsp_code_details event.idm.read_only_udm.additional.fields 從變更記錄對應
authority event.idm.read_only_udm.additional.fields 從變更記錄對應
connected_time event.idm.read_only_udm.additional.fields 從變更記錄對應
req_id event.idm.read_only_udm.additional.fields 從變更記錄對應
proxy_type event.idm.read_only_udm.additional.fields 從變更記錄對應
vh_type event.idm.read_only_udm.additional.fields 從變更記錄對應
dst_instance event.idm.read_only_udm.additional.fields 從變更記錄對應
lb_port event.idm.read_only_udm.additional.fields 從變更記錄對應
mtls event.idm.read_only_udm.additional.fields 從變更記錄對應
ja4_tls_fingerprint event.idm.read_only_udm.additional.fields 從變更記錄對應
duration_with_data_tx_delay event.idm.read_only_udm.additional.fields 從變更記錄對應
dst_site event.idm.read_only_udm.additional.fields 從變更記錄對應
protocol and scheme event.idm.read_only_udm.network.application_protocol 從變更記錄對應
referer event.idm.read_only_udm.network.http.referral_url 從變更記錄對應
tls_cipher_suite event.idm.read_only_udm.network.tls.cipher 從變更記錄對應
tls_version event.idm.read_only_udm.network.tls.version 從變更記錄對應
user_agent event.idm.read_only_udm.network.http.user_agent 從變更記錄對應
user_agent event.idm.read_only_udm.network.http.parsed_user_agent 從變更記錄對應
browser_type event.idm.read_only_udm.principal.browser.browser_type 從變更記錄對應
content-type event.idm.read_only_udm.principal.process.file.mime_type 從變更記錄對應
response_flags security_result.detection_fields 從變更記錄對應
original_authority event.idm.read_only_udm.target.administrative_domain 從變更記錄對應
country event.idm.read_only_udm.principal.location.country_or_region 從變更記錄對應

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。