JFrog Artifactory-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie JFrog Artifactory-Logs mit dem BindPlane-Agent in Google Security Operations aufnehmen.

JFrog Artifactory ist ein universeller Manager für Artefakt-Repositories, der Syslog-Nachrichten für Repository-Zugriffsereignisse, Authentifizierung, Konfigurationsänderungen und Artefaktvorgänge generiert. Der Parser extrahiert Felder aus Syslog- und JSON-formatierten Logs mithilfe von Grok-Mustern und ordnet sie dem Unified Data Model (UDM) zu.

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 JFrog Artifactory-Server
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • SSH-Zugriff auf die JFrog Artifactory-Instanz

Authentifizierungsdatei für die Google SecOps-Datenaufnahme abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der BindPlane-Agent installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole 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
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

    Der Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.

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
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sudo systemctl status observiq-otel-collector
    

    Der Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.

BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/jfrog_artifactory:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: JFROG_ARTIFACTORY
            raw_log_field: body
    
    service:
        pipelines:
            logs/jfrog_artifactory_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/jfrog_artifactory
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf die gewartet werden soll:
      • 0.0.0.0, um alle Schnittstellen zu überwachen (empfohlen)
      • Port 514 ist der Standard-Syslog-Port (erfordert Root unter Linux; verwenden Sie 1514 für Nicht-Root).
  • Exporter-Konfiguration:

    • creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Die Kundennummer, die aus der Google SecOps Console kopiert wurde
    • endpoint: 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.

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
    • Windows: Klicken Sie auf Datei > Speichern.

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
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

      sudo systemctl status observiq-otel-collector
      
    2. Logs auf Fehler prüfen:

      sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agent unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Services-Konsole:

      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Logs auf Fehler prüfen:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

JFrog Artifactory-Syslog konfigurieren

  1. Stellen Sie eine Verbindung zur JFrog Artifactory-Instanz her.
  2. Bearbeiten Sie die Datei $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml:

    vi $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
    
  3. Fügen Sie der Datei den folgenden Syslog-Appender hinzu:

    <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost><BINDPLANE_IP></syslogHost>
        <facility>SYSLOG</facility>
        <suffixPattern>[%thread] %logger %msg</suffixPattern>
    </appender>
    
    • Ersetzen Sie <BINDPLANE_IP> durch die tatsächliche IP-Adresse des Bindplane-Agents.
  4. Fügen Sie dem Root-Logger die Syslog-Appender-Referenz hinzu:

    <root>
        <level value="debug"/>
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="SYSLOG"/>
    </root>
    
  5. Speichern Sie die Datei, indem Sie ESC drücken und :wq eingeben.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Aktion read_only_udm.metadata.product_event_type Der Wert von action aus dem Rohlog wird in Kleinbuchstaben umgewandelt und zugeordnet.
datetime read_only_udm.metadata.event_timestamp Das Feld datetime des Rohlogs wird geparst und in einen Zeitstempel umgewandelt.
hostname read_only_udm.principal.hostname Direkt aus dem Feld hostname des Rohlogs zugeordnet.
id read_only_udm.metadata.product_log_id Direkt aus dem Feld id des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
ip read_only_udm.principal.ip Direkt aus dem Feld ip des Rohlogs zugeordnet. Fest codiert auf „USER_RESOURCE_ACCESS“. Fest codiert auf „JFROG_ARTIFACTORY“. Fest codiert auf „Artifactory“. Fest codiert auf „JFROG“.
Inhaber read_only_udm.principal.user.userid Wird zugeordnet, wenn username nicht im Rohlog (aus der JSON-Nutzlast) vorhanden ist.
repo_name read_only_udm.target.resource.name Direkt aus dem Feld repo_name des Rohlogs zugeordnet.
repo_type read_only_udm.target.resource.resource_subtype Direkt aus dem Feld repo_type des Rohlogs zugeordnet.
Bereich read_only_udm.target.resource.name Direkt aus dem Feld scope des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
Bereich read_only_udm.target.resource.resource_subtype Fest codiert auf „scope“, wenn scope im Rohlog vorhanden ist.
sequenceId read_only_udm.metadata.product_log_id Anführungszeichen werden aus dem Feld sequenceId entfernt und dann zugeordnet.
subject read_only_udm.about.labels.key Wenn subject im Rohlog vorhanden ist, wird der Wert fest auf „subject“ codiert.
subject read_only_udm.about.labels.value Direkt aus dem Feld subject des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
type read_only_udm.metadata.product_event_type Direkt aus dem Feld type des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
Nutzer*in read_only_udm.principal.user.userid Direkt aus dem Feld user des Rohlogs abgeleitet.
Nutzername read_only_udm.principal.user.userid Direkt aus dem Feld username des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
data.repository_key", "data.release_bundle_name", "data.release_bundle_version", "data.property_key", "data.property_values", "data.platforms.architecture", and "data.platforms.os additional.fields Aus dem Änderungsprotokoll zugeordnet
data.repo_key" ,"subscription_key","source","image_name", "data.platforms additional.fields Aus dem Änderungsprotokoll zugeordnet
domain principal.administrative_domain Aus dem Änderungsprotokoll zugeordnet
data.path target.file.full_path Aus dem Änderungsprotokoll zugeordnet
data.name target.user.user_display_name Aus dem Änderungsprotokoll zugeordnet
data.size target.file.size Aus dem Änderungsprotokoll zugeordnet
SHA256 target.process.file.sha256 Aus dem Änderungsprotokoll zugeordnet
target_ip target.ip Aus dem Änderungsprotokoll zugeordnet
desc metadata.description Aus dem Änderungsprotokoll zugeordnet
method network.http.method Aus dem Änderungsprotokoll zugeordnet
url target.url Aus dem Änderungsprotokoll zugeordnet
prin_url principal.url Aus dem Änderungsprotokoll zugeordnet
response_code network.http.response_code Aus dem Änderungsprotokoll zugeordnet
RequestMethod network.http.method Aus dem Änderungsprotokoll zugeordnet
RequestPath target.url Aus dem Änderungsprotokoll zugeordnet
DownstreamContentSize" and "DownstreamStatus Additional.Fields Aus dem Änderungsprotokoll zugeordnet
ServiceAddr principal.hostname Aus dem Änderungsprotokoll zugeordnet
ClientAddr target.ip Aus dem Änderungsprotokoll zugeordnet
user_agent network.http.user_agent Aus dem Änderungsprotokoll zugeordnet
level security_result.severity Aus dem Änderungsprotokoll zugeordnet
msg security_result.description Aus dem Änderungsprotokoll zugeordnet
protocol network.application_protocol 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