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 Console への特権アクセス(管理者ロール)

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新しいデプロイ: Chronicle API(オプション 1)を使用します。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  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
    

サービスが active (running) と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探します。

  • 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 Collector を見つけます。
      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 Console にログインします。
  2. [設定] > [イベント設定] に移動します。
  3. [Send to syslog servers] セクションで、[Add] をクリックします。

  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 のプロフェッショナルから回答を得ることができます。