Utiliser l'agent Bindplane
L'agent Bindplane (également appelé agent de collecte) est un agent Open Source basé sur OpenTelemetry Collector (OTel). Il collecte les journaux provenant de diverses sources, y compris les journaux d'événements Microsoft Windows, et les envoie à Google Security Operations.
La console de gestion Bindplane OP fournit une plate-forme complète et unifiée pour gérer vos déploiements de collecteurs OTel dans Google SecOps et Google Cloud. BindPlane (anciennement observIQ) fournit une édition Google de BindPlane pour la console de gestion. La console de gestion est facultative. Vous pouvez utiliser l'agent avec ou sans elle.
Pour plus d'informations, consultez :
La console de gestion est facultative. Vous pouvez utiliser l'agent avec ou sans la console. Pour en savoir plus sur la console, consultez Console de gestion Bindplane OP.
Il s'agit de la même solution que celle 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 :
- Ouvrez la console Google SecOps.
- Accédez à Paramètres du SIEM > Agent de collecte.
- Téléchargez le fichier d'authentification de l'ingestion Google SecOps.
Numéro client Google SecOps
Pour trouver l'ID client, procédez comme suit :
- Ouvrez la console Google SecOps.
- Accédez à Paramètres SIEM > Profil.
- Copiez le numéro client dans la section Informations sur l'organisation.
Hôte 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
Tous les pare-feu ou 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 Bindplane OP
La console de gestion Bindplane OP propose les principales fonctionnalités suivantes :
- Gestion centralisée : la console vous permet de gérer tous vos déploiements de collecteurs OTel sur Google Cloud. Vous pouvez afficher l'état de chaque déploiement et effectuer des tâches de gestion courantes, comme démarrer, arrêter et redémarrer 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 le débit, ainsi qu'afficher les journaux et les traces pour résoudre les problèmes.
- Alertes et notifications : la console vous permet de configurer des alertes et des notifications pour les événements importants, par exemple lorsqu'un collecteur est hors service ou lorsqu'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 les 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 ressources Google Cloud .
Il existe deux façons de déployer la console de gestion Bindplane OP :
- Téléchargez et installez sur un hôte Linux : disponible sous forme de package DEB, de package RPM ou d'image Docker.
- Installez et provisionnez à partir de Google Cloud Marketplace.
Différence entre Bindplane (Google Edition) et Bindplane Enterprise (Google Edition)
Vous pouvez utiliser Bindplane (édition Google) ou Bindplane Enterprise (édition Google), selon vos besoins de déploiement.
- Tous les clients Google SecOps ont accès à Bindplane (édition Google).
- Pour obtenir une licence Bindplane (Google Edition), téléchargez et installez Bindplane.
- Si vous êtes un client Google SecOps Enterprise Plus, Bindplane Enterprise (Google Edition) est inclus. Contactez l'équipe chargée de votre compte Google pour obtenir votre clé de licence Bindplane Enterprise (Google Edition).
Les différences sont indiquées dans le tableau suivant :
Fonctionnalités | Bindplane (Google Edition) | Bindplane Enterprise (édition Google) |
Coût | Tous les clients Google SecOps bénéficient de Bindplane (édition Google) sans frais supplémentaires. | Les clients Google SecOps Enterprise Plus bénéficient de Bindplane Enterprise (é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 le routage vers une destination non Google pendant 12 mois pour les migrations SIEM |
Filtrage | Filtre de base avec expression régulière | Processeurs de filtrage avancé (filtrer 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 des données (KV, JSON, CSV, XML, code temporel, analyse par expression régulière), renommer un champ, séparateur d'événements | Supprimer un champ, supprimer les valeurs vides, regrouper |
Fonctionnalités générales au niveau de la plate-forme | Passerelle (agrégation des données des agents), agents Bindplane pour la collecte, couche de gestion Bindplane (Bindplane OP) pour les sources sur site ou hébergées 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, haute disponibilité, RBAC, les deux API d'ingestion SecOps sont compatibles, obscurcissement des identifiants, gestion avancée du parc informatique, y compris le regroupement des 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 sur Windows, exécutez la commande PowerShell suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Vous pouvez également utiliser un assistant d'installation. Pour cela, 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 Installer sur Windows.
Linux
Vous pouvez installer l'agent sur Linux à l'aide d'un script qui détermine automatiquement le package à installer. Vous pouvez également utiliser le même script pour mettre à jour une installation existante.
Pour effectuer l'installation à 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 à partir de 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ée.
Installation DEB
Téléchargez le package DEB pour votre architecture depuis la page des versions et installez le package à l'aide de dpkg
. Consultez 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ée.
Pour en savoir plus, consultez Installation de l'agent Bindplane.
Configurer l'agent
Vous pouvez configurer l'agent manuellement ou à l'aide de la console de gestion Bindplane OP. 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.
Une fois l'agent installé, 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 d'erreur standard pour le processus de l'agent est disponible 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 d'agent pour que les modifications de configuration prennent effet.
Vous pouvez télécharger un exemple de fichier de configuration et de jeton d'authentification utilisés par l'agent depuis la console Google SecOps > Paramètres du 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 de 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 SecOpsendpoint
: point de terminaison régional Google SecOpscreds
: jeton d'authentificationVous pouvez également utiliser
creds_file_path
pour faire directement référence au fichier d'identifiants. Pour la configuration Windows, échappez le chemin d'accès avec des barres obliques inverses.log_type
: Type de journalingestion_labels
: libellés d'ingestion facultatifsnamespace
: espace de noms facultatifChaque type de journal nécessite la configuration d'un exportateur.
Architecture
Les options suivantes sont disponibles pour l'architecture de l'agent.
L'agent de collecte envoie les journaux à l'agent de collecte qui sert de passerelle.
L'agent de collecte envoie les journaux directement à l'API d'ingestion Google SecOps.
L'agent de collecte envoie les journaux directement à Cloud Logging.
L'agent de collecte envoie les journaux à plusieurs destinations
Évolutivité
Les collecteurs d'agents utilisent généralement des ressources minimales, mais lorsque vous traitez de grands volumes de données de télémétrie (journaux ou traces) sur un système, faites attention à la consommation de ressources pour éviter d'impacter d'autres services. Pour en savoir plus, consultez Dimensionnement et scaling de l'agent.
Assistance
Pour tout problème lié à l'agent de collecte, contactez l'assistance Google Cloud .
Pour tout problème lié à la gestion de Bindplane OP, contactez l'assistance Bindplane.
Autres exemples de configuration de la collecte des journaux
Les sections suivantes listent des 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'échantillon :
-
namespace
ingestion_labels
log_type
customer_id
creds
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 Syslog directement à Google SecOps
Configurez ces paramètres dans l'échantillon :
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
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 Syslog au redirecteur Google SecOps
Configurez ces paramètres dans l'échantillon :
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleforwarder
endpoint
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 journaux syslog directement à Google SecOps
Configurez ces paramètres dans l'échantillon :
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
Creds
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'échantillon :
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'échantillon.
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'échantillon :
sqlqueryreceiver
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
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 qui correspondent à une expression régulière
Vous pouvez configurer le collecteur pour qu'il supprime les journaux qui correspondent à une expression régulière. Cela permet de filtrer les journaux indésirables, tels que les erreurs connues ou les messages de débogage.
Pour supprimer les journaux qui correspondent à 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 qui contiennent 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 au modèle de votre choix. 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 Bindplane (anciennement observIQ), consultez les ressources suivantes :
- Solutions Bindplane
- Guide de démarrage rapide Bindplane OP
- Types de journaux compatibles avec Google Cloud
- Filtrer par processeur de conditions
- Sources disponibles pour BindPlane OP
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.