Salesforce Commerce Cloud-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Salesforce Commerce Cloud-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.
Salesforce Commerce Cloud ist eine E-Commerce-Plattform, die Transaktions-, Zugriffs- und Sicherheits-Audit-Logs generiert. Eine Cloud Run-Funktion stellt planmäßig eine Verbindung zum Salesforce Commerce Cloud WebDAV-Endpunkt her, lädt Logdateien herunter, schreibt sie im NDJSON-Format in einen GCS-Bucket und Google SecOps nimmt sie über einen GCS V2-Feed auf.
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-Diensten, Pub/Sub-Themen und Cloud Scheduler-Jobs
- Berechtigter Zugriff auf Salesforce Commerce Cloud Business Manager mit WebDAV-Zugriffsberechtigung
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. sfcc-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: Objektversionsverwaltung oder Aufbewahrungsrichtlinie aktivieren Klicken Sie auf Erstellen.
Salesforce Commerce Cloud-Anmeldedaten erfassen
WebDAV-Zugriff konfigurieren
- Melden Sie sich in Business Manager für Ihre Salesforce Commerce Cloud-Instanz an.
- Klicken Sie auf Verwaltung > Organisation > Rollen und Berechtigungen.
- Prüfen Sie, ob für Ihr Nutzerkonto die Berechtigung WebDAV File Access aktiviert ist.
- Notieren Sie sich den Hostnamen Ihrer SFCC-Instanz (z. B.
development-yoursite-dw.demandware.net). Speichern Sie die folgenden Anmeldedaten an einem sicheren Ort:
- SFCC-Host: Der Hostname Ihrer Instanz (z. B.
development-yoursite-dw.demandware.net). - Nutzername: Ihr Nutzername im Unternehmensmanager.
- Passwort: Ihr Business Manager-Passwort.
- SFCC-Host: Der Hostname Ihrer Instanz (z. B.
Berechtigungen prüfen
So prüfen Sie, ob das Konto die erforderlichen Berechtigungen hat:
- Melden Sie sich im Unternehmensmanager für Ihre Salesforce Commerce Cloud-Instanz an.
- Gehen Sie zu Administration > Site Development > Development Setup.
- Klicken Sie im Bereich „WebDAV“ auf Logdateien.
- Wenn Sie Logdateiverzeichnisse sehen, haben Sie die erforderlichen Berechtigungen.
- Wenn Sie diese Option nicht sehen, wenden Sie sich an Ihren SFCC-Administrator, um WebDAV-Zugriff zu erhalten.
API-Zugriff testen
Testen Sie Ihre Anmeldedaten, bevor Sie mit der Integration fortfahren:
# Replace with your actual credentials SFCC_HOST="development-yoursite-dw.demandware.net" USERNAME="your-username" PASSWORD="your-password" # Test WebDAV access to log directory curl -v -u "${USERNAME}:${PASSWORD}" \ "https://${SFCC_HOST}/on/demandware.servlet/webdav/Sites/Logs/"
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
sfcc-logs-collector-saein. - Beschreibung des Dienstkontos: Geben Sie
Service account for Cloud Run function to collect Salesforce Commerce Cloud 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-Aufrufer und wählen Sie diese Option aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
Diese Rollen sind erforderlich für:
- Storage-Objekt-Administrator: Protokolle in GCS-Bucket schreiben und Statusdateien verwalten
- Cloud Run Invoker: Pub/Sub darf die Funktion aufrufen.
- Cloud Functions-Invoker: Funktionsaufruf zulassen
IAM-Berechtigungen für GCS-Bucket gewähren
Gewähren Sie dem Dienstkonto Schreibberechtigungen für den GCS-Bucket:
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
sfcc-logs). - 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.
sfcc-logs-collector-sa@your-project.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 Nachrichten veröffentlicht und das die Cloud Run-Funktion abonniert.
- 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
sfcc-logs-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 aus Salesforce Commerce Cloud WebDAV 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 sfcc-logs-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
sfcc-logs-triggeraus. - Klicken Sie auf Speichern.
Im Abschnitt Authentifizierung:
- Wählen Sie Authentifizierung erforderlich aus.
- Prüfen Sie 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
sfcc-logs-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 Beschreibung GCS_BUCKETsfcc-logsName des GCS-Buckets GCS_PREFIXsfccPräfix für Logdateien STATE_KEYsfcc/state.jsonPfad der Statusdatei SFCC_HOSTdevelopment-yoursite-dw.demandware.netSFCC-Instanzhostname SFCC_USERNAMEyour-usernameNutzername des Unternehmensmanagers SFCC_PASSWORDyour-passwordPasswort für den Unternehmensmanager LOG_DIRSsecurity,error,warn,customerrorKommagetrennte Logverzeichnisse LOOKBACK_HOURS24Anfänglicher Rückschauzeitraum Scrollen 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 nach unten 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 ein bis zwei Minuten, bis der Dienst erstellt wurde.
Nachdem der Dienst erstellt wurde, wird automatisch der Inline-Code-Editor geöffnet.
Funktionscode hinzufügen
- Geben Sie unter Funktionseinstiegspunkt den Wert main ein.
Erstellen Sie im Inline-Code-Editor zwei Dateien:
Erste Datei – main.py:
import functions_framework from google.cloud import storage import json import os import urllib3 from datetime import datetime, timezone, timedelta import time import base64 import re # Initialize HTTP client with timeouts http = urllib3.PoolManager( timeout=urllib3.Timeout(connect=10.0, read=60.0), retries=False, ) # Initialize Storage client storage_client = storage.Client() # Environment variables GCS_BUCKET = os.environ.get('GCS_BUCKET') GCS_PREFIX = os.environ.get('GCS_PREFIX', 'sfcc') STATE_KEY = os.environ.get('STATE_KEY', 'sfcc/state.json') SFCC_HOST = os.environ.get('SFCC_HOST') SFCC_USERNAME = os.environ.get('SFCC_USERNAME') SFCC_PASSWORD = os.environ.get('SFCC_PASSWORD') LOG_DIRS = [d.strip() for d in os.environ.get('LOG_DIRS', 'security,error,warn,customerror').split(',') if d.strip()] LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '24')) def parse_datetime(value: str) -> datetime: """Parse ISO datetime string to datetime object.""" if value.endswith("Z"): value = value[:-1] + "+00:00" return datetime.fromisoformat(value) @functions_framework.cloud_event def main(cloud_event): """ Cloud Run function triggered by Pub/Sub to fetch Salesforce Commerce Cloud logs via WebDAV and write to GCS. Args: cloud_event: CloudEvent object containing Pub/Sub message """ if not all([GCS_BUCKET, SFCC_HOST, SFCC_USERNAME, SFCC_PASSWORD]): print('Error: Missing required environment variables') return try: bucket = storage_client.bucket(GCS_BUCKET) # Load state state = load_state(bucket, STATE_KEY) now = datetime.now(timezone.utc) last_time = None if isinstance(state, dict) and state.get("last_event_time"): try: last_time = parse_datetime(state["last_event_time"]) except Exception as e: print(f"Warning: Could not parse last_event_time: {e}") if last_time is None: last_time = now - timedelta(hours=LOOKBACK_HOURS) print(f"Fetching logs since {last_time.isoformat()}") # Build auth header credentials = f"{SFCC_USERNAME}:{SFCC_PASSWORD}" encoded_credentials = base64.b64encode(credentials.encode('utf-8')).decode('utf-8') headers = { 'Authorization': f'Basic {encoded_credentials}', 'User-Agent': 'GoogleSecOps-SFCCCollector/1.0' } total_files = 0 webdav_base = f"https://{SFCC_HOST}/on/demandware.servlet/webdav/Sites/Logs" for log_dir in LOG_DIRS: print(f"Processing log directory: {log_dir}") files_processed = fetch_and_upload_logs( bucket=bucket, webdav_base=webdav_base, log_dir=log_dir, headers=headers, since=last_time, now=now, ) total_files += files_processed if total_files == 0: print("No new log files found.") else: print(f"Successfully processed {total_files} log files") save_state(bucket, STATE_KEY, now.isoformat()) except Exception as e: print(f'Error processing logs: {str(e)}') raise def load_state(bucket, key): """Load state from GCS.""" try: blob = bucket.blob(key) if blob.exists(): state_data = blob.download_as_text() return json.loads(state_data) except Exception as e: print(f"Warning: Could not load state: {e}") return {} def save_state(bucket, key, last_event_time_iso: str): """Save the last event timestamp to GCS state file.""" try: state = {'last_event_time': last_event_time_iso} blob = bucket.blob(key) blob.upload_from_string( json.dumps(state, indent=2), content_type='application/json' ) print(f"Saved state: last_event_time={last_event_time_iso}") except Exception as e: print(f"Warning: Could not save state: {e}") def list_webdav_files(webdav_url: str, headers: dict): """List files in a WebDAV directory using PROPFIND.""" backoff = 1.0 max_retries = 3 for attempt in range(max_retries): response = http.request('PROPFIND', webdav_url, headers={**headers, 'Depth': '1'}) if response.status == 429: retry_after = int(response.headers.get('Retry-After', str(int(backoff)))) print(f"Rate limited (429). Retrying after {retry_after}s...") time.sleep(retry_after) backoff = min(backoff * 2, 30.0) continue if response.status not in (200, 207): print(f"HTTP Error listing {webdav_url}: {response.status}") return [] content = response.data.decode('utf-8') # Parse file names from WebDAV PROPFIND XML response files = re.findall(r'<D:href>([^<]+)</D:href>', content) return [f for f in files if not f.endswith('/')] return [] def fetch_and_upload_logs(bucket, webdav_base: str, log_dir: str, headers: dict, since: datetime, now: datetime): """ Fetch log files from a WebDAV directory and upload to GCS. Args: bucket: GCS bucket object webdav_base: WebDAV base URL log_dir: Log directory name headers: HTTP headers with auth since: Only process files newer than this now: Current time for file naming Returns: Number of files processed """ dir_url = f"{webdav_base}/{log_dir}/" files = list_webdav_files(dir_url, headers) files_processed = 0 backoff = 1.0 for file_path in files: file_name = file_path.split('/')[-1] if not file_name: continue # Download file file_url = f"https://{SFCC_HOST}{file_path}" response = http.request('GET', file_url, headers=headers) if response.status == 429: retry_after = int(response.headers.get('Retry-After', str(int(backoff)))) print(f"Rate limited (429). Retrying after {retry_after}s...") time.sleep(retry_after) backoff = min(backoff * 2, 30.0) response = http.request('GET', file_url, headers=headers) if response.status != 200: print(f"Error downloading {file_name}: {response.status}") continue backoff = 1.0 content = response.data if not content: continue # Upload to GCS timestamp = now.strftime('%Y%m%d_%H%M%S') object_key = f"{GCS_PREFIX}/{log_dir}/{file_name}_{timestamp}" blob = bucket.blob(object_key) # Convert log lines to NDJSON lines = content.decode('utf-8', errors='replace').splitlines() records = [] for line in lines: line = line.strip() if line: try: record = json.loads(line) except json.JSONDecodeError: record = {'raw_log': line, 'log_dir': log_dir, 'source_file': file_name} records.append(record) if records: ndjson = '\n'.join([json.dumps(r, ensure_ascii=False) for r in records]) + '\n' blob.upload_from_string(ndjson, content_type='application/x-ndjson') print(f"Uploaded {len(records)} records from {file_name} to gs://{GCS_BUCKET}/{object_key}") files_processed += 1 return files_processedZweite Datei:requirements.txt:
functions-framework==3.* google-cloud-storage==2.* urllib3>=2.0.0
Klicken 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 sfcc-logs-collector-hourlyRegion Dieselbe Region wie die Cloud Run-Funktion auswählen Frequenz 0 * * * *(stündlich zur vollen Stunde)Zeitzone Zeitzone auswählen (UTC empfohlen) Zieltyp Pub/Sub Thema Wählen Sie das Thema sfcc-logs-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 (empfohlen) |
| Alle 6 Stunden | 0 */6 * * * |
Geringes Volumen, Batchverarbeitung |
| Täglich | 0 0 * * * |
Erhebung von Verlaufsdaten |
Integration testen
- Suchen Sie in der Cloud Scheduler-Konsole nach Ihrem Job (
sfcc-logs-collector-hourly). - Klicken Sie auf Force run (Ausführung erzwingen), um den Trigger manuell auszulösen.
- Warten Sie einige Sekunden und rufen Sie Cloud Run > Dienste > sfcc-logs-collector > Logs auf.
Prüfen Sie, ob die Funktion erfolgreich ausgeführt wurde. Darauf sollten Sie achten:
Fetching logs since YYYY-MM-DDTHH:MM:SS+00:00 Processing log directory: security Uploaded X records from filename.log to gs://sfcc-logs/sfcc/security/filename.log_YYYYMMDD_HHMMSS Successfully processed X log filesPrüfen Sie im GCS-Bucket (
sfcc-logs), ob Logs geschrieben wurden.
Wenn Sie Fehler in den Logs sehen:
- HTTP 401: SFCC-Anmeldedaten in Umgebungsvariablen prüfen
- HTTP 403: Prüfen Sie, ob das Konto im Unternehmensmanager die Berechtigung „WebDAV-Dateizugriff“ hat.
- HTTP 429: Ratenbegrenzung – die Funktion wird automatisch mit Backoff wiederholt.
- Fehlende Umgebungsvariablen: Prüfen Sie, ob alle erforderlichen Variablen festgelegt sind.
Feed in Google SecOps konfigurieren, um Salesforce Commerce Cloud-Logs aufzunehmen
- 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.
Salesforce Commerce Cloud Logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Salesforce Commerce Cloud als Logtyp aus.
Klicken Sie auf Dienstkonto abrufen. Eine eindeutige E-Mail-Adresse für das Dienstkonto wird angezeigt, z. B.:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comKopieren Sie diese E-Mail-Adresse. Sie verwenden es in der nächsten Aufgabe.
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://sfcc-logs/sfcc/- Ersetzen Sie:
sfcc-logs: Der Name Ihres GCS-Buckets.sfcc/: Präfix/Ordnerpfad, in dem Logs gespeichert werden.
- Ersetzen Sie:
Option zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus:
- Nie: Nach Übertragungen werden keine Dateien gelöscht (für Tests empfohlen).
- Übertragene Dateien löschen: Dateien werden nach erfolgreicher Übertragung gelöscht.
Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach erfolgreicher Übertragung.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 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.
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 (
sfcc-logs). - 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.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
auth.mechanism |
extensions.auth.mechanism |
Zusammengeführt |
csv_format |
extensions.auth.mechanism |
Zugeordnet: false → auth.mechanism |
event_id |
extensions.auth.mechanism |
Zugeordnet: Login: Success → auth.mechanism |
mechanism |
extensions.auth.mechanism |
Zusammengeführt |
LoginType |
extensions.auth.type |
Zugeordnet: Application → AUTHTYPE_UNSPECIFIED |
csv_format |
extensions.auth.type |
Zugeordnet: false → AUTHTYPE_UNSPECIFIED |
event_id |
extensions.auth.type |
Zugeordnete Werte (insgesamt 6, z.B. „Login“, „LoginAsEvent“, „IdentityVerificationEvent“, „LoginE... |
eventType.name |
metadata.description |
Direkt zugeordnet |
metadata_description |
metadata.description |
Direkt zugeordnet |
collected_timestamp |
metadata.event_timestamp |
Als yyyyMMddHHmmss geparst |
createdAt |
metadata.event_timestamp |
Geparst als UNIX_MS |
createdDate |
metadata.event_timestamp |
Als yyyy-MM-ddTHH:mm:ss.SSS geparst |
timestamp |
metadata.event_timestamp |
Als yyyyMMddHHmmss geparst |
ts_date |
metadata.event_timestamp |
Als yyyy-MM-dd HH:mm:ss.SSSZ geparst |
csv_format |
metadata.event_type |
Zugeordnet: false → USER_LOGIN, false → USER_LOGOUT, false → `USER_RESOURCE_UPDATE_CON... |
event_id |
metadata.event_type |
Zugeordnet: Login: Success → USER_LOGIN, Logout → USER_LOGOUT |
event_type |
metadata.event_type |
Direkt zugeordnet |
label |
metadata.ingestion_labels |
Zusammengeführt |
resource_name |
metadata.ingestion_labels |
Zugeordnet: `"ReportEvent","SessionHijackingEventStore","BulkApiResultEventStore","CredentialStu... |
attrs.cat |
metadata.product_event_type |
Umbenannt/zugeordnet |
eventType.id |
metadata.product_event_type |
Direkt zugeordnet |
event_id |
metadata.product_event_type |
Direkt zugeordnet |
event_identifier |
metadata.product_log_id |
Direkt zugeordnet |
id |
metadata.product_log_id |
Direkt zugeordnet |
protocol |
network.application_protocol |
Direkt zugeordnet |
transaction_id |
network.dhcp.transaction_id |
Direkt zugeordnet |
referral_url |
network.http.referral_url |
Direkt zugeordnet |
request_status |
network.http.response_code |
Direkt zugeordnet |
attrs.Application |
principal.application |
Umbenannt/zugeordnet |
enterpriseId |
principal.group.product_object_id |
Direkt zugeordnet |
attrs.src |
principal.ip |
Zusammengeführt |
csv_format |
principal.ip |
Zugeordnet: false → attrs.src |
event_id |
principal.ip |
Zugeordnet: Login: Success → attrs.src |
Status_LK |
principal.labels |
Zusammengeführt |
Status_LK |
principal.resource.attribute.labels |
Zusammengeführt |
browser_name |
principal.resource.name |
Direkt zugeordnet |
memberId |
principal.resource.product_object_id |
Direkt zugeordnet |
principal_resource_type |
principal.resource.type |
Direkt zugeordnet |
attrs.usrName |
principal.user.email_addresses |
Zusammengeführt |
csv_format |
principal.user.email_addresses |
Zugeordnet: false → attrs.usrName |
src_email |
principal.user.email_addresses |
Zusammengeführt |
attrs.USER_ID_DERIVED |
principal.user.product_object_id |
Umbenannt/zugeordnet |
employee.employeeName |
principal.user.user_display_name |
Direkt zugeordnet |
user_display_name |
principal.user.user_display_name |
Direkt zugeordnet |
attrs.usrName |
principal.user.userid |
Direkt zugeordnet |
employee.userName |
principal.user.userid |
Direkt zugeordnet |
login_key |
principal.user.userid |
Direkt zugeordnet |
user_id |
principal.user.userid |
Direkt zugeordnet |
csv_format |
security_result |
Zugeordnet: false → sec_result |
event_id |
security_result |
Zugeordnet: Login: Success → sec_result |
sec_result |
security_result |
Zusammengeführt |
sr |
security_result |
Zusammengeführt |
action |
security_result.action |
Zusammengeführt |
eventSource.name |
src.resource.name |
Direkt zugeordnet |
eventSource.id |
src.resource.product_object_id |
Direkt zugeordnet |
organization_id |
target.administrative_domain |
Direkt zugeordnet |
target_hostname |
target.asset.hostname |
Direkt zugeordnet |
device_id |
target.asset_id |
Direkt zugeordnet |
target_hostname |
target.hostname |
Direkt zugeordnet |
call_time |
target.resource.attribute.labels |
Zusammengeführt |
cpu |
target.resource.attribute.labels |
Zusammengeführt |
db_cpu |
target.resource.attribute.labels |
Zusammengeführt |
db_type |
target.resource.attribute.labels |
Zusammengeführt |
duration_time |
target.resource.attribute.labels |
Zusammengeführt |
entry_p |
target.resource.attribute.labels |
Zusammengeführt |
exe_time |
target.resource.attribute.labels |
Zusammengeführt |
no_sql_que |
target.resource.attribute.labels |
Zusammengeführt |
ope |
target.resource.attribute.labels |
Zusammengeführt |
rows_proc |
target.resource.attribute.labels |
Zusammengeführt |
run |
target.resource.attribute.labels |
Zusammengeführt |
ses_level |
target.resource.attribute.labels |
Zusammengeführt |
ss_type |
target.resource.attribute.labels |
Zusammengeführt |
total_time |
target.resource.attribute.labels |
Zusammengeführt |
user_ty |
target.resource.attribute.labels |
Zusammengeführt |
verify_method |
target.resource.attribute.labels |
Zusammengeführt |
attrs.AccountId |
target.resource.id |
Umbenannt/zugeordnet |
attrs.CaseId |
target.resource.id |
Umbenannt/zugeordnet |
attrs.ContactId |
target.resource.id |
Umbenannt/zugeordnet |
eventSource.id |
target.resource.id |
Direkt zugeordnet |
request_id |
target.resource.id |
Direkt zugeordnet |
eventSource.name |
target.resource.name |
Direkt zugeordnet |
object.name |
target.resource.name |
Direkt zugeordnet |
resource_name |
target.resource.name |
Direkt zugeordnet |
object.id |
target.resource.product_object_id |
Direkt zugeordnet |
event_id |
target.resource.resource_type |
Zugeordnet: PlatformEncryption → ACCESS_POLICY, ApexCallout → ACCESS_POLICY, `ApexTrigge... |
target_resource_type |
target.resource.resource_type |
Direkt zugeordnet |
event_id |
target.resource.type |
Zugeordnet: (QueuedExecution/ApexExecution) → BATCH, ApexTrigger → DATABASE_TRIGGER, `Co... |
attrs.LoginUrl |
target.url |
Umbenannt/zugeordnet |
attrs.attributes.url |
target.url |
Umbenannt/zugeordnet |
uri |
target.url |
Direkt zugeordnet |
attrs.usrName |
target.user.email_addresses |
Zusammengeführt |
csv_format |
target.user.email_addresses |
Zugeordnet: false → attrs.usrName |
event_id |
target.user.email_addresses |
Zugeordnet: Logout → attrs.usrName |
target_user_display_name |
target.user.user_display_name |
Direkt zugeordnet |
target_user_name |
target.user.userid |
Direkt zugeordnet |
| – | extensions.auth.auth_details |
Konstante: ACTIVE |
| – | extensions.auth.type |
Konstante: SSO |
| – | metadata.event_type |
Konstante: GENERIC_EVENT |
| – | metadata.product_name |
Konstante: SALESFORCE |
| – | metadata.vendor_name |
Konstante: SALESFORCE |
| – | target.resource.resource_type |
Konstante: ACCESS_POLICY |
| – | target.resource.type |
Konstante: BATCH |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten