Utiliser l'agent BindPlane
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:
- Ouvrez la console Google SecOps.
- Accédez à Paramètres du SIEM > Agent de collecte.
- 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:
- Ouvrez la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- 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:
- Téléchargez et installez sur un hôte Linux : disponible en tant que package DEB, package RPM ou image Docker.
- Installez et provisionnez-le depuis Google Cloud Marketplace.
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 SecOpsendpoint
: point de terminaison régional Google SecOpscreds
: jeton d'authentificationVous 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 journalingestion_labels
: libellés d'ingestion facultatifsnamespace
: espace de noms facultatifVous 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
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
Option 3: L'agent de collecte envoie les journaux directement à Cloud Logging
Option 4: 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:
-
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 des syslog directement à Google SecOps
Configurez ces paramètres dans l'exemple:
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 des syslog au forwarder Google SecOps
Configurez ces paramètres dans l'exemple:
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 fichiers syslog directement à Google SecOps
Configurez ces paramètres dans l'exemple:
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'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:
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 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:
- Solutions observIQ
- Guide de démarrage rapide de l'opérateur BindPlane
- Envoyer des journaux à Cloud Logging
- Filtrer par processeur de conditions
- Sources disponibles pour l'opération Bindplane
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.