ANSIBLE_AWX

Unterstützt in:

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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Rufen Sie SIEM-Einstellungen > Collection Agents auf.
  3. 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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. 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

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. 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

  1. Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
  2. 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

  1. 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 Verzeichnis C:Program FilesobservIQ OpenTelemetry Collector.
    • Öffnen Sie die Datei mit einem Texteditor (z. B. nano, vi oder Notepad).
  2. Bearbeiten Sie die Datei config.yamlso:

    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

  1. Melden Sie sich in der Ansible AWX Management Console an.
  2. Klicken Sie in der Navigationsleiste auf Einstellungen.
  3. Wählen Sie in den System-Optionen die Protokollierungseinstellungen aus.
  4. 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 Serverlogs
      • activity_stream: Aufzeichnung von Änderungen an AWX-Objekten
      • job_events: Daten des Ansible-Callback-Moduls
      • system_tracking: Systeminformationen und Konfigurationsdaten
    • Fakten zur Systemverfolgung einzeln protokollieren: Stelle den Schalter auf AUS (Standard).
  5. Klicken Sie auf Speichern, um die Einstellungen zu übernehmen.
  6. 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