TeamViewer-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie TeamViewer-Logs mit Google Cloud Storage in Google Security Operations aufnehmen. Der Parser extrahiert die Audit-Ereignisse aus JSON-formatierten Logs. Dabei werden die Ereignisdetails durchlaufen, bestimmte Eigenschaften UDM-Feldern zugeordnet, Informationen zu Teilnehmern und Referenten verarbeitet und Ereignisse anhand der Nutzeraktivität kategorisiert. Der Parser führt auch Datentransformationen durch, z. B. das Zusammenführen von Labels und das Konvertieren von Zeitstempeln in ein standardisiertes Format.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- Ein Google Cloud -Projekt mit aktivierter Cloud Storage API
- Berechtigungen zum Erstellen und Verwalten von Cloud Storage-Buckets
- Berechtigungen zum Verwalten von IAM-Richtlinien für Cloud Storage-Buckets
- Berechtigungen zum Erstellen von Cloud Run-Diensten, Pub/Sub-Themen und Cloud Scheduler-Jobs
- Privilegierter Zugriff auf die TeamViewer Management Console
- TeamViewer Business-, Premium-, Corporate- oder Tensor-Lizenz (für API-Zugriff erforderlich)
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. teamviewer-logs.Standorttyp Wählen Sie die Option aus, 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.
TeamViewer-Voraussetzungen
- Melden Sie sich in der TeamViewer Management Console unter https://login.teamviewer.com/ an.
- Klicken Sie oben rechts auf Ihr Nutzersymbol und wählen Sie Profil bearbeiten aus.
- Wähle Apps aus.
- Klicken Sie auf Skript-Token erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Tokenname: Geben Sie einen aussagekräftigen Namen ein, z. B.
Google SecOps Integration. - Berechtigungen: Wählen Sie die folgenden Berechtigungen aus:
- Kontoverwaltung > Kontodaten ansehen
- Sitzungsverwaltung > Sitzungsdaten ansehen
- Berichte zu Verbindungen > Verbindungsberichte ansehen
- Tokenname: Geben Sie einen aussagekräftigen Namen ein, z. B.
- Klicken Sie auf Erstellen.
Kopieren Sie das generierte Skript-Token und speichern Sie es an einem sicheren Ort.
erforderlichen Bereich „Connections.Read“ entspricht.Notieren Sie sich die TeamViewer API-Basis-URL:
https://webapi.teamviewer.com/api/v1
Berechtigungen prüfen
So prüfen Sie, ob das Konto die erforderlichen Berechtigungen hat:
- Melden Sie sich in der TeamViewer Management Console an.
- Rufen Sie Profil bearbeiten > Apps auf.
- Suchen Sie in der Liste nach Ihrem Skript-Token.
- Prüfen Sie, ob Verbindungsberichte > Verbindungsberichte ansehen aktiviert ist.
- Wenn diese Berechtigung nicht aktiviert ist, bearbeiten Sie das Token und fügen Sie die erforderliche Berechtigung hinzu.
API-Zugriff testen
Testen Sie Ihre Anmeldedaten, bevor Sie mit der Integration fortfahren:
# Replace with your actual script token SCRIPT_TOKEN="your-script-token" API_BASE="https://webapi.teamviewer.com/api/v1" # Test API access curl -v -X POST -H "Authorization: Bearer ${SCRIPT_TOKEN}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"StartDate": "2024-01-01T00:00:00Z", "EndDate": "2024-01-01T01:00:00Z"}' \ "${API_BASE}/EventLogging"
Wenn Sie eine 200-Antwort mit JSON-Daten erhalten, sind Ihre Anmeldedaten richtig konfiguriert.
Dienstkonto für die Cloud Run-Funktion erstellen
Die Cloud Run-Funktion benötigt ein Dienstkonto mit Berechtigungen zum Schreiben in den Cloud Storage-Bucket und zum Aufrufen durch Pub/Sub.
Erstellen Sie das Dienstkonto:
- Rufen Sie in der Google Cloud Console die Seite IAM & Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
teamviewer-collector-saein. - Beschreibung des Dienstkontos: Geben Sie
Service account for Cloud Run function to collect TeamViewer logsein.
- Name des Dienstkontos: 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: Protokolle in Cloud Storage-Bucket schreiben und Statusdateien verwalten
- Cloud Run Invoker: Pub/Sub darf die Funktion aufrufen.
- Cloud Functions-Invoker: Funktionsaufruf zulassen
IAM-Berechtigungen für den Cloud Storage-Bucket gewähren
Gewähren Sie dem Dienstkonto Schreibberechtigungen für den Cloud Storage-Bucket:
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
teamviewer-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.
teamviewer-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 Google Cloud Console Pub/Sub > Themen auf.
- Klicken Sie auf Thema erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Themen-ID: Geben Sie
teamviewer-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 von der TeamViewer API abzurufen und in Cloud Storage zu schreiben.
- Rufen Sie in der Google Cloud 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 teamviewer-logs-collectorRegion Wählen Sie die Region aus, die Ihrem Cloud Storage-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 Pub/Sub-Thema (
teamviewer-logs-trigger) aus. - Klicken Sie auf Speichern.
Im Abschnitt Authentifizierung:
- Wählen Sie Authentifizierung erforderlich aus.
- Weitere Informationen finden Sie unter Identity and Access Management (IAM).
Rufen Sie Container, Netzwerk, Sicherheit auf und maximieren Sie den Bereich.
Rufen Sie den Tab Sicherheit auf:
- Dienstkonto: Wählen Sie das Dienstkonto aus (
teamviewer-collector-sa).
- Dienstkonto: Wählen Sie das Dienstkonto aus (
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_BUCKETteamviewer-logsGCS_PREFIXteamviewer/audit/STATE_KEYteamviewer/audit/state.jsonWINDOW_SECONDS3600HTTP_TIMEOUT60MAX_RETRIES3USER_AGENTteamviewer-to-gcs/1.0SCRIPT_TOKENyour-script-token(aus den TeamViewer-Voraussetzungen)API_BASE_URLhttps://webapi.teamviewer.com/api/v1Rufen Sie im Bereich Variablen und Secrets die Anfragen auf:
- Zeitüberschreitung bei Anfrage: Geben Sie
600Sekunden (10 Minuten) ein.
- Zeitüberschreitung bei Anfrage: Geben Sie
Gehen Sie zum Tab Einstellungen:
- Im Abschnitt Ressourcen:
- Arbeitsspeicher: Wählen Sie 512 MiB oder höher aus.
- CPU: Wählen Sie 1 aus.
- Im Abschnitt Ressourcen:
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 automatisch der Inline-Code-Editor 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 json import os import urllib.request import urllib.parse import urllib.error from datetime import datetime, timezone import time import uuid # Initialize Storage client storage_client = storage.Client() @functions_framework.cloud_event def main(cloud_event): """ Cloud Run function triggered by Pub/Sub to fetch TeamViewer audit logs and write to GCS. Args: cloud_event: CloudEvent object containing Pub/Sub message """ # Get environment variables bucket_name = os.environ.get('GCS_BUCKET') prefix = os.environ.get('GCS_PREFIX', 'teamviewer/audit/') state_key = os.environ.get('STATE_KEY', 'teamviewer/audit/state.json') window_sec = int(os.environ.get('WINDOW_SECONDS', '3600')) http_timeout = int(os.environ.get('HTTP_TIMEOUT', '60')) max_retries = int(os.environ.get('MAX_RETRIES', '3')) user_agent = os.environ.get('USER_AGENT', 'teamviewer-to-gcs/1.0') # TeamViewer API credentials api_base_url = os.environ.get('API_BASE_URL') script_token = os.environ.get('SCRIPT_TOKEN') if not all([bucket_name, api_base_url, script_token]): print('Error: Missing required environment variables') return try: # Get GCS bucket bucket = storage_client.bucket(bucket_name) # Load state (last processed timestamp) state = load_state(bucket, state_key) now = time.time() from_ts = float(state.get('last_to_ts') or (now - window_sec)) to_ts = now print(f'Fetching TeamViewer audit data from {iso_format(from_ts)} to {iso_format(to_ts)}') # Build audit API URL url = build_audit_url(api_base_url) print(f'Fetching TeamViewer audit data from: {url}') # Fetch audit data with retries and pagination all_records = [] continuation_token = None # Inside main() loop: while True: blob_data, content_type, next_token = fetch_audit_data( url, script_token, user_agent, http_timeout, max_retries, from_ts, to_ts, continuation_token ) # Validate JSON data try: audit_data = json.loads(blob_data) records = audit_data.get('AuditEvents', []) all_records.extend(records) print(f"Retrieved {len(records)} audit records (total: {len(all_records)})") # Check for pagination if next_token: continuation_token = next_token print(f"Fetching next page with ContinuationToken: {continuation_token}") else: break except json.JSONDecodeError as e: print(f"Warning: Invalid JSON received: {e}") break if all_records: # Write to GCS key = put_audit_data(bucket, prefix, json.dumps({'AuditEvents': all_records}), 'application/json', from_ts, to_ts) print(f'Successfully wrote {len(all_records)} audit records to {key}') else: print('No audit records found') # Update state state['last_to_ts'] = to_ts state['last_successful_run'] = now save_state(bucket, state_key, state) except Exception as e: print(f'Error processing TeamViewer 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: {str(e)}') return {} def save_state(bucket, key, state): """Save state to GCS.""" try: blob = bucket.blob(key) blob.upload_from_string( json.dumps(state, separators=(',', ':')), content_type='application/json' ) except Exception as e: print(f'Warning: Could not save state: {str(e)}') def iso_format(ts): """Convert Unix timestamp to ISO 8601 format.""" return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime(ts)) def build_audit_url(api_base_url): """Build URL for TeamViewer audit API endpoint.""" return f"{api_base_url.rstrip('/')}/EventLogging" def fetch_audit_data(url, script_token, user_agent, http_timeout, max_retries, from_ts, to_ts, continuation_token=None): """Fetch audit data from TeamViewer API with retries and pagination support.""" # Construct JSON payload payload = { "StartDate": iso_format(from_ts), "EndDate": iso_format(to_ts) } if continuation_token: payload["ContinuationToken"] = continuation_token attempt = 0 while True: req = urllib.request.Request(url, method='POST') req.add_header('User-Agent', user_agent) req.add_header('Authorization', f'Bearer {script_token}') req.add_header('Content-Type', 'application/json') req.add_header('Accept', 'application/json') # Encode payload as bytes for POST body data = json.dumps(payload).encode('utf-8') try: with urllib.request.urlopen(req, data=data, timeout=http_timeout) as r: response_data = r.read() content_type = r.headers.get('Content-Type') or 'application/json' try: data = json.loads(response_data) next_token = data.get('ContinuationToken') except: next_token = None return response_data, content_type, next_token except urllib.error.HTTPError as e: if e.code == 429: attempt += 1 print(f'Rate limited (429) on attempt {attempt}') if attempt > max_retries: raise time.sleep(min(60, 2 ** attempt) + (time.time() % 1)) else: print(f'HTTP error {e.code}: {e.reason}') raise except urllib.error.URLError as e: attempt += 1 print(f'URL error on attempt {attempt}: {e}') if attempt > max_retries: raise time.sleep(min(60, 2 ** attempt) + (time.time() % 1)) def put_audit_data(bucket, prefix, blob_data, content_type, from_ts, to_ts): """Write audit data to GCS.""" ts_path = time.strftime('%Y/%m/%d', time.gmtime(to_ts)) uniq = f"{int(time.time() * 1e6)}_{uuid.uuid4().hex[:8]}" key = f"{prefix}{ts_path}/teamviewer_audit_{int(from_ts)}_{int(to_ts)}_{uniq}.json" blob = bucket.blob(key) blob.metadata = { 'source': 'teamviewer-audit', 'from_timestamp': str(int(from_ts)), 'to_timestamp': str(int(to_ts)) } blob.upload_from_string(blob_data, content_type=content_type) return key- Zweite Datei: requirements.txt:
functions-framework==3.* google-cloud-storage==2.*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 Google Cloud Console Cloud Scheduler auf.
- Klicken Sie auf Job erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Name teamviewer-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 Pub/Sub-Thema auswählen ( teamviewer-logs-trigger)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 (
teamviewer-logs-collector-hourly). - Klicken Sie auf Ausführung erzwingen, um den Job manuell auszulösen.
- Warten Sie einige Sekunden.
- Rufen Sie Cloud Run > Dienste auf.
- Klicken Sie auf den Funktionsnamen (
teamviewer-logs-collector). - Klicken Sie auf den Tab Logs.
Prüfen Sie, ob die Funktion erfolgreich ausgeführt wurde. Achten Sie auf Folgendes:
Fetching TeamViewer audit data from YYYY-MM-DDTHH:MM:SSZ to YYYY-MM-DDTHH:MM:SSZ Retrieved X audit records (total: X) Successfully wrote X audit records to teamviewer/audit/YYYY/MM/DD/teamviewer_audit_...jsonRufen Sie Cloud Storage > Buckets auf.
Klicken Sie auf den Namen Ihres Buckets (
teamviewer-logs).Rufen Sie den Präfixordner (
teamviewer/audit/) auf.Prüfen Sie, ob eine neue
.json-Datei mit dem aktuellen Zeitstempel erstellt wurde.
Wenn in den Logs Fehler angezeigt werden:
- HTTP 401: Prüfen Sie, ob die Umgebungsvariable
SCRIPT_TOKENmit Ihrem TeamViewer-Skript-Token übereinstimmt. - HTTP 403: Prüfen Sie, ob das Skript-Token die Berechtigung Verbindungsberichte > Verbindungsberichte ansehen hat.
- HTTP 429: Ratenbegrenzung – die Funktion wird automatisch mit exponentiellem Backoff wiederholt.
- Fehlende Umgebungsvariablen: Prüfen Sie, ob alle erforderlichen Variablen (
GCS_BUCKET,API_BASE_URL,SCRIPT_TOKEN) festgelegt sind.
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem Cloud Storage-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 Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
TeamViewer logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie TeamViewer als 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 für den nächsten Schritt.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage-Objekt-Betrachter für Ihren Cloud Storage-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (
teamviewer-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.
Feed in Google SecOps konfigurieren, um TeamViewer-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.
TeamViewer logs. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie TeamViewer als Protokolltyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den Cloud Storage-Bucket-URI mit dem Präfixpfad ein:
gs://teamviewer-logs/teamviewer/audit/Ersetzen Sie:
teamviewer-logs: Name Ihres Cloud Storage-Bucket.teamviewer/audit/: Präfix oder Pfad, in dem Logs gespeichert werden.
Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen 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 Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| AffectedItem | metadata.product_log_id | Der Wert von „AffectedItem“ aus dem Rohlog wird direkt diesem UDM-Feld zugeordnet. |
| EventDetails.NewValue | principal.resource.attribute.labels.value | Wenn PropertyName „(server)“ enthält, wird NewValue als Wert eines Labels in „principal.resource.attribute.labels“ verwendet. |
| EventDetails.NewValue | principal.user.user_display_name | Wenn „PropertyName“ „Name of participant“ ist, wird „NewValue“ als Anzeigename des Nutzers für den Prinzipal verwendet. |
| EventDetails.NewValue | principal.user.userid | Wenn PropertyName die ID des Teilnehmers ist, wird NewValue als Nutzer-ID für das Hauptkonto verwendet. |
| EventDetails.NewValue | security_result.about.labels.value | Für alle anderen PropertyName-Werte (außer denen, die durch bestimmte Bedingungen verarbeitet werden) wird NewValue als Wert eines Labels im security_result.about.labels-Array verwendet. |
| EventDetails.NewValue | target.file.full_path | Wenn „PropertyName“ „Source file“ ist, wird „NewValue“ als vollständiger Pfad für die Zieldatei verwendet. |
| EventDetails.NewValue | target.resource.attribute.labels.value | Wenn PropertyName „(client)“ enthält, wird NewValue als Wert eines Labels in target.resource.attribute.labels verwendet. |
| EventDetails.NewValue | target.user.user_display_name | Wenn „PropertyName“ „Name of presenter“ ist, wird „NewValue“ geparst. Wenn es sich um eine Ganzzahl handelt, wird sie verworfen. Andernfalls wird er als Anzeigename des Nutzers für das Ziel verwendet. |
| EventDetails.NewValue | target.user.userid | Wenn PropertyName die ID des Moderators ist, wird NewValue als Nutzer-ID für das Ziel verwendet. |
| EventDetails.PropertyName | principal.resource.attribute.labels.key | Wenn PropertyName „(server)“ enthält, wird PropertyName als Schlüssel eines Labels in „principal.resource.attribute.labels“ verwendet. |
| EventDetails.PropertyName | security_result.about.labels.key | Für alle anderen PropertyName-Werte (außer denen, die von bestimmten Bedingungen verarbeitet werden) wird PropertyName als Schlüssel eines Labels im Array „security_result.about.labels“ verwendet. |
| EventDetails.PropertyName | target.resource.attribute.labels.key | Wenn „PropertyName“ „(client)“ enthält, wird „PropertyName“ als Schlüssel eines Labels in „target.resource.attribute.labels“ verwendet. |
| EventName | metadata.product_event_type | Der Wert von „EventName“ aus dem Rohlog wird direkt diesem UDM-Feld zugeordnet. |
| Zeitstempel | metadata.event_timestamp | Der Wert von „Timestamp“ aus dem Rohlog wird geparst und als Ereigniszeitstempel in den Metadaten verwendet. |
| metadata.event_type | Auf USER_UNCATEGORIZED festlegen, wenn „src_user“ (abgeleitet von der ID des Teilnehmers) nicht leer ist. Andernfalls auf USER_RESOURCE_ACCESS festlegen. | |
| metadata.vendor_name | Hartcodiert auf TEAMVIEWER. | |
| metadata.product_name | Hartcodiert auf TEAMVIEWER. | |
| network.application_protocol | Hartcodiert auf TEAMVIEWER. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten