Jenkins-Logs erfassen
Dieser Parser extrahiert wichtige Informationen wie Zeitstempel, Nutzer-IDs, Quell-IPs, Aktionen und Objekt-IDs aus Logs im JSON- und SYSLOG-Format. Es verwendet Grok-Muster, um verschiedene Logeintragformate abzugleichen, geht mit Abweichungen in der Struktur um und füllt ein einheitliches Datenmodell (Unified Data Model, UDM) mit den extrahierten Feldern. Der Parser kategorisiert Ereignisse auch anhand von Nutzer- oder IP-Informationen.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz.
- Privilegierter Zugriff auf Google Cloud IAM.
- Privilegierter Zugriff auf Google Cloud Storage.
- Privilegierter Zugriff auf Jenkins.
Google Cloud Storage-Bucket erstellen
- Cloud Storage aufrufen
- Erstellen Sie einen neuen Bucket. Wählen Sie einen eindeutigen Namen und eine geeignete Region aus.
- Achten Sie darauf, dass der Bucket die richtigen Zugriffssteuerungen hat (z. B. dass nur autorisierte Dienstkonten in den Bucket schreiben können).
Google Cloud Dienstkonto erstellen
- Rufen Sie IAM & Verwaltung > Dienstkonten auf.
- Erstellen Sie ein neues Dienstkonto. Geben Sie einen aussagekräftigen Namen ein, z. B. jenkins-logs.
- Weisen Sie dem Dienstkonto die Rolle Storage Object Creator für den GCS-Bucket zu, den Sie im vorherigen Schritt erstellt haben.
- Erstellen Sie einen SSH-Schlüssel für Ihr Dienstkonto: Dienstkontoschlüssel erstellen und löschen.
Laden Sie eine JSON-Schlüsseldatei für das Dienstkonto herunter.
Google Cloud Storage-Plug-in in Jenkins installieren
- Gehen Sie zu Manage Jenkins > Plugins.
- Wählen Sie Verfügbare Plug‑ins aus.
- Suchen Sie nach dem Google Cloud Storage-Plug-in.
- Installieren Sie das Plug-in und starten Sie Jenkins bei Bedarf neu.
Google OAuth Credentials-Plug-in in Jenkins installieren
- Gehen Sie zu Manage Jenkins > Plugins.
- Wählen Sie Verfügbare Plug-ins aus.
- Suchen Sie nach dem Plug-in Google OAuth Credentials.
- Installieren Sie das Plug-in und starten Sie Jenkins bei Bedarf neu.
Jenkins für die Authentifizierung mit Google Cloudkonfigurieren
Rufen Sie Manage Jenkins > Credentials > System auf.
Klicken Sie auf Hinzufügen Anmeldedaten hinzufügen.
Art: Wählen Sie Google-Dienstkonto über privaten Schlüssel aus.
Projektname: Legen Sie einen Namen für die Anmeldedaten fest.
Laden Sie die JSON-Schlüsseldatei hoch, die Sie beim Google Cloud Erstellen des Dienstkontos erhalten haben.
Klicken Sie auf Erstellen.
Jenkins-Logs für den Upload in Google SecOps konfigurieren
- Fügen Sie in der Jenkins-Jobkonfiguration Google Storage Build Log Upload in den Post-Build-Aktionen mit den folgenden Parametern hinzu:
- Google Credentials (Google-Anmeldedaten): Der Name der Google-Anmeldedaten, die Sie im vorherigen Schritt erstellt haben.
- Log Name (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 Logs hochladen möchten. Der Bucket muss für das von Ihnen erstellte Dienstkonto zugänglich sein.
- Log-Upload testen
Feeds einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Jenkins-Logs.
- Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Jenkins als Log type (Protokolltyp) aus.
- Klicken Sie auf Dienstkonto abrufen als Chronicle-Dienstkonto.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
gs://my-bucket/<value>/. Diese URL muss mit einem nachgestellten Schrägstrich (/) enden. - Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
Klicken Sie auf Feed erstellen.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| act | security_result.action_details | Aus den Feldern msg1 oder msg2 extrahiert. Stellt die ausgeführte Aktion dar. Führende 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 Nutzernamensmuster übereinstimmt, wird es principal.user.userid zugeordnet. Andernfalls wird sie 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 aufgeteilt. Wenn » vorhanden ist, wird es in object und act aufgeteilt. Andernfalls wird es als act behandelt und möglicherweise weiter analysiert. |
| msg2 | metadata.description ODER security_result.action_details | Falls vorhanden, wird sie anfangs metadata.description zugeordnet. Wenn sie „completed:“ enthält, wird der Wert danach extrahiert und security_result.action_details zugeordnet. |
| object | target.asset.product_object_id | Extrahierte Informationen aus msg1. Stellt das Objekt dar, auf das sich die Aktion bezieht. |
| object_id | target.resource.attribute.labels.value | Wird aus object extrahiert, wenn ein / vorhanden ist. Stellt eine spezifischere Objektkennung dar. Der Schlüssel ist als „Plugin Name“ hartcodiert. |
| src_ip | principal.ip | Extrahierte Daten aus message oder data. Stellt die Quell-IP-Adresse dar. |
| Nutzer*in | principal.user.userid | Extrahierte Daten aus message oder data. Stellt den Nutzer dar, der mit dem Ereignis verknüpft ist. |
| metadata.event_timestamp | Kopiert aus dem berechneten Feld @timestamp. | |
| metadata.event_type | Wird durch die Parserlogik bestimmt. Wird auf USER_UNCATEGORIZED festgelegt, wenn user vorhanden ist, auf STATUS_UNCATEGORIZED, wenn src_ip vorhanden ist, und auf GENERIC_EVENT, wenn keines der beiden vorhanden ist. | |
| metadata.product_name | Hartcodiert als Jenkins. | |
| metadata.product_version | Hartcodiert als Jenkins. | |
| metadata.vendor_name | Fest codiert als JENKINS. | |
| metadata.event_timestamp | Wird aus den Feldern year, month, day, time und ampm erstellt. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten