收集 Omnissa Horizon(以前称为 VMware Horizon)日志

支持:

本文档介绍了如何使用 Bindplane 将 Omnissa Horizon(以前称为 VMware Horizon)日志注入到 Google Security Operations。

Omnissa Horizon 是一个虚拟桌面基础架构 (VDI) 平台,可向最终用户提供虚拟桌面和应用。它可在本地环境和混合云环境中集中管理虚拟机、监控会话和强制执行政策。解析器使用正则表达式(Grok 模式)从原始 syslog 消息中提取字段,并将它们映射到统一数据模型 (UDM)。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • Bindplane 代理与 Omnissa Horizon Connection Server 之间的网络连接
  • 如果在代理后面运行,请确保按照 Bindplane 代理要求打开防火墙端口
  • 对 Omnissa Horizon 控制台的特权访问权限(管理员角色)

获取 Bindplane 代理的 Google SecOps 凭证

如需向 Google SecOps 验证 Bindplane 代理,请选择以下方法之一:

  • 新部署:使用 Chronicle API(选项 1)。
  • 旧版部署:继续使用提取身份验证文件(方法 2),直到提取 API 于 2027 年 7 月 20 日停用。
  1. 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
  2. 前往 IAM 和管理 > 服务账号。
  3. 点击创建服务账号。
  4. 提供以下配置详细信息:
    • 服务账号名称:输入账号的名称(例如 bindplane-ingest)。
    • 服务账号说明:输入说明(例如 Bindplane agent log ingestion)。
  5. 点击创建并继续。
  6. 在向此服务账号授予对项目的访问权限部分,点击选择角色,然后选择 Chronicle Editor。
  7. 点击继续,然后点击完成。
  8. 点击您创建的服务账号,然后前往密钥标签页。
  9. 依次点击添加密钥> 创建新密钥。
  10. 选择 JSON,然后点击创建。密钥文件会下载到您的计算机上。
  11. 将密钥文件另存为 Bindplane 收集器目录(Linux 上的 /opt/observiq-otel-collector/ingestion-auth.json 或 Windows 上的 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的 ingestion-auth.json,或更新 config.yaml 中的 creds_file_path 以匹配您保存该文件的路径。
  12. 前往 IAM 和管理 > 设置,然后复制项目编号。您在配置导出器时需要用到该名称。

方法 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
    

该服务应显示为有效(正在运行)。

其他安装资源

如需了解其他安装选项和问题排查,请参阅 Bindplane 代理安装指南。

配置 Bindplane 代理以注入 syslog 并发送到 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 是标准 syslog 端口(在 Linux 上需要 root 权限;对于非 root 用户,请使用 1514)
  • 导出器配置:

    • 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:将 <PROJECT_NUMBER> 替换为 IAM 和管理 > 设置中的项目编号。

    • 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 收集器。
      3. 右键点击,然后选择重新启动。
  2. 验证服务是否正在运行:

    sc query observiq-otel-collector
    
  3. 检查日志中的错误:

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

在 Omnissa Horizon(以前称为 VMware Horizon)中配置 syslog 转发

  1. 使用管理员账号登录 Omnissa Horizon 控制台。
  2. 依次前往设置 > 活动配置。
  3. 在发送到 syslog 服务器部分中,点击添加。

  4. 提供以下配置详细信息:

    • 服务器地址:输入 Bindplane 代理主机的 IP 地址(例如 192.168.1.100)。
    • 端口:输入 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 专业人士的解答。