ANSIBLE_AWX
In diesem Dokument wird beschrieben, wie Sie Ansible AWX-Logs mit Bindplane in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus JSON-formatierten Ansible AWX-Logs. Dabei werden Logfelder mithilfe von JSON-Parsing extrahiert und dann den Werten im Unified Data Model (UDM) zugeordnet. Außerdem werden Standardmetadatenwerte für die Ereignisquelle und den Ereignistyp festgelegt.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz.
- Ein Windows 2016- oder höher-Host oder ein Linux-Host mit
systemd
. - Wenn Sie den Agent hinter einem Proxy ausführen, achten Sie darauf, dass die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sind.
- Privilegierter Zugriff auf die Ansible AWX-Verwaltungskonsole oder -Appliance mit Administratorberechtigungen.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Rufen Sie 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 Console 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.
Fenstereinbau
- Ö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" /quiet
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.sh
Zusätzliche Installationsressourcen
Weitere Installationsoptionen finden Sie im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet sie sich unter Linux im Verzeichnis/opt/observiq-otel-collector/
oder unter Windows im VerzeichnisC:Program FilesobservIQ OpenTelemetry Collector
. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so:receivers: udplog: # Using high port to avoid requiring root privileges listen_address: "0.0.0.0:514" exporters: chronicle/awx: endpoint: malachiteingestion-pa.googleapis.com creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: YOUR_CUSTOMER_ID log_type: 'ANSIBLE_AWX' raw_log_field: body service: pipelines: logs/awx: receivers: - udplog exporters: - chronicle/awx
- Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
- Ersetzen Sie
YOUR_CUSTOMER_ID
durch die tatsächliche Kunden-ID. - Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei in Schritt 1 gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen zu übernehmen
Führen Sie den folgenden Befehl aus, um den BindPlane-Agent unter Linux neu zu starten:
sudo systemctl restart observiq-otel-collector
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
sc stop observiq-otel-collector && sc start observiq-otel-collector
Externe Protokollierung in Ansible AWX konfigurieren
- Melden Sie sich in der Ansible AWX Management Console an.
- Klicken Sie in der Navigationsleiste auf Einstellungen.
- Wählen Sie in den System-Optionen die Protokollierungseinstellungen aus.
- Geben Sie die folgenden Konfigurationsdetails an:
- Logging Aggregator (Logging-Aggregator): Geben Sie die IP-Adresse des BindPlane-Agents ein.
- Logging Aggregator Port (Port des Logging-Aggregators): Geben Sie die Portnummer des BindPlane-Agents ein (z. B.
514
). - Logging Aggregator Type (Typ des Logging-Aggregators): Wählen Sie Other (Andere) aus der Liste aus.
- Logging Aggregator Username (Nutzername des Logging-Aggregators): Lassen Sie das Feld leer (nicht für Syslog erforderlich).
- Logging Aggregator Password/Token (Passwort/Token für Logging-Aggregator): Leer lassen (für Syslog nicht erforderlich).
- Logging Aggregator Protocol (Protokoll für Logging-Aggregator): Wählen Sie UDP aus (empfohlen für Syslog).
- Schwellenwert für Aggregator-Logging: Wählen Sie Info oder die gewünschte Protokollebene aus.
- Externe Protokollierung aktivieren: Klicken Sie auf den Schalter, um ihn auf EIN zu stellen.
- Loggers to Send Data to the Log Aggregator (Logger zum Senden von Daten an den Log-Aggregator): Wählen Sie die relevanten Log-Typen aus:
awx
: Allgemeine Serverlogsactivity_stream
: Aufzeichnung von Änderungen an AWX-Objektenjob_events
: Daten des Ansible-Callback-Modulssystem_tracking
: Systeminformationen und Konfigurationsdaten
- Fakten zur Systemverfolgung einzeln protokollieren: Stelle den Schalter auf AUS (Standard).
- Klicken Sie auf Speichern, um die Einstellungen zu übernehmen.
- Optional: Klicken Sie auf Testen, um die Verbindung zum BindPlane-Agent zu prüfen.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
agent.ephemeral_id |
observer.labels.value |
Der Wert von agent.ephemeral_id aus dem Rohlog. |
agent.hostname |
observer.hostname |
Der Wert von agent.hostname aus dem Rohlog. |
agent.id |
observer.asset_id |
Verkettung von „filebeat:“ und dem Wert von agent.id aus dem Rohlog. |
agent.name |
observer.user.userid |
Der Wert von agent.name aus dem Rohlog. |
agent.type |
observer.application |
Der Wert von agent.type aus dem Rohlog. |
agent.version |
observer.platform_version |
Der Wert von agent.version aus dem Rohlog. |
cloud.availability_zone |
principal.resource.attribute.labels.value |
Der Wert von cloud.availability_zone aus dem Rohlog. |
cloud.instance.id |
principal.resource.product_object_id |
Der Wert von cloud.instance.id aus dem Rohlog. |
cloud.instance.name |
principal.resource.name |
Der Wert von cloud.instance.name aus dem Rohlog. |
cloud.machine.type |
principal.resource.attribute.labels.value |
Der Wert von cloud.machine.type aus dem Rohlog. |
cloud.provider |
principal.resource.attribute.labels.value |
Der Wert von cloud.provider aus dem Rohlog. |
event1 |
metadata.description |
Der Wert von event1 aus dem Rohlog. Wenn event1 nicht vorhanden ist, wird der Wert von message verwendet. |
event1_data.host |
principal.hostname |
Der Wert von event1_data.host aus dem Rohlog. |
event1_data.remote_addr |
principal.ip |
Die IP-Adresse, die aus event1_data.remote_addr mit einem Grok-Muster extrahiert wurde. |
event1_data.task |
security_result.detection_fields.value |
Der Wert von event1_data.task aus dem Rohlog. |
event1_data.task_path |
principal.process.file.full_path |
Der Wert von event1_data.task_path aus dem Rohlog. |
event1_data.task_uuid |
security_result.detection_fields.value |
Der Wert von event1_data.task_uuid aus dem Rohlog. |
event1_data.uuid |
metadata.product_log_id |
Der Wert von event1_data.uuid aus dem Rohlog. |
event1_display |
security_result.description |
Der Wert von event1_display aus dem Rohlog. |
host |
principal.hostname |
Der Wert von host aus dem Rohlog, der verwendet wird, wenn event1_data.host und host_name nicht vorhanden sind. |
host.architecture |
target.asset.hardware.cpu_platform |
Der Wert von host.architecture aus dem Rohlog. |
host.fqdn |
target.administrative_domain |
Der Wert von host.fqdn aus dem Rohlog. |
host.hostname |
target.hostname |
Der Wert von host.hostname aus dem Rohlog. |
host.id |
target.asset.asset_id |
Verkettung von „Host-ID: “ und dem Wert von host.id aus dem Rohprotokoll. |
host.ip |
target.asset.ip |
Die Werte von host.ip aus dem Rohlog. |
host.mac |
target.mac |
Die Werte von host.mac aus dem Rohlog. |
host.os.codename |
target.asset.attribute.labels.value |
Der Wert von host.os.codename aus dem Rohlog. |
host.os.kernel |
target.platform_patch_level |
Der Wert von host.os.kernel aus dem Rohlog. |
host.os.name |
target.asset.attribute.labels.value |
Der Wert von host.os.name aus dem Rohlog. |
host.os.platform |
target.platform |
Wird auf „LINUX“ festgelegt, wenn host.os.platform „debian“ ist. |
host.os.version |
target.platform_version |
Der Wert von host.os.version aus dem Rohlog. |
host_name |
principal.hostname |
Der Wert von host_name aus dem Rohlog, der verwendet wird, wenn event1_data.host nicht vorhanden ist. |
input.type |
network.ip_protocol |
Wird auf „TCP“ festgelegt, wenn input.type „tcp“ ist. |
level |
security_result.severity |
Zugeordnet basierend auf dem Wert von level : „DEBUG“, „INFO“ und „AUDIT“ werden „INFORMATIONAL“ zugeordnet; „ERROR“ wird „ERROR“ zugeordnet; „WARNING“ wird „MEDIUM“ zugeordnet. |
level |
security_result.severity_details |
Der Wert von level aus dem Rohlog. |
log.source.address |
principal.ip |
Die IP-Adresse, die aus log.source.address mit einem Grok-Muster extrahiert wurde. |
log.source.address |
principal.port |
Der Port, der mit einem Grok-Muster aus log.source.address extrahiert wurde. |
logger_name |
intermediary.application |
Der Wert von logger_name aus dem Rohlog. |
message |
metadata.description |
Der Wert von message aus dem Rohlog, der als Fallback verwendet wird, wenn event1 nicht vorhanden ist. |
parent_uuid |
security_result.detection_fields.value |
Der Wert von parent_uuid aus dem Rohlog. |
timestamp |
metadata.event_timestamp |
Der Wert von timestamp aus dem Rohlog, der mit dem Datumsfilter geparst wurde. Wird durch die Logik bestimmt: „NETWORK_CONNECTION“, wenn log.source.address und host.ip im JSON vorhanden sind; „STATUS_UPDATE“, wenn principal_hostname oder event1_data.remote_addr vorhanden sind; andernfalls „GENERIC_EVENT“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ANSIBLE_AWX“. Fest codiert auf „ephemeral_id“. Je nach Feldzuordnung fest codiert auf „machine_type“, „provider“ oder „availability_zone“. Fest codiert auf „VIRTUAL_MACHINE“. Je nach zugeordnetem Feld fest codiert auf „parent_uuid“, „task“ oder „task_uuid“. Je nach Feldzuordnung fest auf „codename“ oder „os_name“ festgelegt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten