收集 Omnissa Horizon (舊稱 VMware Horizon) 記錄

支援:

本文說明如何使用 Bindplane,將 Omnissa Horizon (舊稱 VMware Horizon) 記錄檔,擷取至 Google Security Operations。

Omnissa Horizon 是虛擬桌面基礎架構 (VDI) 平台,可向使用者提供虛擬桌面和應用程式。這項服務可集中管理內部部署和混合雲環境中的虛擬機器、監控工作階段,以及強制執行政策。剖析器會使用規則運算式 (grok 模式) 從原始系統記錄訊息中擷取欄位,並將這些欄位對應至統合式資料模型 (UDM)。

事前準備

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

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 Omnissa Horizon 連線伺服器之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • Omnissa Horizon 控制台的特殊權限存取權 (管理員角色)

取得 Bindplane 代理程式的 Google SecOps 憑證

如要向 Google SecOps 驗證 Bindplane 代理程式,請選擇下列其中一種方法:

  • 新部署作業:使用 Chronicle API (選項 1)。
  • 舊版部署作業:在 2027 年 7 月 20 日停用 Ingestion API 前,請繼續使用擷取驗證檔案 (選項 2)。
  1. 登入 Google Cloud 控制台,然後選取連結至 Google SecOps 執行個體的 Google Cloud 專案。
  2. 依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  3. 按一下「建立服務帳戶」。
  4. 提供下列設定詳細資料:
    • 服務帳戶名稱:輸入帳戶名稱 (例如 bindplane-ingest)。
    • 服務帳戶說明:輸入說明 (例如 Bindplane agent log ingestion)。
  5. 點按「Create and continue」(建立並繼續)。
  6. 在「將專案存取權授予這個服務帳戶」部分,按一下「選取角色」,然後選取「Chronicle 編輯者」。
  7. 依序點選「繼續」和「完成」。
  8. 按一下您建立的服務帳戶,然後前往「金鑰」分頁標籤。
  9. 依序點選「新增金鑰」>「建立新的金鑰」。
  10. 選取「JSON」,然後點選「建立」。金鑰檔案會下載到電腦。
  11. 將金鑰檔案儲存為 Bindplane 收集器目錄中的 ingestion-auth.json (Linux 為 /opt/observiq-otel-collector/ingestion-auth.json,Windows 為 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或更新 config.yaml 中的 creds_file_path,使其與儲存檔案的路徑相符。
  12. 依序前往「IAM & Admin」(IAM 與管理) >「Settings」(設定),然後複製「Project number」(專案編號)。匯出工具設定時會用到。

方法 2:下載擷取驗證檔案 (舊版)

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「收集代理程式」。
  3. 下載擷取驗證檔案。
  4. 將檔案安全地儲存在要安裝 Bindplane 代理程式的系統上。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」>「設定檔」。
  3. 複製並儲存「機構詳細資料」部分的客戶 ID。

安裝 Bindplane 代理程式

請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。

Windows 安裝

  1. 以管理員身分開啟「命令提示字元」或「PowerShell」。
  2. 執行下列指令:

    msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quiet
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sc query observiq-otel-collector
    

服務應顯示為「RUNNING」。

Linux 安裝

  1. 開啟具有 root 或 sudo 權限的終端機。
  2. 執行下列指令:

    sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.sh
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sudo systemctl status observiq-otel-collector
    

服務應顯示為「active (running)」。

其他安裝資源

如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南。

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 Google SecOps

找出設定檔

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

編輯設定檔

  • 將 config.yaml 的全部內容替換為下列設定:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/vmware_horizon:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: VMWARE_HORIZON
        raw_log_field: body
    
    service:
      pipelines:
        logs/vmware_horizon_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/vmware_horizon
    

設定參數

替換下列預留位置:

  • 接收器設定:

    • listen_address:要監聽的 IP 位址和通訊埠:

      • 0.0.0.0 在所有介面接聽電話 (建議)
      • 通訊埠 514 是標準的系統記錄通訊埠 (在 Linux 上需要根層級權限;如果沒有根層級權限,請使用 1514)
  • Exporter 設定:

    • creds_file_path:服務帳戶 JSON 金鑰檔案的完整路徑 (選項 1):

      • Linux:/opt/observiq-otel-collector/ingestion-auth.json
      • Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id:從 Google SecOps 控制台複製的客戶 ID

    • location:將 <LOCATION> 替換為 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1)。匯出工具會以這個值做為 chronicle.googleapis.com 的前置字元。如需完整清單,請參閱「區域性端點」。

    • project:依序前往「IAM 與管理」>「設定」,然後將 <PROJECT_NUMBER> 替換為專案編號。

    • endpoint:請將此值設為 chronicle.googleapis.com。

舊版擷取 API 匯出工具

  • 如果您使用方式 2 的擷取驗證檔案,請將 exporters 區塊替換成下列內容。將 creds_file_path 設為擷取驗證檔案的路徑。如果執行個體位於美國境外,請將 malachiteingestion-pa.googleapis.com 替換為區域端點 (例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/vmware_horizon:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: VMWARE_HORIZON
        raw_log_field: body
    

儲存設定檔

  • 編輯完畢後,請儲存檔案:
    • Linux:依序按下 Ctrl+O、Enter 和 Ctrl+X
    • Windows:依序點選「檔案」 > 「儲存」

重新啟動 Bindplane 代理程式,套用變更

如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:

  1. 執行下列指令:

    sudo systemctl restart observiq-otel-collector
    
  2. 確認服務是否正在執行:

    sudo systemctl status observiq-otel-collector
    
  3. 查看記錄檔是否有錯誤:

    sudo journalctl -u observiq-otel-collector -f
    

如要在 Windows 重新啟動 Bindplane 代理程式,請按照下列步驟操作:

  1. 您可以選擇下列其中一個選項:

    • 以管理員身分開啟命令提示字元或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • 服務控制台:
      1. 按下 Win+R 鍵,輸入 services.msc,然後按下 Enter 鍵。
      2. 找出「observIQ OpenTelemetry Collector」。
      3. 按一下滑鼠右鍵,然後選取「重新啟動」。
  2. 確認服務是否正在執行:

    sc query observiq-otel-collector
    
  3. 查看記錄檔是否有錯誤:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

在 Omnissa Horizon (舊稱 VMware Horizon) 中設定系統記錄轉送功能

  1. 使用管理員帳戶登入 Omnissa Horizon Console。
  2. 依序前往「設定」>「事件設定」。
  3. 在「傳送至系統記錄伺服器」部分,按一下「新增」。

  4. 提供下列設定詳細資料:

    • 伺服器位址:輸入 Bindplane 代理程式主機的 IP 位址 (例如 192.168.1.100)。
    • 「Port」(通訊埠):輸入 514。
    • 「通訊協定」:選取「UDP」。
  5. 按一下 [儲存]。

  6. 檢查 Bindplane 代理記錄,確認事件是否已轉送。

UDM 對應表

記錄欄位 UDM 對應 邏輯
ActionId metadata.product_log_id 原始記錄中的 ActionId 值會對應至 metadata.product_log_id。
admin_domain principal.administrative_domain 原始記錄中的 admin_domain 值會對應至 principal.administrative_domain。
BrokerName principal.hostname 原始記錄中的 BrokerName 值會對應至 principal.hostname。
BrokerSessionId network.session_id 原始記錄中的 BrokerSessionId 值會對應至 network.session_id。
ClientIpAddress principal.ip 原始記錄中的 ClientIpAddress 值會對應至 principal.ip。
CurrentSessionLength network.session_duration.seconds 原始記錄中的 CurrentSessionLength 值會轉換為整數,然後對應至 network.session_duration.seconds。
description metadata.description 原始記錄中的 description 值會對應至 metadata.description。
DesktopDisplayName principal.hostname 原始記錄中的 DesktopDisplayName 值會對應至 principal.hostname。
EventType metadata.product_event_type 原始記錄中的 EventType 值會對應至 metadata.product_event_type。
ForwardedClientIpAddress principal.nat_ip 原始記錄中的 ForwardedClientIpAddress 值會對應至 principal.nat_ip。
GlobalEntitlementName target.user.group_identifiers 原始記錄中的 GlobalEntitlementName 值會對應至 target.user.group_identifiers。
host principal.hostname 原始記錄中的 host 值會對應至 principal.hostname。
MachineDnsName principal.url 原始記錄中的 MachineDnsName 值會對應至 principal.url。
MachineName intermediary.hostname 原始記錄中的 MachineName 值會對應至 intermediary.hostname。
Module additional.fields 原始記錄中值為 Module 的鍵「Module」會新增至 additional.fields 陣列。
pid principal.process.pid 原始記錄中的 pid 值會對應至 principal.process.pid。
PoolId additional.fields 系統會將原始記錄中值為 PoolId 的「PoolId」鍵新增至 additional.fields 陣列。
program principal.application 原始記錄中的 program 值會對應至 principal.application。
SessionType additional.fields 原始記錄中值為 SessionType 的鍵「SessionType」會新增至 additional.fields 陣列。
Severity security_result.severity 原始記錄中的 Severity 值會轉換為大寫,對應至一般嚴重程度,然後對應至 security_result.severity。
timestamp metadata.event_timestamp 原始記錄中的 timestamp 值會轉換為適當格式,然後對應至 metadata.event_timestamp。
UserDisplayName target.user.user_display_name 原始記錄中的 UserDisplayName 值會對應至 target.user.user_display_name。
UserName target.user.userid 原始記錄中的 UserName 值會對應至 target.user.userid。
UserSID target.user.windows_sid 原始記錄中的 UserSID 值會對應至 target.user.windows_sid。
ViewApiMethodName additional.fields 系統會將原始記錄中值為 ViewApiMethodName 的「ViewApiMethodName」鍵新增至 additional.fields 陣列。
ViewApiServiceName additional.fields 原始記錄中值為 ViewApiServiceName 的鍵「ViewApiServiceName」會新增至 additional.fields 陣列。
extensions.auth.type 如果 EventType 欄位是「ADMIN_USERLOGGEDOUT」、「AGENT_CONNECTED」、「AGENT_DISCONNECTED」、「AGENT_ENDED」、「AGENT_PENDING」、「AGENT_PENDING_EXPIRED」、「AGENT_RECONNECTED」、「BROKER_DESKTOP_REQUEST」、「BROKER_LMV_REMOTE_POD_DESKTOP_LAUNCH」、「BROKER_MACHINE_ALLOCATED」、「BROKER_USER_AUTHFAILED_BAD_USER_PASSWORD」、「BROKER_USER_LOCK_SSO」、「BROKER_USERLOGGEDIN」、「BROKER_USERLOGGEDOUT」、「VLSI_USERLOGGEDIN」、「VLSI_INSUFFICIENT_PERMISSION」、「VLSI_USERLOGGEDIN_REST」、「TIMING_PROFILER_TUNNEL_CONNECTION」、「TIMING_PROFILER_GET_LAUNCH_ITEMS」、「TIMING_PROFILER_USER_AUTHENTICATION」其中之一,值會設為「SSO」。
metadata.event_type 這個值取決於 EventType 欄位。如果 EventType 是「ADMIN_USERLOGGEDOUT」、「AGENT_DISCONNECTED」、「AGENT_ENDED」、「AGENT_PENDING_EXPIRED」、「BROKER_USER_LOCK_SSO」、「BROKER_USERLOGGEDOUT」其中之一,則 metadata.event_type 為「USER_LOGOUT」。如果 EventType 是「AGENT_CONNECTED」、「AGENT_PENDING」、「AGENT_RECONNECTED」、「BROKER_USERLOGGEDIN」、「VLSI_USERLOGGEDIN」、「VLSI_INSUFFICIENT_PERMISSION」、「VLSI_USERLOGGEDIN_REST」其中之一,則 metadata.event_type 為「USER_LOGIN」。如果 EventType 是「TIMING_PROFILER_GET_LAUNCH_ITEMS」,則 metadata.event_type 為「STATUS_UNCATEGORIZED」。如果 EventType 為「AGENT_SHUTDOWN」,則 metadata.event_type 為「STATUS_SHUTDOWN」。如果 EventType 是「AGENT_STARTUP」、「BROKER_LMV_REMOTE_POD_DESKTOP_LAUNCH」其中之一,則 metadata.event_type 為「STATUS_STARTUP」。否則 metadata.event_type 為「GENERIC_EVENT」。
metadata.log_type 值設為「VMWARE_HORIZON」。
metadata.product_name 值設為「HORIZON」。
metadata.vendor_name 值設為「VMWARE」。
SecurityID event.idm.read_only_udm.principal.user.windows_sid 從變更記錄對應
AccountName event.idm.read_only_udm.principal.user.userid 從變更記錄對應
AccountDomain event.idm.read_only_udm.principal.administrative_domain 從變更記錄對應
ObjectServer event.idm.read_only_udm.target.application 從變更記錄對應
ObjectName event.idm.read_only_udm.target.user.windows_sid 從變更記錄對應
HandleID event.idm.read_only_udm.target.resource.product_object_id 從變更記錄對應
ProcessID event.idm.read_only_udm.principal.process.pid 從變更記錄對應
ProcessName event.idm.read_only_udm.principal.process.file.full_path 從變更記錄對應
LogonID event.idm.read_only_udm.principal.user.attribute.labels 從變更記錄對應
ObjectType event.idm.read_only_udm.target.resource.attribute.labels 從變更記錄對應
AccessMask event.idm.read_only_udm.security_result.detection_fields 從變更記錄對應
TransactionID event.idm.read_only_udm.additional.fields 從變更記錄對應
PrivilegesUsedforAccessCheck event.idm.read_only_udm.additional.fields 從變更記錄對應
Accesses event.idm.read_only_udm.additional.fields 從變更記錄對應
AccessReasons event.idm.read_only_udm.additional.fields 從變更記錄對應
Properties event.idm.read_only_udm.additional.fields 從變更記錄對應
RestrictedSIDCount event.idm.read_only_udm.additional.fields 從變更記錄對應
usr target.user.userid 從變更記錄對應
MachineId principal.asset.asset_id 從變更記錄對應
int_host intermediary.hostname 從變更記錄對應
ip_1 principal.ip 從變更記錄對應
port_number principal.port 從變更記錄對應

變更記錄

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

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