JFrog Artifactory-Protokolle erfassen

Unterstützt in:

Dieser Parser verarbeitet zwei verschiedene JFrog Artifactory-Logformate. Es verwendet Grok-Muster, um Felder aus den einzelnen Formaten zu identifizieren und zu extrahieren. Diese Felder werden dann dem UDM zugeordnet. JSON-Nutzlasten werden in einem der Formate verarbeitet und Protokolle, die keinem der Formate entsprechen, werden verworfen.

Hinweis

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen erhöhte Zugriffsrechte für JFrog.

Feed in Google SecOps für die Aufnahme der JFrog Artifactory-Protokolle konfigurieren

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. JFrog Artifactory-Protokolle.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie JFrog Artifactory als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B. \n.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren und speichern Sie den geheimen Schlüssel. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben.

  3. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Ersetzen Sie Folgendes:

    • ENDPOINT_URL: die URL des Feedendpunkts.
    • API_KEY: Der API-Schlüssel, mit dem Sie sich bei Google SecOps authentifizieren.
    • SECRET: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.

Webhook in JFrog Artifactory erstellen, um Daten an Google SecOps zu senden

  1. Melden Sie sich mit Ihren Administratoranmeldedaten in der JFrog-Instanz an.
  2. Gehen Sie zu Verwaltung > Allgemein > Webhooks.
  3. Klicken Sie auf + Neuer Webhook.
  4. Konfigurieren Sie die folgenden Webhook-Einstellungen:

    • Webhook-Schlüssel: Geben Sie einen beschreibenden Namen ein, z. B. Google SecOps.
    • URL: Geben Sie die <ENDPOINT_URL> des Google SecOps API-Endpunkt ein.

    • Ereignisse: Wählen Sie die Artifactory-Ereignisse aus, die den Webhook auslösen sollen. Wählen Sie die Ereignisse aus, die für Ihre Sicherheitsüberwachungsanforderungen relevant sind, z. B. deployed (bereitgestellt), downloaded (heruntergeladen) oder deleted (gelöscht).

    • Domain: Wenn Sie ein virtuelles Repository verwenden, wählen Sie die entsprechende Domain aus. Andernfalls lassen Sie dieses Feld auf Beliebig lokal.

    • Repository: Wählen Sie das gewünschte Repository aus oder lassen Sie die Option Beliebiges Remote-Repository oder Beliebiges lokales Repository aktiviert.

  5. Klicken Sie auf Testen, um ein Testereignis an Google SecOps zu senden.

  6. Klicken Sie auf Speichern.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
action read_only_udm.metadata.product_event_type Der Wert von action aus dem Rohprotokoll wird in Kleinbuchstaben umgewandelt und zugeordnet.
datetime read_only_udm.metadata.event_timestamp Das Feld datetime des Rohlogs wird analysiert und in einen Zeitstempel umgewandelt.
hostname read_only_udm.principal.hostname Wird direkt aus dem Feld hostname des Rohlogs zugeordnet.
id read_only_udm.metadata.product_log_id Wird direkt aus dem Feld id des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
ip read_only_udm.principal.ip Wird direkt aus dem Feld ip des Rohlogs zugeordnet. Hartcodiert auf „USER_RESOURCE_ACCESS“. Hartcodiert auf „JFROG_ARTIFACTORY“. Hartcodiert auf „Artifactory“. Hartcodiert auf „JFROG“.
owner read_only_udm.principal.user.userid Wird zugeordnet, wenn username nicht im Rohprotokoll (aus der JSON-Nutzlast) vorhanden ist.
repo_name read_only_udm.target.resource.name Wird 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 abgeleitet.
scope read_only_udm.target.resource.name Wird direkt aus dem Feld scope des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
scope read_only_udm.target.resource.resource_subtype Wird auf „scope“ hartcodiert, wenn scope im Rohprotokoll 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 Ist „subject“ im Rohprotokoll vorhanden, wird „subject“ hartcodiert.
subject read_only_udm.about.labels.value Wird direkt aus dem Feld subject des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
type read_only_udm.metadata.product_event_type Wird direkt aus dem Feld type des Rohlogs (aus der JSON-Nutzlast) zugeordnet.
Nutzer read_only_udm.principal.user.userid Wird direkt aus dem Feld user des Rohlogs zugeordnet.
username read_only_udm.principal.user.userid Wird direkt aus dem Feld username (aus der JSON-Nutzlast) des Rohlogs zugeordnet.

Änderungen

2024-09-23

  • Verbesserung:
  • Unterstützung für das Parsen der nicht geparsten Protokolle hinzugefügt.
  • „target_ip“ wurde „target.ip“ und „target.asset.ip“ zugeordnet.
  • „desc“ wurde „metadata.description“ zugeordnet.
  • „method“ wurde „network.http.method“ zugeordnet.
  • „url“ wurde „target.url“ zugeordnet.
  • „prin_url“ wurde in „principal.url“ geändert.
  • „response_code“ wurde in „network.http.response_code“ geändert.
  • „RequestMethod“ wurde auf „network.http.method“ zugeordnet.
  • „RequestPath“ wurde mit „target.url“ verknüpft.
  • „DownstreamContentSize“ und „DownstreamStatus“ wurden auf „Additional.Fields“ zugeordnet.
  • „ServiceAddr“ wurde „principal.hostname“ und „principal.port“ zugeordnet.
  • „ClientAddr“ wurde „target.ip“ und „target.port“ zugeordnet.
  • „user_agent“ wurde „network.http.user_agent“ zugeordnet.
  • „level“ wurde „security_result.severity“ zugeordnet.
  • „msg“ wurde in „security_result.description“ geändert.
  • „protocol“ wurde „network.application_protocol“ zugeordnet.

2023-08-25

  • Neu erstellter Parser.