Utiliser l'agent BindPlane
L'agent BindPlane (également appelé agent de collecte) est un agent Open Source basé sur le collecteur OpenTelemetry, qui collecte des journaux à partir de diverses sources, y compris les journaux des événements Microsoft Windows, et envoie à Google Security Operations.
La console BindPlane OP Management d'observIQ offre un accès complet et unifié pour gérer vos déploiements de collecteurs OpenTelemetry (OTel) dans Google SecOps et Google Cloud. observIQ fournit un BindPlane pour Édition Google de la console de gestion. Pour en savoir plus, consultez solutions d'observIQ. La console de gestion est facultatif. 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 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 SIEM > Agent de recouvrement.
- Téléchargez le fichier d'authentification d'ingestion Google SecOps.
Numéro client Google SecOps
Pour trouver le numéro client, procédez comme suit:
- Ouvrez la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez le numéro client à partir de 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
Tous les pare-feu ou proxys authentifiés entre l'agent et Internet Des règles sont requises pour autoriser 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 BindPlane OP Management offre les fonctionnalités clés suivantes:
- Gestion centralisée: la console vous permet de gérer tous vos déploiements de collecteurs OTel dans Google Cloud. Vous pouvez afficher l'état de chaque déploiement et effectuer 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 fournit une surveillance en temps réel de votre OTel. les déploiements de collecteur. Vous pouvez suivre des métriques telles que l'utilisation du CPU, l'utilisation de la mémoire, et le débit, et consulter 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 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 les fichiers de configuration, définir des variables d'environnement, et appliquer des stratégies de sécurité à tous vos déploiements.
- Intégration à Google Cloud: vous pouvez créer et gérer le collecteur OTel. déploiements dans Google Cloud et utiliser la console pour accéder ressources.
Il existe deux façons de déployer la console BindPlane OP Management:
- Téléchargez et installez l'application sur un hôte Linux : Disponible sous forme de package DEB, de package RPM ou d'image Docker.
- Installer et provisionner à partir de Google Cloud Marketplace
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
Pour effectuer l'installation à l'aide d'un assistant d'installation, vous pouvez également télécharger le dernier programme d'installation pour Windows.
Une fois le programme d'installation téléchargé, ouvrez l'assistant d'installation et suivez les instructions de configuration et d'installation de l'agent BindPlane. Pour en savoir plus, consultez la section Installation 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 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 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ée.
Installation DEB
Téléchargez le package DEB pour votre architecture à partir de la page des versions et installez-le à l'aide de dpkg
. Reportez-vous à l'exemple suivant pour installer
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 page 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.
Une fois l'agent installé, le service observiq-otel-collector
s'exécute et est prêt pour
configuration. Par défaut, l'agent enregistre les journaux dans C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log
.
Le journal d'erreurs standard du processus de l'agent se trouve à l'adresse 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
Lors de la modification
la configuration, vous devez redémarrer le service de l'agent pour
pour qu'elles soient prises en compte.
Vous pouvez télécharger un exemple de fichier de configuration et de jeton d'authentification utilisé par depuis la console Google SecOps > Paramètres SIEM > Agent de recouvrement.
Personnalisez ces deux sections du fichier de configuration:
- Récepteur : spécifie les journaux que l'agent doit collecter et envoyer à Google SecOps.
- Exportateur: spécifie la destination à 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 forwarder Google SecOps : envoie les journaux au forwarder Google SecOps.
- Exportateur Cloud Logging : envoie les journaux à (Cloud Logging)
Dans l'exportateur, personnalisez les éléments suivants :
customer_id
: numéro client Google SecOpsendpoint
: point de terminaison régional Google SecOpscreds
: jeton d'authentificationVous pouvez également utiliser
creds_file_path
pour référencer le fichier d'identifiants directement. Pour la configuration Windows, échappez le chemin à l'aide de 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.
Option 1 : L'agent de collecte envoie les journaux au transpondeur Google SecOps
Le transmetteur Google SecOps reçoit plusieurs flux syslog. Chaque La source de données syslog se distingue par le port d'écoute configuré sur le redirecteur Google SecOps. Le transfert établit une connexion GRPC chiffrée à votre instance Google SecOps pour transmettre les journaux collectés.
Notez que l'option du redirecteur 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 un minimum de ressources, mais lorsqu'ils gèrent de grands volumes de télémétrie (journaux ou traces) sur un système, tenez compte de la consommation des ressources sans affecter les autres services. Pour plus d'informations, Voir Dimensionnement et scaling des agents
Assistance
Pour tout problème lié à l'agent collecteur, contactez l'assistance Google Cloud.
Pour tout problème lié à BindPlane OP Management, contactez l'assistance ObservIQ.
Autres exemples de configuration de la collecte de journaux
Les sections suivantes répertorient les exemples de configuration de collecte de journaux supplémentaires.
Envoyer les événements Windows et le système système directement à Google SecOps
Configurez les paramètres suivants 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 les événements Windows et le journal syslog directement à Google SecOps
Configurez les paramètres suivants 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 les événements Windows et le journal syslog au redirecteur Google SecOps
Configurez les paramètres suivants 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 les paramètres suivants 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 les événements Windows à distance et les envoyer directement à Google SecOps
Configurez les paramètres suivants 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 les paramètres suivants 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 qui correspondent à 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 qui correspondent à une expression régulière, ajoutez un processeur de type filter/drop-matching-logs-to-Chronicle
à votre configuration. Cet outil de traitement 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 au 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:
- solutions observIQ
- Guide de démarrage rapide de l'opérateur BindPlane
- Envoyer des journaux à Cloud Logging
- Filtrer par processeur de condition
- Sources disponibles pour l'opération Bindplane