Utiliser l'agent BindPlane

Compatible avec:

L'agent BindPlane (également appelé agent de collecte) est un agent Open Source, basé sur le collecteur OpenTelemetry, qui collecte les journaux de diverses sources, y compris les journaux des événements Microsoft Windows, et les envoie à Google SecOps.

La console de gestion des opérations observIQ BindPlane fournit une plate-forme complète et unifiée pour gérer vos déploiements de collecteurs OpenTelemetry (OTel) dans Google SecOps et Google Cloud. observIQ fournit une édition Google de la console de gestion BindPlane. Pour en savoir plus, consultez les solutions observIQ. La console de gestion est facultative. Vous pouvez utiliser l'agent avec ou sans la console. Pour en savoir plus sur la console, consultez la console de gestion des opérations BindPlane.

Il s'agit de la même solution utilisée par Cloud Logging pour les déploiements sur site.

Avant de commencer

Pour installer l'agent, vous avez besoin des éléments suivants:

  • Fichier d'authentification d'ingestion Google SecOps

    Pour télécharger le fichier d'authentification, procédez comme suit:

    1. Ouvrez la console Google SecOps.
    2. Accédez à Paramètres du SIEM > Agent de collecte.
    3. Téléchargez le fichier d'authentification d'ingestion Google SecOps.
  • Numéro client Google SecOps

    Pour trouver l'ID client, procédez comme suit:

    1. Ouvrez la console Google SecOps.
    2. Accédez à Paramètres du SIEM > Profil.
    3. Copiez le numéro client dans la section Informations sur l'organisation.
  • Windows 2012 SP2 ou version ultérieure ou hôte Linux avec systemd

  • Connectivité Internet

  • Accès à GitHub

Vérifier la configuration du pare-feu

Les pare-feu ou les proxys authentifiés entre l'agent et Internet nécessitent des règles pour ouvrir l'accès aux hôtes suivants:

Type de connexion Destination Port
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP oauth2.googleapis.com 443

Console de gestion des opérations BindPlane

La console de gestion des opérations BindPlane propose les principales fonctionnalités suivantes:

  • Gestion centralisée: la console vous permet de gérer tous vos déploiements de collecteurs OTel dans Google Cloud. Vous pouvez consulter l'état de chaque déploiement, ainsi que des tâches de gestion courantes telles que le démarrage, l'arrêt et le redémarrage des collecteurs.
  • Surveillance en temps réel: la console permet de surveiller en temps réel vos déploiements de collecteurs OTel. Vous pouvez suivre des métriques telles que l'utilisation du processeur, de la mémoire et du débit, ainsi que consulter des journaux et des traces pour résoudre les problèmes.
  • Alertes et notifications: la console vous permet de configurer des alertes et des notifications pour des événements importants, par exemple lorsqu'un collecteur est en panne ou qu'un seuil de métrique est dépassé.
  • Gestion de la configuration: la console vous permet de gérer de manière centralisée la configuration de vos collecteurs OTel. Vous pouvez modifier des fichiers de configuration, définir des variables d'environnement et appliquer des règles de sécurité à tous vos déploiements.
  • Intégration à Google Cloud: vous pouvez créer et gérer des déploiements de collecteurs OTel dans Google Cloud et utiliser la console pour accéder à vos Google Cloud ressources.

Il existe deux façons de déployer la console de gestion des opérateurs BindPlane:

Différence entre BindPlane (édition Google) et BindPlane Enterprise (édition Google)

Vous pouvez utiliser BindPlane (édition Google) ou BindPlane Enterprise (édition Google). Tous les clients Google SecOps ont accès à BindPlane (édition Google). Si vous êtes client Google SecOps Enterprise Plus, BindPlane Enterprise (édition Google) est inclus. Si vous n'êtes pas client Google SecOps Enterprise Plus, contactez votre équipe dédiée à votre compte Google. Pour obtenir votre clé de licence pour BindPlane Enterprise (édition Google), veuillez envoyer un e-mail à support@observIQ.com.

Les différences sont indiquées dans le tableau suivant.

Fonctionnalités BindPlane (édition Google) BindPlane Enterprise (édition Google)
Coût Tous les clients Google SecOps bénéficient de BindPlane (édition Google) sans frais Les clients Google SecOps Enterprise Plus bénéficient de BindPlane (édition Google) sans frais
Itinéraires / Destinations Google uniquement, y compris Google SecOps, Cloud Logging, BigQuery et Cloud Storage via Cloud Logging Google, y compris 12 mois de routage vers d'autres destinations pour les migrations SIEM
Filtrage Filtre de base avec expression régulière Processeurs de filtrage avancés (filtrage par condition, champ, gravité, etc.), réduction des données, échantillonnage des journaux, déduplication
Masquage ND Masquage des informations permettant d'identifier personnellement l'utilisateur
Transformation Ajouter un champ, déplacer un champ, analyser les données (KV, JSON, CSV, XML, horodatage, analyse par expression régulière), renommer un champ, séparateur d'événement Supprimer le champ, supprimer les valeurs vides, fusionner
Fonctionnalités générales au niveau de la plate-forme Passerelle (données agrégées des agents), agents BindPlane pour la collecte, couche de gestion BindPlane (opérateur BindPlane) pour l'hébergement sur site ou dans le cloud, toutes les sources, surveillance silencieuse des hôtes via le processeur SecOps, file d'attente persistante, enrichissement de la télémétrie, HA, RBAC, les deux API d'ingestion SecOps compatibles, obscurcissement des identifiants, gestion avancée de la flotte, y compris le regroupement d'agents, attribution dynamique du type de journal

Installer l'agent BindPlane

Cette section explique comment installer l'agent sur différents systèmes d'exploitation hôtes.

Windows

Pour installer l'agent BindPlane sous Windows, exécutez la commande PowerShell suivante.

msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet

Pour installer l'application à l'aide d'un assistant d'installation, téléchargez le dernier programme d'installation pour Windows.

Après avoir téléchargé le programme d'installation, ouvrez l'assistant d'installation et suivez les instructions pour configurer et installer l'agent BindPlane. Pour en savoir plus sur l'installation, consultez la section Installer sur Windows.

Linux

Vous pouvez installer l'agent sous Linux à l'aide d'un script qui détermine automatiquement le package à installer. Vous pouvez également utiliser ce script pour mettre à jour une installation existante.

Pour installer l'agent à l'aide du script d'installation, exécutez le script suivant:

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh

Installation à partir d'un package local

Pour installer l'agent à partir d'un package local, utilisez -f avec le chemin d'accès au package.

sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh -f path_to_package

Installation de RPM

Téléchargez le package RPM pour votre architecture sur la page des versions, puis installez-le à l'aide de rpm. Reportez-vous à l'exemple suivant pour installer le package amd64:

sudo rpm -U ./observiq-otel-collector_v${VERSION}_linux_amd64.rpm
sudo systemctl enable --now observiq-otel-collector

Remplacez VERSION par la version du package que vous avez téléchargé.

Installation DEB

Téléchargez le package DEB pour votre architecture sur la page des versions, puis installez-le à l'aide de dpkg. Reportez-vous à l'exemple suivant pour installer le package amd64:

sudo dpkg -i --force-overwrite ./observiq-otel-collector_v${VERSION}_linux_amd64.deb
sudo systemctl enable --now observiq-otel-collector

Remplacez VERSION par la version du package que vous avez téléchargé.

Pour en savoir plus, consultez la section Installation de l'agent BindPlane.

Configurer l'agent

Vous pouvez configurer l'agent manuellement ou à l'aide de la console de gestion des opérations BindPlane. Si vous configurez l'agent manuellement, vous devez mettre à jour les paramètres de l'exportateur pour vous assurer que l'agent s'authentifie auprès de Google SecOps.

Après avoir installé l'agent, le service observiq-otel-collector s'exécute et est prêt à être configuré. Par défaut, l'agent enregistre les journaux dans C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log.

Le journal des erreurs standard du processus de l'agent se trouve sur C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err.

Par défaut, le fichier de configuration de l'agent se trouve à l'emplacement C:\Program Files\observIQ OpenTelemetry Collector\config.yaml. Lorsque vous modifiez la configuration, vous devez redémarrer le service de l'agent pour que les modifications de configuration prennent effet.

Vous pouvez télécharger un exemple de fichier de configuration et un jeton d'authentification utilisés par l'agent à partir de la console Google SecOps > Paramètres SIEM > Agent de collecte.

Personnalisez ces deux sections dans le fichier de configuration:

  • Récepteur: spécifie les journaux que l'agent doit collecter et envoyer à Google SecOps.
  • Exportateur: spécifie la destination vers laquelle l'agent envoie les journaux. Les exportateurs suivants sont acceptés :
    • Exportateur Google SecOps: envoie les journaux directement à l'API d'ingestion Google SecOps.
    • Exportateur du transfert Google SecOps: envoie les journaux au transfert Google SecOps.
    • Exportateur Cloud Logging: envoie les journaux à (Cloud Logging)

Dans l'exportateur, personnalisez les éléments suivants:

  • customer_id: ID client Google SecOps
  • endpoint: point de terminaison régional Google SecOps
  • creds : jeton d'authentification

    Vous pouvez également utiliser creds_file_path pour référencer directement le fichier d'identifiants. Pour la configuration Windows, échappez le chemin d'accès avec des barres obliques arrière.

  • log_type: type de journal

  • ingestion_labels: libellés d'ingestion facultatifs

  • namespace: espace de noms facultatif

    Vous devez configurer un exportateur pour chaque type de journal.

Architecture

Les options suivantes sont disponibles pour l'architecture de l'agent.

Option 1: L'agent de collecte envoie les journaux au transpondeur Google SecOps

L'agent de collecte envoie des journaux au redirecteur Google SecOps

Le transmetteur Google SecOps reçoit plusieurs flux syslog. Chaque source de données syslog est distinguée par le port d'écoute configuré sur le transpondeur Google SecOps. Le transfert établit une connexion GRPC chiffrée à votre instance Google SecOps pour transmettre les journaux collectés.

Notez que l'option de transfert permet d'agréger les journaux avant de les envoyer à Google SecOps.

Option 2: L'agent de collecte envoie les journaux directement à l'API d'ingestion Google SecOps

L'agent de collecte envoie les journaux directement à l'API d'ingestion Google SecOps.

Option 3: L'agent de collecte envoie les journaux directement à Cloud Logging

L'agent de collecte envoie les journaux directement à Cloud Logging

Option 4: L'agent de collecte envoie des journaux à plusieurs destinations

L'agent de collecte envoie des journaux à plusieurs destinations

Évolutivité

Les collecteurs d'agents utilisent généralement des ressources minimales, mais lorsque vous gérez de grands volumes de télémétrie (journaux ou traces) sur un système, soyez attentif à la consommation de ressources pour éviter d'affecter d'autres services. Pour en savoir plus, consultez la section Dimensionnement et scaling de l'agent.

Assistance

Pour tout problème lié à l'agent de collecte, contactez l' Google Cloud assistance.

Pour tout problème lié à la gestion des opérations BindPlane, contactez l'assistance observIQ.

Autres exemples de configuration de la collecte des journaux

Les sections suivantes répertorient les exemples de configuration de collecte de journaux supplémentaires.

Envoyer des événements Windows et sysmon directement à Google SecOps

Configurez ces paramètres dans l'exemple:

Exemple de configuration :

receivers:
  windowseventlog/sysmon:
    channel: Microsoft-Windows-Sysmon/Operational
    raw: true
  windowseventlog/security:
    channel: security
    raw: true
  windowseventlog/application:
    channel: application
    raw: true
  windowseventlog/system:
    channel: system
    raw: true

processors:
  batch:

exporters:
  chronicle/sysmon:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}' 
    log_type: 'WINDOWS_SYSMON'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
  chronicle/winevtlog:
    endpoint: malachiteingestion-pa.googleapis.com
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}'
    log_type: 'WINEVTLOG'
    override_log_type: false
    raw_log_field: body
    customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'

service:
  pipelines:
    logs/sysmon:
      receivers: [windowseventlog/sysmon]
      processors: [batch]
      exporters: [chronicle/sysmon]
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: [batch]
      exporters: [chronicle/winevtlog]

Envoyer des événements Windows et des syslog directement à Google SecOps

Configurez ces paramètres dans l'exemple:

Exemple de configuration :

receivers:
    tcplog:
      listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicle/chronicle_w_labels
        logs/source1__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

Envoyer des événements Windows et des syslog au forwarder Google SecOps

Configurez ces paramètres dans l'exemple:

Exemple de configuration :

receivers:
tcplog:
    listen_address: "0.0.0.0:54525"
    windowseventlog/source0__application:
        attributes:
            log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__security:
        attributes:
            log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source0__system:
        attributes:
            log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
exporters:
    chronicleforwarder/forwarder:
        export_type: syslog
        raw_log_field: body
        syslog:
            endpoint: 127.0.0.1:10514
            transport: udp
service:
    pipelines:
        logs/source0__forwarder-0:
            receivers:
                - windowseventlog/source0__system
                - windowseventlog/source0__application
                - windowseventlog/source0__security
            exporters:
                - chronicleforwarder/forwarder
        logs/source1__forwarder-0:
            receivers:
                - tcplog
            exporters:
                - chronicleforwarder/forwarder

Envoyer des fichiers syslog directement à Google SecOps

Configurez ces paramètres dans l'exemple:

Exemple de configuration :

receivers:
  tcplog:
    listen_address: "0.0.0.0:54525"

exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: <applicable_log_type>
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - tcplog
            exporters:
                - chronicle/chronicle_w_labels

Collecter des événements Windows à distance et les envoyer directement à Google SecOps

Configurez ces paramètres dans l'exemple:

  • windowseventlogreceiver
    • username
    • password
    • server
  • chronicleexporter
    • namespace
    • ingestion_labels
    • log_type
    • customer_id
    • creds

Exemple de configuration :

receivers:
    windowseventlog/system:
        channel: system
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "remote-server"
    windowseventlog/application:
        channel: application
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
    windowseventlog/security:
        channel: security
        max_reads: 100
        start_at: end
        poll_interval: 10s
        raw: true
        remote:
            username: "username"
            password: "password"
            server: "server-ip"
exporters:
    chronicle/chronicle_w_labels:
        compression: gzip
        creds: '{ json blob for creds }'
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: dev
        log_type: WINEVTLOG
        namespace: testNamespace
        raw_log_field: body
service:
    pipelines:
        logs/source0__chronicle_w_labels-0:
            receivers:
                - windowseventlog/system
                - windowseventlog/application
                - windowseventlog/security
            exporters:
                - chronicle/chronicle_w_labels

Envoyer des données à Cloud Logging

Configurez le paramètre credentials_file dans l'exemple.

Exemple de configuration :

exporters:
  googlecloud:
    credentials_file: /opt/observiq-otel-collector/credentials.json

Interroger une base de données SQL et envoyer les résultats à Google SecOps

Configurez ces paramètres dans l'exemple:

Exemple de configuration :

receivers:
  sqlquery/source0:
    datasource: host=localhost port=5432 user=postgres password=s3cr3t sslmode=disable
    driver: postgres
    queries:
      - logs:
          - body_column: log_body
        sql: select * from my_logs where log_id > $$1
        tracking_column: log_id
        tracking_start_value: "10000"
processors:
  transform/source0_processor0__logs:
    error_mode: ignore
    log_statements:
      - context: log
        statements:
          - set(attributes["chronicle_log_type"], "POSTGRESQL") where true
exporters:
  chronicle/chronicle_sql:
    compression: gzip
    creds: '{
  "type": "service_account",
  "project_id": "malachite-projectname",
  "private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
  "private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
  "client_email": "account@malachite-projectname.iam.gserviceaccount.com",
  "client_id": "123456789123456789",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}' 
    customer_id: customer_id
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: POSTGRESQL
    namespace: null
    raw_log_field: body
    retry_on_failure:
      enabled: false
    sending_queue:
      enabled: false
service:
  pipelines:
    logs/source0_chronicle_sql-0:
      receivers:
        - sqlquery/source0
      processors:
        - transform/source0_processor0__logs
      exporters:
        - chronicle/chronicle_sql

Supprimer les journaux correspondant à une expression régulière

Vous pouvez configurer le collecteur pour qu'il supprime les journaux correspondant à une expression régulière. Cette fonctionnalité est utile pour filtrer les journaux indésirables, tels que les erreurs connues ou les messages de débogage.

Pour supprimer les journaux correspondant à une expression régulière, ajoutez un processeur de type filter/drop-matching-logs-to-Chronicle à votre configuration. Ce processeur utilise la fonction IsMatch pour évaluer le corps du journal par rapport à l'expression régulière. Si la fonction renvoie true, le journal est supprimé.

L'exemple de configuration suivant supprime les journaux contenant les chaînes <EventID>10</EventID> ou <EventID>4799</EventID> dans le corps du journal.

Vous pouvez personnaliser l'expression régulière pour qu'elle corresponde à n'importe quel modèle dont vous avez besoin. La fonction IsMatch utilise la syntaxe d'expression régulière RE2.

Exemple de configuration :

processors:
    filter/drop-matching-logs-to-Chronicle:
        error_mode: ignore
        logs:
            log_record:
                - (IsMatch(body, "<EventID>10</EventID>")) or (IsMatch(body, "<EventID>4799</EventID>"))

L'exemple suivant ajoute le processeur au pipeline dans la même configuration:

service:
  pipelines:
    logs/winevtlog:
      receivers: 
        - windowseventlog/security
        - windowseventlog/application
        - windowseventlog/system
      processors: 
      - filter/drop-matching-logs-to-Chronicle # Add this line
      - batch
      exporters: [chronicle/winevtlog]

Documentation de référence

Pour en savoir plus sur observIQ, consultez les pages suivantes:

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.