Jenkins-Protokolle erfassen

Unterstützt in:

Übersicht

Dieser Parser extrahiert wichtige Informationen wie Zeitstempel, Nutzer-IDs, Quell-IPs, Aktionen und Objekt-IDs aus JSON- und SYSLOG-formatierten Protokollen. Es verwendet Grok-Muster, um verschiedene Protokollnachrichtenformate abzugleichen, Strukturvarianten zu verarbeiten und ein einheitliches Datenmodell (Unified Data Model, UDM) mit den extrahierten Feldern zu füllen. Der Parser kategorisiert Ereignisse auch anhand der Anwesenheit von Nutzer- oder IP-Informationen.

Hinweise

  • Sie benötigen eine Google SecOps-Instanz.
  • Sie benötigen Berechtigungen für den Zugriff auf Google Cloud IAM.
  • Sie benötigen Berechtigungen für den Zugriff auf Google Cloud Storage.
  • Sie benötigen erhöhte Zugriffsrechte für Jenkins.

Google Cloud Storage-Bucket erstellen

  1. Cloud Storage aufrufen
  2. Erstellen Sie einen neuen Bucket. Wählen Sie einen eindeutigen Namen und eine geeignete Region aus.
  3. Achten Sie darauf, dass der Bucket über die richtigen Zugriffssteuerungen verfügt (z. B. dass nur autorisierte Dienstkonten darauf schreiben können).

Google Cloud-Dienstkonto erstellen

  1. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  2. Erstellen Sie ein neues Dienstkonto. Geben Sie ihm einen aussagekräftigen Namen, z. B. jenkins-logs.
  3. Weisen Sie dem Dienstkonto die Rolle Storage-Objekt-Ersteller für den GCS-Bucket zu, den Sie im vorherigen Schritt erstellt haben.
  4. Erstellen Sie einen SSH-Schlüssel für Ihr Dienstkonto: Dienstkontoschlüssel erstellen und löschen.
  5. Laden Sie eine JSON-Schlüsseldatei für das Dienstkonto herunter.

Google Cloud Storage-Plug-in in Jenkins installieren

  1. Gehen Sie zu Jenkins verwalten > Plug-ins.
  2. Wählen Sie Verfügbare Plug-ins aus.
  3. Suchen Sie nach dem Google Cloud Storage-Plug-in.
  4. Installieren Sie das Plug-in und starten Sie Jenkins bei Bedarf neu.

Google OAuth-Anmeldedaten-Plug-in in Jenkins installieren

  1. Gehen Sie zu Jenkins verwalten > Plug-ins.
  2. Wählen Sie Verfügbare Plug-ins aus.
  3. Suchen Sie nach dem Plug-in Google OAuth-Anmeldedaten.
  4. Installieren Sie das Plug-in und starten Sie Jenkins bei Bedarf neu.

Jenkins für die Authentifizierung bei Google Cloud konfigurieren

  1. Klicken Sie auf Jenkins verwalten > Anmeldedaten > System.

  2. Klicken Sie auf Hinzufügen Anmeldedaten hinzufügen.

  3. Kind: Wählen Sie Google-Dienstkonto von privatem Schlüssel aus.

  4. Projektname: Legen Sie einen Namen für die Anmeldedaten fest.

  5. Laden Sie die JSON-Schlüsseldatei hoch, die Sie beim Erstellen des Google Cloud-Dienstkontos erhalten haben.

  6. Klicken Sie auf Erstellen.

Jenkins-Protokolle für den Upload von Google SecOps konfigurieren

  1. Fügen Sie in der Jenkins-Aufgabenkonfiguration Google Storage Build Log Upload zu den Post-Build-Aktionen mit den folgenden Parametern hinzu:
    • Google-Anmeldedaten: Der Name Ihrer Google-Anmeldedaten, die Sie im vorherigen Schritt erstellt haben.
    • Protokollname: Der Name der Datei, in der das Jenkins-Build-Protokoll unter dem angegebenen Speicherpfad gespeichert werden soll.
    • Speicherort: Der Name des Buckets, in den Sie Ihre Protokolle hochladen möchten. Das von Ihnen erstellte Dienstkonto muss auf den Bucket zugreifen können.
  2. Testen Sie den Protokollupload.

Feed in Google SecOps für die Aufnahme von Jenkins-Protokollen 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. Jenkins-Protokolle.
  4. Wählen Sie Google Cloud Storage als Quelltyp aus.
  5. Wählen Sie Jenkins als Logtyp aus.
  6. Klicken Sie als Chronicle-Dienstkonto auf Dienstkonto abrufen.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Storage Bucket-URI: URL des Google Cloud Storage-Buckets im Format gs://my-bucket/<value>.
    • URI ist ein: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
    • Asset-Namespace: der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
act security_result.action_details Wird aus den Feldern msg1 oder msg2 extrahiert. Stellt die ausgeführte Aktion dar. Vorangestellte Leerzeichen werden entfernt.
Daten principal.user.userid ODER principal.ip ODER metadata.description Wenn data mit einem IP-Adressmuster übereinstimmt, wird es principal.ip zugeordnet. Wenn es mit einem Nutzernamenmuster übereinstimmt, wird es principal.user.userid zugeordnet. Andernfalls wird es metadata.description zugeordnet.
msg1 target.asset.product_object_id ODER security_result.action_details Wird verwendet, um object und act zu extrahieren. Wenn / vorhanden ist, wird es in object und act unterteilt. Wenn » vorhanden ist, wird es in object und act unterteilt. Andernfalls wird es als act behandelt und möglicherweise weiter analysiert.
msg2 metadata.description ODER security_result.action_details Wird ggf. anfangs auf metadata.description zugeordnet. Wenn der String „completed:“ enthält, wird der nachfolgende Wert extrahiert und security_result.action_details zugeordnet.
object target.asset.product_object_id Aus msg1 extrahiert. Stellt das Objekt dar, auf das eine Aktion ausgeführt wird.
object_id target.resource.attribute.labels.value Wird aus object extrahiert, wenn eine / vorhanden ist. Stellt eine spezifischere Objektkennung dar. Der Schlüssel ist als „Plugin Name“ hartcodiert.
src_ip principal.ip Aus message oder data extrahiert. Stellt die Quell-IP-Adresse dar.
Nutzer principal.user.userid Aus message oder data extrahiert. Der Nutzer, der mit dem Ereignis verknüpft ist.
metadata.event_timestamp Aus dem berechneten Feld @timestamp kopiert.
metadata.event_type Wird durch die Parserlogik bestimmt. Legen Sie USER_UNCATEGORIZED fest, wenn user vorhanden ist, STATUS_UNCATEGORIZED, wenn src_ip vorhanden ist, und andernfalls GENERIC_EVENT.
metadata.product_name Hartcodiert als Jenkins.
metadata.product_version Hartcodiert als Jenkins.
metadata.vendor_name Hartcodiert als JENKINS.
metadata.event_timestamp Wird aus den Feldern year, month, day, time und ampm erstellt.

Änderungen

2023-11-27

  • Neu erstellter Parser.