Workday-Audit-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Workday-Audit-Logs mit Google Cloud Storage in Google Security Operations aufnehmen. Der Parser identifiziert zuerst den spezifischen Ereignistyp aus den Protokollen anhand einer Musteranalyse der CSV-Daten. Anschließend werden relevante Felder gemäß dem identifizierten Typ extrahiert und strukturiert und einem Unified Data Model (UDM) für eine konsistente Sicherheitsanalyse zugeordnet.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- Ein GCP-Projekt mit aktivierter Cloud Storage API
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
- Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
- Berechtigungen zum Erstellen von Cloud Run-Funktionen, Pub/Sub-Themen und Cloud Scheduler-Jobs
- Privilegierter Zugriff auf Workday
Google Cloud Storage-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. workday-audit-logs.Standorttyp Wählen Sie die Option, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Speicherort aus, z. B. us-central1.Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird) Zugriffskontrolle Einheitlich (empfohlen) Schutztools Optional: Objektversionierung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Workday-Integrationssystemnutzer erstellen
- Suchen Sie in Workday nach Create Integration System User> OK.
- Geben Sie den Nutzername ein (z. B.
audit_gcs_user). - Klicken Sie auf OK.
- Setzen Sie das Passwort zurück, indem Sie zu Zugehörige Aktionen > Sicherheit > Passwort zurücksetzen gehen.
- Wählen Sie Passwortregeln beibehalten aus, damit das Passwort nicht abläuft.
- Suchen Sie nach Create Security Group> Integration System Security Group (Unconstrained).
- Geben Sie einen Namen an (z. B.
ISU_Audit_GCS) und fügen Sie den ISU zu Integration System Users (Nutzer des Integrationssystems) hinzu. - Suchen Sie nach Domain Security Policies for Functional Area > System (Domain-Sicherheitsrichtlinien für den Funktionsbereich > System).
- Wählen Sie unter Audit-Trail die Option Aktionen > Berechtigungen bearbeiten aus.
- Fügen Sie unter Get Only die Gruppe
ISU_Audit_GCShinzu. - Klicken Sie auf OK > Ausstehende Änderungen an der Sicherheitsrichtlinie aktivieren.
Benutzerdefinierten Workday-Bericht konfigurieren
- Suchen Sie in Workday nach Benutzerdefinierten Bericht erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name: Geben Sie einen eindeutigen Namen ein, z. B.
Audit_Trail_BP_CSV. - Typ: Wählen Sie Erweitert aus.
- Datenquelle: Wählen Sie Audit-Trail – Geschäftsprozessdefinition aus.
- Name: Geben Sie einen eindeutigen Namen ein, z. B.
- Klicken Sie auf OK.
- Optional: Fügen Sie Filter für Business Process Type (Geschäftsprozessart) oder Effective Date (Gültigkeitsdatum) hinzu.
- Gehen Sie zum Tab Ausgabe.
- Wählen Sie Als Webdienst aktivieren, Für Leistung optimiert und CSV-Format aus.
- Klicken Sie auf OK > Fertig.
- Öffnen Sie den Bericht und klicken Sie auf Freigeben > ISU_Audit_GCS mit der Berechtigung „Ansehen“ hinzufügen > OK.
- Gehen Sie zu Zugehörige Aktionen > Webdienst > URLs ansehen.
Kopieren Sie die CSV-URL.
Dienstkonto für Cloud Run-Funktion erstellen
Für die Cloud Run-Funktion ist ein Dienstkonto mit Berechtigungen zum Schreiben in den GCS-Bucket und zum Aufrufen durch Pub/Sub erforderlich.
Dienstkonto erstellen
- Wechseln Sie in der GCP Console zu IAM und Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Dienstkontoname: Geben Sie
workday-audit-collector-saein. - Beschreibung des Dienstkontos: Geben Sie
Service account for Cloud Run function to collect Workday audit logsein.
- Dienstkontoname: Geben Sie
- Klicken Sie auf Erstellen und fortfahren.
- Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
- Klicken Sie auf Rolle auswählen.
- Suchen Sie nach Storage Object Admin und wählen Sie die Rolle aus.
- Klicken Sie auf + Weitere Rolle hinzufügen.
- Suchen Sie nach Cloud Run Invoker und wählen Sie die Rolle aus.
- Klicken Sie auf + Weitere Rolle hinzufügen.
- Suchen Sie nach Cloud Functions Invoker und wählen Sie die Rolle aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
Diese Rollen sind für Folgendes erforderlich:
- Storage-Objekt-Administrator: Logs in den GCS-Bucket schreiben
- Cloud Run-Aufrufer: Pub/Sub erlauben, die Funktion aufzurufen
- Cloud Functions-Invoker: Funktionsaufruf zulassen
IAM-Berechtigungen für GCS-Bucket erteilen
Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
workday-audit-collector-sa@PROJECT_ID.iam.gserviceaccount.com). - Rollen zuweisen: Wählen Sie Storage Object Admin aus.
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
- Klicken Sie auf Speichern.
Pub/Sub-Thema erstellen
Erstellen Sie ein Pub/Sub-Thema, in dem Cloud Scheduler veröffentlicht und das von der Cloud Run-Funktion abonniert wird.
- Rufen Sie in der GCP Console Pub/Sub > Themen auf.
- Klicken Sie auf Thema erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Themen-ID: Geben Sie
workday-audit-triggerein. - Übernehmen Sie die anderen Einstellungen.
- Themen-ID: Geben Sie
- Klicken Sie auf Erstellen.
Cloud Run-Funktion zum Erfassen von Logs erstellen
Die Cloud Run-Funktion wird durch Pub/Sub-Nachrichten von Cloud Scheduler ausgelöst, um Logs von der Workday API abzurufen und in GCS zu schreiben.
- Rufen Sie in der GCP Console Cloud Run auf.
- Klicken Sie auf Dienst erstellen.
- Wählen Sie Funktion aus, um eine Funktion mit einem Inline-Editor zu erstellen.
Geben Sie im Abschnitt Konfigurieren die folgenden Konfigurationsdetails an:
Einstellung Wert Dienstname workday-audit-collectorRegion Wählen Sie die Region aus, die Ihrem GCS-Bucket entspricht (z. B. us-central1).Laufzeit Wählen Sie Python 3.12 oder höher aus. Im Abschnitt Trigger (optional):
- Klicken Sie auf + Trigger hinzufügen.
- Wählen Sie Cloud Pub/Sub aus.
- Wählen Sie unter Cloud Pub/Sub-Thema auswählen das Thema
workday-audit-triggeraus. - Klicken Sie auf Speichern.
Im Abschnitt Authentifizierung:
- Wählen Sie Authentifizierung erforderlich aus.
- Weitere Informationen finden Sie unter Identity and Access Management (IAM).
Scrollen Sie nach unten und maximieren Sie Container, Netzwerk, Sicherheit.
Rufen Sie den Tab Sicherheit auf:
- Dienstkonto: Wählen Sie das Dienstkonto
workday-audit-collector-saaus.
- Dienstkonto: Wählen Sie das Dienstkonto
Rufen Sie den Tab Container auf:
- Klicken Sie auf Variablen und Secrets.
- Klicken Sie für jede Umgebungsvariable auf + Variable hinzufügen:
Variablenname Beispielwert GCS_BUCKETworkday-audit-logsWD_USERaudit_gcs_userWD_PASSyour-workday-passwordWD_URLhttps://wd-servicesN.workday.com/ccx/service/customreport2/<tenant>/<user>/Audit_Trail_BP_CSV?format=csvScrollen Sie auf dem Tab Variablen und Secrets nach unten zu Anfragen:
- Zeitüberschreitung bei Anfrage: Geben Sie
600Sekunden (10 Minuten) ein.
- Zeitüberschreitung bei Anfrage: Geben Sie
Rufen Sie den Tab Einstellungen unter Container auf:
- Im Abschnitt Ressourcen:
- Arbeitsspeicher: Wählen Sie 512 MiB oder höher aus.
- CPU: Wählen Sie 1 aus.
- Klicken Sie auf Fertig.
- Im Abschnitt Ressourcen:
Scrollen Sie zu Ausführungsumgebung:
- Wählen Sie Standard (empfohlen) aus.
Im Abschnitt Versionsskalierung:
- Mindestanzahl von Instanzen: Geben Sie
0ein. - Maximale Anzahl von Instanzen: Geben Sie
100ein oder passen Sie den Wert an die erwartete Last an.
- Mindestanzahl von Instanzen: Geben Sie
Klicken Sie auf Erstellen.
Warten Sie, bis der Dienst erstellt wurde (1–2 Minuten).
Nachdem der Dienst erstellt wurde, wird der Inline-Code-Editor automatisch geöffnet.
Funktionscode hinzufügen
- Geben Sie main unter Funktionseinstiegspunkt ein.
Erstellen Sie im Inline-Code-Editor zwei Dateien:
- Erste Datei: main.py::
import functions_framework from google.cloud import storage import os import urllib3 from datetime import datetime, timezone import base64 import gzip import io import uuid # Initialize HTTP client http = urllib3.PoolManager( timeout=urllib3.Timeout(connect=5.0, read=30.0), retries=False, ) # Initialize Storage client storage_client = storage.Client() @functions_framework.cloud_event def main(cloud_event): """ Cloud Run function triggered by Pub/Sub to fetch logs from Workday API and write to GCS. Args: cloud_event: CloudEvent object containing Pub/Sub message """ # Get environment variables bucket_name = os.environ.get('GCS_BUCKET') wd_user = os.environ.get('WD_USER') wd_pass = os.environ.get('WD_PASS') wd_url = os.environ.get('WD_URL') if not all([bucket_name, wd_user, wd_pass, wd_url]): print('Error: Missing required environment variables') return try: # Get GCS bucket bucket = storage_client.bucket(bucket_name) print(f'Fetching Workday audit report from {wd_url}') # Fetch report from Workday data = fetch_report(wd_url, wd_user, wd_pass) # Upload to GCS timestamp = datetime.now(timezone.utc) upload(bucket, data, timestamp) print(f'Successfully uploaded Workday audit report ({len(data)} bytes raw)') except Exception as e: print(f'Error processing logs: {str(e)}') raise def fetch_report(url, username, password): """Fetch report from Workday using Basic Auth.""" credentials = f"{username}:{password}" credentials_bytes = credentials.encode('utf-8') auth_header = b"Basic " + base64.b64encode(credentials_bytes) req_headers = { "Authorization": auth_header.decode('utf-8') } response = http.request('GET', url, headers=req_headers) if response.status != 200: raise Exception(f"Failed to fetch report: HTTP {response.status}") return response.data def upload(bucket, payload, ts): """Upload gzipped CSV to GCS.""" key = f"{ts:%Y/%m/%d}/workday-audit-{uuid.uuid4()}.csv.gz" buf = io.BytesIO() with gzip.GzipFile(fileobj=buf, mode='w') as gz: gz.write(payload) buf.seek(0) blob = bucket.blob(key) blob.upload_from_file(buf, content_type='application/gzip') print(f'Uploaded to gs://{bucket.name}/{key}')- Zweite Datei: requirements.txt:
functions-framework==3.* google-cloud-storage==2.* urllib3>=2.0.0Klicken Sie auf Bereitstellen, um die Funktion zu speichern und bereitzustellen.
Warten Sie, bis die Bereitstellung abgeschlossen ist (2–3 Minuten).
Cloud Scheduler-Job erstellen
Cloud Scheduler veröffentlicht in regelmäßigen Abständen Nachrichten im Pub/Sub-Thema und löst so die Cloud Run-Funktion aus.
- Rufen Sie in der GCP Console Cloud Scheduler auf.
- Klicken Sie auf Job erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Name workday-audit-collector-dailyRegion Dieselbe Region wie die Cloud Run-Funktion auswählen Frequenz 20 2 * * *(wird täglich um 02:20 Uhr UTC ausgeführt)Zeitzone Zeitzone auswählen (UTC empfohlen) Zieltyp Pub/Sub Thema Wählen Sie das Thema workday-audit-triggeraus.Inhalt der Nachricht {}(leeres JSON-Objekt)Klicken Sie auf Erstellen.
Optionen für die Häufigkeit des Zeitplans
Wählen Sie die Häufigkeit basierend auf dem Logvolumen und den Latenzanforderungen aus:
Häufigkeit Cron-Ausdruck Anwendungsfall Alle 5 Minuten */5 * * * *Hohes Volumen, niedrige Latenz Alle 15 Minuten */15 * * * *Mittleres Suchvolumen Stündlich 0 * * * *Standard Alle 6 Stunden 0 */6 * * *Geringes Volumen, Batchverarbeitung Täglich 20 2 * * *Erhebung von Verlaufsdaten (empfohlen)
Scheduler-Job testen
- Suchen Sie in der Cloud Scheduler-Konsole nach Ihrem Job.
- Klicken Sie auf Force run (Ausführung erzwingen), um den Trigger manuell auszulösen.
- Warten Sie einige Sekunden und rufen Sie Cloud Run > Dienste > workday-audit-collector > Logs auf.
- Prüfen Sie, ob die Funktion erfolgreich ausgeführt wurde.
- Prüfen Sie den GCS-Bucket, um zu bestätigen, dass Logs geschrieben wurden.
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.
E‑Mail-Adresse des Dienstkontos abrufen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Nachrichten-Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Workday Audit Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Workday Audit als Log type (Protokolltyp) aus.
Klicken Sie auf Dienstkonto abrufen. Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse, um sie im nächsten Schritt zu verwenden.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage Object Viewer für Ihren GCS-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets.
- Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage Object Viewer aus.
Klicken Sie auf Speichern.
Feed in Google SecOps konfigurieren, um Workday-Audit-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Workday Audit Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Workday Audit als Log type (Protokolltyp) aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://workday-audit-logs/- Ersetzen Sie
workday-audit-logsdurch den Namen Ihres tatsächlichen GCS-Buckets.
- Ersetzen Sie
Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:
- Nie: Löscht nach Übertragungen nie Dateien (empfohlen für Tests).
- Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
- Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Nachrichten-Feed-Konfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| Konto | metadata.event_type | Wenn das Feld „Account“ nicht leer ist, wird das Feld „metadata.event_type“ auf „USER_RESOURCE_UPDATE_CONTENT“ gesetzt. |
| Konto | principal.user.primaryId | Die Nutzer-ID wird mit einem Grok-Muster aus dem Feld „Konto“ extrahiert und principal.user.primaryId zugeordnet. |
| Konto | principal.user.primaryName | Der Anzeigename des Nutzers wird mit einem grok-Muster aus dem Feld „Account“ extrahiert und „principal.user.primaryName“ zugeordnet. |
| ActivityCategory | metadata.event_type | Wenn das Feld „ActivityCategory“ den Wert „READ“ hat, wird das Feld „metadata.event_type“ auf „RESOURCE_READ“ gesetzt. Wenn „WRITE“, wird „RESOURCE_WRITTEN“ festgelegt. |
| ActivityCategory | metadata.product_event_type | Direkt aus dem Feld „ActivityCategory“ zugeordnet. |
| AffectedGroups | target.user.group_identifiers | Direkt aus dem Feld „AffectedGroups“ zugeordnet. |
| Gebiet | target.resource.attribute.labels.area.value | Direkt aus dem Feld „Area“ (Bereich) zugeordnet. |
| AuthType | extensions.auth.auth_details | Wird direkt aus dem Feld „AuthType“ zugeordnet. |
| AuthType | extensions.auth.type | Wird anhand bestimmter Werte aus dem Feld „AuthType“ verschiedenen im UDM definierten Authentifizierungstypen zugeordnet. |
| CFIPdeConexion | src.domain.name | Wenn das Feld „CFIPdeConexion“ keine gültige IP-Adresse ist, wird es „src.domain.name“ zugeordnet. |
| CFIPdeConexion | target.ip | Wenn das Feld „CFIPdeConexion“ eine gültige IP-Adresse ist, wird es „target.ip“ zugeordnet. |
| ChangedRelationship | metadata.description | Direkt aus dem Feld „ChangedRelationship“ zugeordnet. |
| ClassOfInstance | target.resource.attribute.labels.class_instance.value | Direkt aus dem Feld „ClassOfInstance“ zugeordnet. |
| column18 | about.labels.utub.value | Direkt aus dem Feld „column18“ zugeordnet. |
| CreatedBy | principal.user.userid | Die Nutzer-ID wird mit einem Grok-Muster aus dem Feld „CreatedBy“ extrahiert und „principal.user.userid“ zugeordnet. |
| CreatedBy | principal.user.user_display_name | Der Anzeigename des Nutzers wird mithilfe eines Grok-Musters aus dem Feld „CreatedBy“ extrahiert und „principal.user.user_display_name“ zugeordnet. |
| Domain | about.domain.name | Direkt aus dem Feld „Domain“ zugeordnet. |
| EffectiveDate | @timestamp | Wird in „@timestamp“ geparst, nachdem es in das Format „JJJJ-MM-TT HH:mm:ss.SSSZ“ konvertiert wurde. |
| EntryMoment | @timestamp | Wird nach der Konvertierung in das ISO8601-Format in „@timestamp“ geparst. |
| EventType | security_result.description | Direkt aus dem Feld „EventType“ zugeordnet. |
| Formular | target.resource.name | Direkt aus dem Feld „Form“ zugeordnet. |
| InstancesAdded | about.resource.attribute.labels.instances_added.value | Wird direkt aus dem Feld „InstancesAdded“ zugeordnet. |
| InstancesAdded | target.user.attribute.roles.instances_added.name | Direkt aus dem Feld „InstancesAdded“ zugeordnet. |
| InstancesRemoved | about.resource.attribute.labels.instances_removed.value | Wird direkt aus dem Feld „InstancesRemoved“ zugeordnet. |
| InstancesRemoved | target.user.attribute.roles.instances_removed.name | Direkt aus dem Feld „InstancesRemoved“ zugeordnet. |
| IntegrationEvent | target.resource.attribute.labels.integration_event.value | Direkt aus dem Feld „IntegrationEvent“ zugeordnet. |
| IntegrationStatus | security_result.action_details | Direkt aus dem Feld „IntegrationStatus“ zugeordnet. |
| IntegrationSystem | target.resource.name | Direkt aus dem Feld „IntegrationSystem“ zugeordnet. |
| IP-Adresse | src.domain.name | Wenn das Feld „IP“ keine gültige IP-Adresse ist, wird es „src.domain.name“ zugeordnet. |
| IP-Adresse | src.ip | Wenn das Feld „IP“ eine gültige IP-Adresse ist, wird es „src.ip“ zugeordnet. |
| IsDeviceManaged | additional.fields.additional1.value.string_value | Wenn das Feld „IsDeviceManaged“ den Wert „N“ hat, wird der Wert auf „Successful“ gesetzt. Andernfalls wird „Fehler bei der Anmeldung“ festgelegt. |
| IsDeviceManaged | additional.fields.additional2.value.string_value | Wenn das Feld „IsDeviceManaged“ den Wert „N“ hat, wird der Wert auf „Successful“ gesetzt. Andernfalls wird „Ungültige Anmeldedaten“ festgelegt. |
| IsDeviceManaged | additional.fields.additional3.value.string_value | Wenn das Feld „IsDeviceManaged“ den Wert „N“ hat, wird der Wert auf „Successful“ gesetzt. Andernfalls wird er auf „Konto gesperrt“ gesetzt. |
| IsDeviceManaged | security_result.action_details | Direkt aus dem Feld „IsDeviceManaged“ zugeordnet. |
| OutputFiles | about.file.full_path | Direkt aus dem Feld „OutputFiles“ zugeordnet. |
| Person | principal.user.primaryId | Wenn das Feld „Person“ mit „INT“ beginnt, wird die Nutzer-ID mit einem Grok-Muster extrahiert und „principal.user.primaryId“ zugeordnet. |
| Person | principal.user.primaryName | Wenn das Feld „Person“ mit „INT“ beginnt, wird der Anzeigename des Nutzers mit einem grok-Muster extrahiert und „principal.user.primaryName“ zugeordnet. |
| Person | principal.user.user_display_name | Wenn das Feld „Person“ nicht mit „INT“ beginnt, wird es direkt „principal.user.user_display_name“ zugeordnet. |
| Person | metadata.event_type | Wenn das Feld „Person“ nicht leer ist, wird das Feld „metadata.event_type“ auf „USER_RESOURCE_UPDATE_CONTENT“ festgelegt. |
| ProcessedTransaction | target.resource.attribute.creation_time | Wird in „target.resource.attribute.creation_time“ geparst,nachdem es in das Format „TT/MM/JJJJ HH:mm:ss,SSS (ZZZ)“, „TT/MM/JJJJ,HH:mm:ss,SSS (ZZZ)“ oder „MM/TT/JJJJ, HH:mm:ss.SSS A ZZZ“ konvertiert wurde. |
| ProgramBy | principal.user.userid | Wird direkt aus dem Feld „ProgramBy“ zugeordnet. |
| RecurrenceEndDate | principal.resource.attribute.last_update_time | Wird nach der Konvertierung in das Format „yyyy-MM-dd“ in „principal.resource.attribute.last_update_time“ geparst. |
| RecurrenceStartDate | principal.resource.attribute.creation_time | Wird nach der Konvertierung in das Format „yyyy-MM-dd“ in „principal.resource.attribute.creation_time“ geparst. |
| RequestName | metadata.description | Direkt aus dem Feld „RequestName“ zugeordnet. |
| ResponseMessage | security_result.summary | Wird direkt aus dem Feld „ResponseMessage“ zugeordnet. |
| RestrictedToEnvironment | security_result.about.hostname | Direkt aus dem Feld „RestrictedToEnvironment“ zugeordnet. |
| RevokedSecurity | security_result.outcomes.outcomes.value | Wird direkt aus dem Feld „RevokedSecurity“ zugeordnet. |
| RunFrequency | principal.resource.attribute.labels.run_frequency.value | Wird direkt aus dem Feld „RunFrequency“ zugeordnet. |
| ScheduledProcess | principal.resource.name | Wird direkt aus dem Feld „ScheduledProcess“ zugeordnet. |
| SecuredTaskExecuted | target.resource.name | Wird direkt aus dem Feld „SecuredTaskExecuted“ zugeordnet. |
| SecureTaskExecuted | metadata.event_type | Wenn das Feld „SecureTaskExecuted“ den Wert „Create“ enthält, wird das Feld „metadata.event_type“ auf „USER_RESOURCE_CREATION“ gesetzt. |
| SecureTaskExecuted | target.resource.name | Direkt aus dem Feld „SecureTaskExecuted“ zugeordnet. |
| SentTime | @timestamp | Wird nach der Konvertierung in das ISO8601-Format in „@timestamp“ geparst. |
| SessionId (Sitzungs-ID) | network.session_id | Wird direkt aus dem Feld „SessionId“ zugeordnet. |
| ShareBy | target.user.userid | Wird direkt aus dem Feld „ShareBy“ zugeordnet. |
| SignOffTime | additional.fields.additional4.value.string_value | Der Feldwert „AuthFailMessage“ wird mit dem Schlüssel „Enterprise Interface Builder“ in das Array „additional.fields“ eingefügt. |
| SignOffTime | metadata.description | Direkt aus dem Feld „AuthFailMessage“ zugeordnet. |
| SignOffTime | metadata.event_type | Wenn das Feld „SignOffTime“ leer ist, wird das Feld „metadata.event_type“ auf „USER_LOGIN“ gesetzt. Andernfalls wird er auf „USER_LOGOUT“ gesetzt. |
| SignOffTime | principal.user.attribute.last_update_time | Wird nach der Konvertierung ins ISO8601-Format in „principal.user.attribute.last_update_time“ geparst. |
| SignOnIp | src.domain.name | Wenn das Feld „SignOnIp“ keine gültige IP-Adresse ist, wird es „src.domain.name“ zugeordnet. |
| SignOnIp | src.ip | Wenn das Feld „SignOnIp“ eine gültige IP-Adresse ist, wird es „src.ip“ zugeordnet. |
| Status | metadata.product_event_type | Direkt aus dem Feld „Status“ zugeordnet. |
| SystemAccount | principal.user.email_addresses | Die E‑Mail-Adresse wird mit einem Grok-Muster aus dem Feld „SystemAccount“ extrahiert und „principal.user.email_addresses“ zugeordnet. |
| SystemAccount | principal.user.primaryId | Die Nutzer-ID wird mit einem Grok-Muster aus dem Feld „SystemAccount“ extrahiert und „principal.user.primaryId“ zugeordnet. |
| SystemAccount | principal.user.primaryName | Der Anzeigename des Nutzers wird mithilfe eines Grok-Musters aus dem Feld „SystemAccount“ extrahiert und „principal.user.primaryName“ zugeordnet. |
| SystemAccount | src.user.userid | Die sekundäre Nutzer-ID wird mit einem Grok-Muster aus dem Feld „SystemAccount“ extrahiert und „src.user.userid“ zugeordnet. |
| SystemAccount | src.user.user_display_name | Der Anzeigename des sekundären Nutzers wird mit einem grok-Muster aus dem Feld „SystemAccount“ extrahiert und „src.user.user_display_name“ zugeordnet. |
| SystemAccount | target.user.userid | Die Ziel-Nutzer-ID wird mit einem Grok-Muster aus dem Feld „SystemAccount“ extrahiert und „target.user.userid“ zugeordnet. |
| Ziel | target.user.user_display_name | Direkt aus dem Feld „Ziel“ übernommen. |
| Vorlage | about.resource.name | Wird direkt aus dem Feld „Vorlage“ zugeordnet. |
| Mandant | target.asset.hostname | Wird direkt aus dem Feld „Mandant“ zugeordnet. |
| TlsVersion | network.tls.version | Direkt aus dem Feld „TlsVersion“ zugeordnet. |
| Transaktion | security_result.action_details | Wird direkt aus dem Feld „Transaktion“ zugeordnet. |
| TransactionType | security_result.summary | Wird direkt aus dem Feld „TransactionType“ zugeordnet. |
| TypeForm | target.resource.resource_subtype | Direkt aus dem Feld „TypeForm“ zugeordnet. |
| User-Agent | network.http.parsed_user_agent | Wird aus dem Feld „UserAgent“ mit dem Filter „useragent“ geparst. |
| User-Agent | network.http.user_agent | Direkt aus dem Feld „UserAgent“ zugeordnet. |
| WorkdayAccount | target.user.user_display_name | Der Anzeigename des Nutzers wird mithilfe eines Grok-Musters aus dem Feld „WorkdayAccount“ extrahiert und „target.user.user_display_name“ zugeordnet. |
| WorkdayAccount | target.user.userid | Die Nutzer-ID wird mit einem Grok-Muster aus dem Feld „WorkdayAccount“ extrahiert und „target.user.userid“ zugeordnet. |
| additional.fields.additional1.key | Auf „FailedSignOn“ festgelegt. | |
| additional.fields.additional2.key | Legen Sie diesen Wert auf „InvalidCredentials“ fest. | |
| additional.fields.additional3.key | Legen Sie diesen Wert auf „AccountLocked“ fest. | |
| additional.fields.additional4.key | Legen Sie diesen Wert auf „Enterprise Interface Builder“ fest. | |
| metadata.event_type | Wird anfangs auf „GENERIC_EVENT“ festgelegt und dann basierend auf der Logik, die andere Felder umfasst, aktualisiert. | |
| metadata.event_type | Für bestimmte Ereignistypen auf „USER_CHANGE_PERMISSIONS“ festgelegt. | |
| metadata.event_type | Für bestimmte Ereignistypen auf „RESOURCE_WRITTEN“ festgelegt. | |
| metadata.log_type | Hartcodiert auf „WORKDAY_AUDIT“. | |
| metadata.product_name | Fest codiert auf „Enterprise Interface Builder“. | |
| metadata.vendor_name | Hartcodiert auf „Workday“. | |
| principal.asset.category | Auf „Phone“ festgelegt, wenn das Feld „DeviceType“ „Phone“ ist. | |
| principal.resource.resource_type | Wenn das Feld „ScheduledProcess“ nicht leer ist, wird der Wert „TASK“ fest codiert. | |
| security_result.action | Legen Sie den Wert basierend auf den Werten der Felder „FailedSignOn“, „IsDeviceManaged“, „InvalidCredentials“ und „AccountLocked“ auf „ALLOW“ oder „FAIL“ fest. | |
| security_result.summary | Wird auf „Erfolgreich“ oder auf bestimmte Fehlermeldungen basierend auf den Werten der Felder „FailedSignOn“, „IsDeviceManaged“, „InvalidCredentials“ und „AccountLocked“ festgelegt. | |
| target.resource.resource_type | Für bestimmte Ereignistypen fest auf „TASK“ festgelegt. | |
| target.resource.resource_type | Wenn das Feld „TypeForm“ nicht leer ist, wird es auf „DATASET“ hartcodiert. | |
| Nachricht | principal.user.email_addresses | Extrahiert die E-Mail-Adresse aus dem Feld „message“ mithilfe eines Grok-Musters und führt sie in „principal.user.email_addresses“ zusammen, wenn ein bestimmtes Muster gefunden wird. |
| Nachricht | src.user.userid | Löscht das Feld, wenn das Feld „event.idm.read_only_udm.principal.user.userid“ mit dem extrahierten „user_target“ aus dem Feld „message“ übereinstimmt. |
| Nachricht | src.user.user_display_name | Löscht das Feld, wenn das Feld „event.idm.read_only_udm.principal.user.userid“ mit dem extrahierten „user_target“ aus dem Feld „message“ übereinstimmt. |
| Nachricht | target.user.userid | Extrahiert die Nutzer-ID aus dem Feld „message“ (Nachricht) mithilfe eines Grok-Musters und ordnet sie „target.user.userid“ zu, wenn ein bestimmtes Muster gefunden wird. |
column11 |
SecurityGroupModified |
Aus dem Änderungsprotokoll zugeordnet |
SecurityGroupModified |
security_result.about.group.group_display_name |
Aus dem Änderungsprotokoll zugeordnet |
ChangedRelationship |
target.user.attribute.roles.name |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten