Jenkins-Logs erfassen
Übersicht
Dieser Parser extrahiert wichtige Informationen wie Zeitstempel, Nutzer-IDs, Quell-IPs, Aktionen und Objekt-IDs aus Logs im JSON- und SYSLOG-Format. Dabei werden Grok-Muster verwendet, um verschiedene Logmeldungsformate abzugleichen und Abweichungen in der Struktur zu berücksichtigen. Außerdem wird ein einheitliches Datenmodell (Unified Data Model, UDM) mit den extrahierten Feldern gefüllt. Der Parser kategorisiert Ereignisse auch anhand von Nutzer- oder IP-Informationen.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- 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 über die richtigen Zugriffssteuerungen verfügt (z. B. dass nur autorisierte Dienstkonten in den Bucket schreiben können).
Google Cloud Dienstkonto erstellen
- Rufen Sie IAM und Verwaltung > Dienstkonten auf.
- Erstellen Sie ein neues Dienstkonto. Geben Sie ihm einen beschreibenden Namen, z. B. jenkins-logs.
- Weisen Sie dem Dienstkonto die Rolle Storage-Objekt-Ersteller 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 Jenkins verwalten > Plug-ins.
- 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-Anmeldedaten-Plug-in in Jenkins installieren
- Gehen Sie zu Jenkins verwalten > Plug-ins.
- 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 bei Google Cloudkonfigurieren
Rufen Sie Jenkins verwalten > Anmeldedaten > System auf.
Klicken Sie auf add Anmeldedaten hinzufügen.
Art: Wählen Sie Google-Dienstkonto von privatem Schlüssel aus.
Projektname: Legen Sie einen Namen für die Anmeldedaten fest.
Laden Sie die JSON-Schlüsseldatei hoch, die Sie beim Erstellen des Dienstkontos erhalten haben. Google Cloud
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.
- Testen Sie den Protokoll-Upload.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „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 Feed name (Feedname) einen Namen für den Feed ein, z. B. Jenkins Logs (Jenkins-Protokolle).
- Wählen Sie Google Cloud Storage als Quelltyp aus.
- Wählen Sie Jenkins als Logtyp aus.
- Klicken Sie auf Dienstkonto abrufen als Chronicle-Dienstkonto.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
gs://my-bucket/<value>
. - URI ist ein: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
- Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Storage-Bucket-URI: Google Cloud Storage-Bucket-URL im Format
gs://my-bucket/<value>
. - URI ist ein: Wählen Sie Verzeichnis mit Unterverzeichnissen aus.
- Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
act | security_result.action_details | Aus den Feldern msg1 oder msg2 extrahiert. Stellt die ausgeführte Aktion dar. Vorangehende 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 sie mit einem Nutzernamenmuster übereinstimmt, wird sie 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 aufgeschlüsselt. |
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. |
Objekt | target.asset.product_object_id | Aus msg1 extrahiert. 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 genauere Objektkennung dar. Der Schlüssel ist als „Plugin Name“ hartcodiert. |
src_ip | principal.ip | Aus Nachricht oder Daten extrahiert. Stellt die Quell-IP-Adresse dar. |
Nutzer | principal.user.userid | Aus Nachricht oder Daten extrahiert. Der Nutzer, der mit dem Ereignis verknüpft ist. |
metadata.event_timestamp | Kopiert aus dem berechneten Feld @timestamp. | |
metadata.event_type | Wird durch die Parserlogik bestimmt. Auf USER_UNCATEGORIZED setzen, wenn user vorhanden ist, auf STATUS_UNCATEGORIZED, wenn src_ip vorhanden ist, und andernfalls auf GENERIC_EVENT. | |
metadata.product_name | Fest codiert als Jenkins. | |
metadata.product_version | Fest codiert als Jenkins. | |
metadata.vendor_name | Fest codiert als JENKINS. | |
metadata.event_timestamp | Wird aus den Feldern year, month, day, time und ampm erstellt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten