Jenkins-Protokolle erfassen
Ü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
- 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 darauf schreiben können).
Google Cloud-Dienstkonto erstellen
- Rufen Sie IAM und Verwaltung > Dienstkonten auf.
- Erstellen Sie ein neues Dienstkonto. Geben Sie ihm einen aussagekräftigen 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-Anmeldedaten.
- Installieren Sie das Plug-in und starten Sie Jenkins bei Bedarf neu.
Jenkins für die Authentifizierung bei Google Cloud konfigurieren
Klicken Sie auf Jenkins verwalten > Anmeldedaten > System.
Klicken Sie auf Hinzufügen Anmeldedaten hinzufügen.
Kind: 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 Google Cloud-Dienstkontos erhalten haben.
Klicken Sie auf Erstellen.
Jenkins-Protokolle für den Upload von Google SecOps konfigurieren
- 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.
- Testen Sie den Protokollupload.
Feed in Google SecOps für die Aufnahme von Jenkins-Protokollen konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Jenkins-Protokolle.
- Wählen Sie Google Cloud Storage als Quelltyp aus.
- Wählen Sie Jenkins als Logtyp aus.
- Klicken Sie als Chronicle-Dienstkonto auf Dienstkonto abrufen.
- Klicken Sie auf Weiter.
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.
- Storage Bucket-URI: URL des Google Cloud Storage-Buckets im Format
Klicken Sie auf Weiter.
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.