Collect Vectra Stream logs

Supported in:

This document explains how to ingest Vectra Stream logs to Google Security Operations using Bindplane.

Vectra Stream is a network metadata streaming platform that generates JSON and syslog-formatted messages for network connections, DNS queries, HTTP requests, TLS/SSL sessions, DHCP leases, RADIUS authentication, SMTP mail, and Kerberos events. The parser extracts key-value pairs and maps them to the Unified Data Model (UDM).

Before you begin

Make sure you have the following prerequisites:

  • A Google SecOps instance
  • Windows Server 2016 or later, or Linux host with systemd
  • Network connectivity between the Bindplane agent and the Vectra brain appliance
  • If running behind a proxy, ensure firewall ports are open per the Bindplane agent requirements
  • Administrative access to the Vectra (brain) UI

Get Google SecOps ingestion authentication file

  1. Sign in to the Google SecOps console.
  2. Go to SIEM Settings > Collection Agents.
  3. Download the Ingestion Authentication File. Save the file securely on the system where Bindplane will be installed.

Get Google SecOps customer ID

  1. Sign in to the Google SecOps console.
  2. Go to SIEM Settings > Profile.
  3. Copy and save the Customer ID from the Organization Details section.

Install the Bindplane agent

Install the Bindplane agent on your Windows or Linux operating system according to the following instructions.

Windows installation

  1. Open Command Prompt or PowerShell as an administrator.
  2. Run the following command:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Wait for the installation to complete.

  4. Verify the installation by running:

    sc query observiq-otel-collector
    

The service should show as RUNNING.

Linux installation

  1. Open a terminal with root or sudo privileges.
  2. Run the following command:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Wait for the installation to complete.

  4. Verify the installation by running:

    sudo systemctl status observiq-otel-collector
    

The service should show as active (running).

Additional installation resources

For additional installation options and troubleshooting, see Bindplane agent installation guide.

Configure Bindplane agent to ingest syslog and send to Google SecOps

Locate the configuration file

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

Edit the configuration file

  • Replace the entire contents of config.yaml with the following configuration:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/vectra_stream:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: VECTRA_STREAM
            raw_log_field: body
    
    service:
        pipelines:
            logs/vectra_stream_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/vectra_stream
    

Configuration parameters

  • Replace the following placeholders:

    • Receiver configuration:

      • listen_address: IP address and port to listen on:
        • 0.0.0.0 to listen on all interfaces (recommended)
        • Port 514 is the standard syslog port (requires root on Linux; use 1514 for non-root)
    • Exporter configuration:

      • creds_file_path: Full path to ingestion authentication file:
        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: Customer ID copied from the Google SecOps console
      • endpoint: Regional endpoint URL:
        • US: malachiteingestion-pa.googleapis.com
        • Europe: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • See Regional Endpoints for complete list

Save the configuration file

  • After editing, save the file:
    • Linux: Press Ctrl+O, then Enter, then Ctrl+X
    • Windows: Click File > Save

Restart the Bindplane agent to apply the changes

  • To restart the Bindplane agent in Linux:

    1. Run the following command:

      sudo systemctl restart observiq-otel-collector
      
    2. Verify the service is running:

      sudo systemctl status observiq-otel-collector
      
    3. Check logs for errors:

      sudo journalctl -u observiq-otel-collector -f
      
  • To restart the Bindplane agent in Windows:

    1. Choose one of the following options:

      • Command Prompt or PowerShell as administrator:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Services console:

        1. Press Win+R, type services.msc, and press Enter.
        2. Locate observIQ OpenTelemetry Collector.
        3. Right-click and select Restart.
    2. Verify the service is running:

      sc query observiq-otel-collector
      
    3. Check logs for errors:

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

Configure Vectra Stream to send syslog

  1. Sign in to the Vectra (brain) UI.
  2. Go to Configuration > SETUP > Stream > Destination.
  3. Select Syslog as the publisher type.
  4. Provide the following configuration details:
    • Destination IP: Enter the Bindplane agent IP address.
    • Port: Enter the Bindplane agent port number.
    • Protocol: Select TCP or SSL (if SSL is selected, provide the client certificate, client key, and server CA certificate).
  5. Go to Configuration > SETUP > Stream > Metadata Types to select the metadata categories you want to forward.
  6. Go to Configuration > SETUP > Stream > Vectra Stream Metadata Forwarding.
  7. Enable metadata forwarding and click Save.

UDM mapping table

Log Field UDM Mapping Logic
AA network.dns.authoritative Converted to boolean from string value.
account_session_id network.session_id Direct mapping.
account_session_time network.session_duration Converted to timestamp from UNIX seconds.
answers network.dns.answers.data Direct mapping.
assigned_ip network.dhcp.yiaddr Direct mapping.
beacon_type metadata.description Direct mapping.
beacon_uid network.session_id Direct mapping.
calling_station_id intermediary.asset.product_object_id Direct mapping.
certificate.issuer network.tls.client.certificate.issuer Direct mapping.
certificate.not_valid_after network.tls.client.certificate.not_after Converted to timestamp from UNIX or UNIX_MS depending on format.
certificate.not_valid_before network.tls.client.certificate.not_before Converted to timestamp from UNIX or UNIX_MS depending on format.
certificate.serial network.tls.client.certificate.serial Direct mapping.
certificate.subject network.tls.client.certificate.subject Direct mapping.
certificate.version network.tls.client.certificate.version Direct mapping.
cipher network.tls.cipher Direct mapping.
cipher_alg network.tls.cipher Direct mapping.
client principal.application Direct mapping.
client_cipher network.tls.client.supported_ciphers Direct mapping.
community_id network.community_id Direct mapping.
compression_alg additional.fields.value.string_value Added to additional fields with key "compression_alg".
connect_info security_result.description Direct mapping.
conn_state metadata.description Mapped to a description based on the value of conn_state.
cookie target.user.userid Direct mapping.
curve network.tls.curve Direct mapping.
dhcp_server_ip network.dhcp.giaddr Direct mapping.
dns_server_ips principal.ip Each IP in the array is added to the principal.ip array.
domain target.domain.name Direct mapping.
dst_display_name target.hostname,, target.asset.hostname Direct mapping.
dst_luid target.asset.product_object_id Direct mapping.
duration network.session_duration.seconds Converted to integer from string value.
endpoint principal.application Direct mapping.
established network.tls.established Converted to boolean from string value.
host target.hostname,, target.asset.hostname Extracted hostname from the "host" field.
host_key additional.fields.value.string_value Added to additional fields with key "host_key".
host_key_alg additional.fields.value.string_value Added to additional fields with key "host_key_alg".
host_multihomed additional.fields.value.string_value Added to additional fields with key "host_multihomed" and value "subnet %{host_multihomed}".
hostname target.hostname,, target.asset.hostname Direct mapping.
id.orig_h principal.ip Direct mapping.
id.orig_p principal.port Converted to integer from string value.
id.resp_h target.ip,, target.asset.ip Direct mapping.
id.resp_p target.port Converted to integer from string value.
issuer network.tls.client.certificate.issuer Direct mapping.
ja3 network.tls.client.ja3 Direct mapping.
ja3s network.tls.server.ja3s Direct mapping.
kex_alg additional.fields.value.string_value Added to additional fields with key "kex_alg".
lease_time network.dhcp.lease_time_seconds Converted to unsigned integer from string value.
log_type metadata.log_type Direct mapping.
mac principal.mac Direct mapping.
mac_alg additional.fields.value.string_value Added to additional fields with key "mac_alg".
mail_from network.email.from Direct mapping.
metadata_type metadata.product_event_type Direct mapping.
method network.http.method Direct mapping.
name target.file.full_path Direct mapping.
nas_identifier target.user.attribute.roles.name Direct mapping.
next_protocol network.tls.next_protocol Direct mapping.
orig_hostname principal.hostname Direct mapping.
orig_ip_bytes network.sent_bytes Converted to unsigned integer from string value.
orig_sluid principal.hostname Direct mapping.
path target.file.full_path Direct mapping.
proto network.ip_protocol Mapped to IP protocol name based on numeric value.
proxied principal.ip If the value is an IP address, it is added to the principal.ip array.
qclass network.dns.questions.class Converted to unsigned integer from string value.
qclass_name network.dns.questions.name Direct mapping.
query network.dns.questions.name,, principal.process.command_line Direct mapping.
qtype network.dns.questions.type Converted to unsigned integer from string value.
RA network.dns.recursion_available Converted to boolean from string value.
radius_type metadata.description Direct mapping.
rcode network.dns.response_code Converted to unsigned integer from string value.
RD network.dns.recursion_desired Converted to boolean from string value.
rcpt_to network.email.reply_to,, network.email.to The first email address is mapped to reply_to, the rest are added to the to array.
referrer network.http.referral_url Direct mapping.
resp_domain target.domain.name Direct mapping.
resp_hostname target.hostname,, target.asset.hostname Direct mapping.
resp_ip_bytes network.received_bytes Converted to unsigned integer from string value.
resp_mime_types target.file.mime_type Direct mapping.
result security_result.description Direct mapping.
result_code security_result.action_details Direct mapping.
rtt network.session_duration.seconds Converted to integer from string value.
security_result security_result Merged with existing security_result object.
sensor_uid observer.asset_id Formatted as "Sensor_UID:%{sensor_uid}".
server target.application Direct mapping.
server_name network.tls.client.server_name Direct mapping.
service target.application Direct mapping.
src_display_name principal.hostname Direct mapping.
src_luid principal.asset.product_object_id Direct mapping.
status security_result.summary Direct mapping.
status_code network.http.response_code Converted to integer from string value.
status_msg security_result.summary Direct mapping.
subject network.email.subject Direct mapping.
success security_result.action Mapped to "ALLOW" if true, "BLOCK" if false.
TC network.dns.truncated Converted to boolean from string value.
trans_id network.dhcp.transaction_id,, network.dns.id Converted to unsigned integer from string value.
ts metadata.event_timestamp Converted to timestamp from various formats.
uid metadata.product_log_id Direct mapping.
uri target.url Direct mapping.
user_agent network.http.user_agent Direct mapping.
username principal.user.userid Direct mapping.
version network.tls.version,, principal.platform_version Direct mapping.
version_num network.tls.version_protocol Direct mapping.
metadata.event_type Determined by the parser logic based on the log and metadata types.
metadata.vendor_name Hardcoded value: "Vectra".
metadata.product_name Hardcoded value: "Vectra Stream".

Need more help? Get answers from Community members and Google SecOps professionals.