MongoDB-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie MongoDB-Logs mit Bindplane in Google Security Operations aufnehmen.
MongoDB ist eine NoSQL-Dokumentdatenbank, die Audit-Logs für CRUD-Vorgänge, Authentifizierungsereignisse, Datenbankbefehle und Replikatset-Vorgänge generiert. MongoDB schreibt strukturierte JSON-Logdateien lokal, die der Bindplane-Agent direkt aus dem Dateisystem erfassen kann.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Windows Server 2016 oder höher oder Linux-Host mit
systemd - Netzwerkverbindung zwischen dem Bindplane-Agent und dem MongoDB-Server
- Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
- Privilegierter Zugriff auf den MongoDB-Server (Root- oder Datenbankadministratorrolle)
- MongoDB Enterprise oder MongoDB Community Edition mit aktiviertem Audit-Logging
Authentifizierungsdatei für die Google SecOps-Datenaufnahme abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem Bindplane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > Profile auf.
Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietWarte, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collector
Der Dienst sollte als RUNNING angezeigt werden.
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shWarte, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sudo systemctl status observiq-otel-collector
Der Dienst sollte als active (running) angezeigt werden.
Zusätzliche Installationsressourcen
Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie im Installationsleitfaden für den Bindplane-Agent.
Bindplane-Agenten zum Erfassen von Logs und Senden an Google SecOps konfigurieren
Konfigurationsdatei suchen
Linux:
sudo systemctl status observiq-otel-collectorWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von
config.yamldurch die folgende Konfiguration:receivers: filelog: include: - /var/log/mongodb/auditLog.json start_at: beginning exporters: chronicle/mongodb: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: MONGO_DB raw_log_field: body ingestion_labels: env: production service: pipelines: logs/mongodb_to_chronicle: receivers: - filelog exporters: - chronicle/mongodb
Konfigurationsparameter
Ersetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration:
filelog: Der Empfängertyp zum Erfassen von Logdateien vom Laufwerkinclude: Liste der zu überwachenden Dateipfade:- Linux:
/var/log/mongodb/auditLog.json(Standardpfad für MongoDB-Audit-Logs) - Windows:
C:\data\log\auditLog.jsonoder der von Ihnen konfigurierte Audit-Log-Pfad
- Linux:
start_at: Wird aufbeginninggesetzt, um vorhandene Logs zu lesen, oder aufend, um nur neue Einträge zu lesen.
Exporter-Konfiguration:
mongodb: Aussagekräftiger Name für den Exportvorgangcreds_file_path: Vollständiger Pfad zur Authentifizierungsdatei für die Datenaufnahme:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
<customer_id>: Kunden-ID aus dem vorherigen Schrittendpoint: Regionale Endpunkt-URL:- USA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asien:
asia-southeast1-malachiteingestion-pa.googleapis.com - Eine vollständige Liste finden Sie unter Regionale Endpunkte.
- USA:
MONGO_DB: Logtyp, genau wie er in Chronicle angezeigt wirdingestion_labels: Optionale Labels im YAML-Format (z. B.env: production)
Pipelinekonfiguration:
mongodb_to_chronicle: Aussagekräftiger Name für die Pipeline
Konfigurationsdatei speichern
- Speichern Sie die Datei nach der Bearbeitung:
- Linux: Drücken Sie
Ctrl+O, dannEnterund dannCtrl+X. - Windows: Klicken Sie auf Datei > Speichern.
- Linux: Drücken Sie
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
So starten Sie den Bindplane-Agent unter Linux neu:
Führen Sie dazu diesen Befehl aus:
sudo systemctl restart observiq-otel-collectorPrüfen Sie, ob der Dienst ausgeführt wird:
sudo systemctl status observiq-otel-collectorLogs auf Fehler prüfen:
sudo journalctl -u observiq-otel-collector -f
So starten Sie den Bindplane-Agent unter Windows neu:
Wählen Sie eine der folgenden Optionen aus:
- Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Dienstkonsole:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
- Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
- Drücken Sie
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorLogs auf Fehler prüfen:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
MongoDB so konfigurieren, dass Audit-Logs generiert werden
- Melden Sie sich mit Administrator- oder Root-Berechtigungen auf dem MongoDB-Server an.
- Öffnen Sie die MongoDB-Konfigurationsdatei (
mongod.conf). Standardpfade:- Linux:
/etc/mongod.conf - Windows:
C:\Program Files\MongoDB\Server\<version>\bin\mongod.cfg
- Linux:
Prüfen Sie, ob das Audit-Logging aktiviert ist. Prüfen Sie in der Datei
mongod.confdie folgenden Einstellungen:auditLog.destinationist auffilegesetzt.auditLog.formatist aufJSONgesetzt.Notieren Sie sich die
auditLog.path(z. B./var/log/mongodb/auditLog.json).Wenn das Audit-Logging nicht aktiviert ist, fügen Sie
mongod.confFolgendes hinzu:auditLog: destination: file format: JSON path: /var/log/mongodb/auditLog.json
Starten Sie den MongoDB-Dienst neu, um die Konfiguration anzuwenden:
Linux:
sudo systemctl restart mongodWindows:
net stop MongoDB && net start MongoDB
Prüfen Sie, ob die Audit-Logdatei in den konfigurierten Pfad geschrieben wird (z. B.
/var/log/mongodb/auditLog.json).Achten Sie darauf, dass der Pfad
includedes Bindplane-Agents inconfig.yamlmit dem inmongod.confkonfiguriertenauditLog.pathübereinstimmt.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| ctx, connectionId, connectionCount, attr.protocol, attr.storage.data.bytesRead, attr.storage.data.timeReadingMicros, attr.command.$readPreference.mode, attr.queryHash, param_old, cluster_node, param.indexName, temp_db_value | additional.fields | Aus verschiedenen Feldern zusammengeführt, basierend auf Bedingungen |
| db_mechanism, param.mechanism | extensions.auth.auth_details | Wert aus „db_mechanism“, falls nicht leer, andernfalls „param.mechanism“ |
| extensions.auth.mechanism | Auf „MECHANISM_OTHER“ festgelegt | |
| extensions.auth.type | Legen Sie „AUTHTYPE_UNSPECIFIED“ fest. | |
| lb_hostname, src_hostname | intermediary.hostname | Wert aus lb_hostname, wenn nicht leer, andernfalls src_hostname |
| lb_port, src_port | intermediary.port | Wert aus „lb_port“, falls nicht leer, andernfalls „src_port“ (in eine Ganzzahl konvertiert) |
| msg | metadata.description | Wert direkt kopiert |
| metadata.event_type | Wird basierend auf den Bedingungen msg_atype, category, param_passwordChanged, param_command und remote_ip festgelegt. | |
| msg_atype, category | metadata.product_event_type | Wert aus „msg_atype“, falls nicht leer, andernfalls „category“ |
| id, type, traceId | metadata.product_log_id | Wert aus „id“, falls nicht leer, andernfalls „uuid.$binary“, falls „type“ == „04“, andernfalls „traceId“ |
| metadata.product_name | Auf „MongoDB Enterprise“ festgelegt | |
| metadata.vendor_name | Auf „MongoDB“ festgelegt | |
| application_name | principal.application | Wert direkt kopiert |
| accessLog.hostname | principal.asset.hostname | Wert direkt kopiert |
| remote_ip | principal.asset.ip | Wert direkt kopiert |
| software_label | principal.asset.software | Zusammengeführt aus software_label |
| accessLog.hostname | principal.hostname | Wert direkt kopiert |
| remote_ip | principal.ip | Wert direkt kopiert |
| os_type | principal.platform | Wird auf WINDOWS gesetzt, wenn es mit Windows übereinstimmt; auf MAC, wenn es mit osx oder mac übereinstimmt; auf LINUX, wenn es mit Linux übereinstimmt |
| os_name, param.clientMetadata.os.name | principal.platform_patch_level | Wert aus os_name, falls nicht leer, andernfalls param.clientMetadata.os.name |
| os_version, param.clientMetadata.os.version | principal.platform_version | Wert aus „os_version“, falls nicht leer, andernfalls „param.clientMetadata.os.version“ |
| remote_port | principal.port | In Ganzzahl umgewandelt |
| principal_userid | principal.user.userid | Wert direkt kopiert |
| sr_action | security_result.action | Wert direkt kopiert |
| param.reason, param.indexBuildState | security_result.description | Wert aus „param.reason“, wenn „msg_atype“ == „logout“; aus „param.indexBuildState“, wenn „msg_atype“ in [„createIndex“, „dropIndex“] |
| severity, level | security_result.severity | Wird auf INFORMATIONAL gesetzt, wenn die Schweregradangabe in ["i", "I"] oder die Stufe in ["INFO", "DEBUG"] liegt; auf ERROR, wenn die Schweregradangabe in ["e", "E"] oder die Stufe auf "ERROR" liegt; auf MEDIUM, wenn die Schweregradangabe in ["w", "W", "f", "F"] liegt. |
| msg_result, attr.error, attr.planSummary, reason, attr.msg_data | security_result.summary | Wird basierend auf den Bedingungen „msg_result“, „attr.error“, „attr.planSummary“, „reason“ und „attr.msg_data“ festgelegt. |
| db_value | target.administrative_domain | Wert direkt kopiert |
| application_name | target.application | Wert direkt kopiert |
| local_ip | target.asset.ip | Wert direkt kopiert |
| host_group | target.group.group_display_name | Wert direkt kopiert |
| local_ip | target.ip | Wert direkt kopiert |
| local_port | target.port | In Ganzzahl umgewandelt |
| old_name_label, cluster_node_label, mode_label, query_hash_label, bytes_read_label, time_reading_micro_label, environment_label, area_label | target.resource.attribute.labels | Aus verschiedenen Label-Feldern zusammengeführt |
| param_ns, db_value, param_new, param.args.find | target.resource.name | Basierend auf den Bedingungen „msg_atype“ und „param_command“ festgelegt |
| target.resource.resource_subtype | Auf „MongoDB Database“ für Datenbank-/Nutzerereignisse, „MongoDB Collection“ für Sammlungsereignisse und „MongoDB Index“ für Indexereignisse festgelegt | |
| target.resource.resource_type | Auf „DATABASE“ für Datenbank-/Nutzerereignisse und „TABLE“ für Sammlungs-/Indexereignisse festlegen | |
| db_user, param.user | target.user.userid | Wert aus db_user, wenn nicht leer, andernfalls param.user |
service.name |
event.idm.read_only_udm.target.application |
Aus dem Änderungsprotokoll zugeordnet |
host.name |
event.idm.read_only_udm.principal.hostname |
Aus Änderungsprotokoll zugeordnet |
host.name |
event.idm.read_only_udm.principal.asset.hostname |
Aus Änderungsprotokoll zugeordnet |
mongodb.group.id |
event.idm.read_only_udm.principal.group.product_object_id |
Aus Änderungsprotokoll zugeordnet |
mongodb.cluster.name |
event.idm.read_only_udm.target.resource.attribute.labels |
Aus Änderungsprotokoll zugeordnet |
mongodb.customer.cluster.name |
event.idm.read_only_udm.target.resource.attribute.labels |
Aus Änderungsprotokoll zugeordnet |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
Aus Änderungsprotokoll zugeordnet |
ts.date |
event.idm.read_only_udm.metadata.event_timestamp |
Aus Änderungsprotokoll zugeordnet |
uuid.binary |
event.idm.read_only_udm.metadata.product_log_id |
Aus Änderungsprotokoll zugeordnet |
users.1.user |
event.idm.read_only_udm.principal.user.userid |
Aus dem Änderungsprotokoll zugeordnet |
remote.ip |
event.idm.read_only_udm.principal.ip und event.idm.read_only_udm.principal.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
remote.port |
event.idm.read_only_udm.principal.port |
Aus Änderungsprotokoll zugeordnet |
local.ip |
event.idm.read_only_udm.target.ip und event.idm.read_only_udm.target.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
local.port |
event.idm.read_only_udm.target.port |
Aus Änderungsprotokoll zugeordnet |
roles.role |
event.idm.read_only_udm.principal.user.attribute.roles |
Aus Änderungsprotokoll zugeordnet |
param.args.client.application.name |
event.idm.read_only_udm.principal.application |
Aus Änderungsprotokoll zugeordnet |
param.args.client.os.type |
event.idm.read_only_udm.principal.asset.platform_software.platform |
Aus Änderungsprotokoll zugeordnet |
param.args.client.os.version |
event.idm.read_only_udm.principal.platform_version |
Aus Änderungsprotokoll zugeordnet |
param.args.client.os.architecture |
event.idm.read_only_udm.principal.asset.hardware |
Aus Änderungsprotokoll zugeordnet |
atype |
event.idm.read_only_udm.metadata.product_event_type |
Aus Änderungsprotokoll zugeordnet |
param.command |
event.idm.read_only_udm.metadata.product_event_type |
Aus Änderungsprotokoll zugeordnet |
param.ns |
event.idm.read_only_udm.target.resource.name |
Aus Änderungsprotokoll zugeordnet |
result |
event.idm.read_only_udm.security_result.action |
Aus Änderungsprotokoll zugeordnet |
mongodb.log.type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.db |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
uuid.type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.clientOperationKey.type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.clientOperationKey.binary |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.aggregate |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.mayBypassWriteBlocking |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.configTime.timestamp.t |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.topologyTime.timestamp.t |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.audit |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.cursor.batchSize.numberLong |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.includeQueryStatsMetrics |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.fromMongos |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.readConcern.provenance |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.readConcern.level |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.writeConcern.provenance |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.writeConcern.level |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.platform |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.driver.name |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.driver.version |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.os.name |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.clusterTime |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.lsid.id.type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.lsid.uid.binary |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.users.1.db |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.mongos.version |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.writeConcern.w |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.writeConcern.wtimeout |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.lsid.uid.type |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.pipeline.1.match.managedClusterType |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.pipeline.2.group.n.sum.const |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.pipeline.2.group._id.const |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.client.mongos.client.port |
event.idm.read_only_udm.additional.fields |
Aus Änderungsprotokoll zugeordnet |
param.args.audit.impersonatedRoles |
event.idm.read_only_udm.principal.user.attribute.roles |
Aus Änderungsprotokoll zugeordnet |
param.args.audit.impersonatedUser |
event.idm.read_only_udm.principal.user.attribute.labels |
Aus dem Änderungsprotokoll zugeordnet |
param.args.client.mongos.client |
event.idm.read_only_udm.principal.ip und event.idm.read_only_udm.principal.asset.ip |
Aus dem Änderungsprotokoll zugeordnet |
param.args.client.mongos.host |
event.idm.read_only_udm.intermediary.ip |
Aus Änderungsprotokoll zugeordnet |
param.args.client.mongos.host |
event.idm.read_only_udm.intermediary.port |
Aus Änderungsprotokoll zugeordnet |
accessLog.authResult |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.authSource |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.failureReason |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.groupId |
target.resource.product_object_id |
Aus Änderungsprotokoll zugeordnet |
accessLog.ipAddress |
intermediary.ip |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.t.$date |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.s |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.c |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.id |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.ctx |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.msg |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.client |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.isSpeculative |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.isClusterMember |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.mechanism |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.user |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.db |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.result |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.metrics.conversation_duration.micros |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.metrics.conversation_duration.summary.step |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.metrics.conversation_duration.summary.step_total |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.logLine.attr.metrics.conversation_duration.summary.duration_micros |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
accessLog.username |
target.user.user_display_name |
Aus Änderungsprotokoll zugeordnet |
accessLog.timestamp |
additional.fields |
Aus Änderungsprotokoll zugeordnet |
roles.db |
principal.user.attribute.roles |
Aus Änderungsprotokoll zugeordnet |
roles.db |
target.user.attribute.roles |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten