Zscaler CASB-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Zscaler CASB-Logs exportieren, indem Sie einen Google Security Operations-Feed einrichten. Außerdem wird erläutert, wie Protokollfelder den Feldern des Unified Data Model (UDM) von Google SecOps zugeordnet werden.

Weitere Informationen finden Sie unter Datenaufnahme in Google SecOps.

Eine typische Bereitstellung besteht aus Zscaler CASB und dem Google SecOps-Webhook-Feed, der so konfiguriert ist, dass Protokolle an Google SecOps gesendet werden. Jede Kundenimplementierung kann sich unterscheiden und möglicherweise komplexer sein.

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. Lade die Datei für die Datenaufnahmeauthentifizierung herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
  • Zscaler CASB: Die Plattform, von der Sie Protokolle erfassen.

  • Google SecOps-Feed: Der Google SecOps-Feed, der Protokolle aus dem Zscaler CASB abholt und in Google SecOps schreibt.

BindPlane-Agent installieren

Windows-Installation

Hinweise

  • Sie benötigen Zugriff auf die Zscaler Internet Access-Konsole. Weitere Informationen finden Sie in der ZIA-Hilfe zum sicheren Internet- und SaaS-Zugriff.
  • Sie müssen Zscaler CASB 2024 oder höher verwenden.
  • Alle Systeme in der Bereitstellungsarchitektur müssen mit der Zeitzone UTC konfiguriert sein.
  • Sie benötigen den API-Schlüssel, um die Feedeinrichtung in Google SecOps abzuschließen. Weitere Informationen finden Sie unter API-Schlüssel einrichten.

Linux-Installation

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Zscaler CASB-Logs.
  4. Wählen Sie Webhook als Quelltyp aus.
  5. Wählen Sie Zscaler CASB als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
    1. Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem die Zeilen der Protokolle getrennt werden. Lassen Sie dieses Feld leer, wenn kein Trennzeichen verwendet wird.
    2. Asset-Namespace: Der Asset-Namespace.
    3. Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.

Zscaler CASB einrichten

Weitere Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Dateien aufnimmt und an Google SecOps sendet

  1. Rufen Sie die Konfigurationsdatei auf:

    • Suchen Sie die Datei config.yaml. Normalerweise befindet es sich unter Linux im Verzeichnis /etc/bindplane-agent/ oder unter Windows im Installationsverzeichnis.
    • Öffnen Sie die Datei mit einem Texteditor, z. B. nano, vi oder Notepad.
  2. Bearbeiten Sie die Datei config.yamlso:

    receivers:
        tcplog:
            # Replace the below port <54525> and IP <0.0.0.0> with your specific values
            listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: vmware_nsx
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • CHRONICLE_REGION: Region, in der Ihre Google SecOps-Instanz gehostet wird (z. B. US).
    • GOOGLE_PROJECT_NUMBER: BYOP-Projektnummer (erhältlich von C4)
    • LOCATION: Google SecOps-Region (z. B. US).
    • CUSTOMER_ID: Google SecOps-Kundennummer (erhältlich bei C4)
    • FEED_ID: Feed-ID, die in der Feed-Benutzeroberfläche des neu erstellten Webhooks angezeigt wird.

    Beispiel-API-URL:

Bindplane-Agent neu starten, um Änderungen anzuwenden

  • Führen Sie unter Linux den folgenden Befehl aus, um den Bindplane-Agent neu zu starten:

    sudo systemctl restart bindplane-agent
    
  • Unter Windows können Sie den Bindplane-Agenten entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Zscaler Cloud Web Security konfigurieren

  1. Melden Sie sich in der Admin-Konsole von Zscaler Analytics an.
  2. Wählen Sie Verwaltung > Einstellungen > Nanolog-Streamingdienst (NSS) aus.
  3. Wählen Sie NSS-Feeds aus.
  4. Klicken Sie auf Hinzufügen.
  5. Führen Sie im angezeigten Fenster NSS-Feed hinzufügen die folgenden Schritte aus:

    1. Feedname: Geben Sie den Feednamen ein.
    2. NSS-Typ: Wählen Sie je nach Ihren Anforderungen entweder NSS für das Web oder NSS für die Firewall aus.
    3. NSS-Name: Wählen Sie die NSS-VM aus, die Protokolle aus der Cloud erfasst. Einem Feed kann nur eine NSS-VM zugeordnet werden.
    4. Status: Wählen Sie Aktiviert aus, um den Feed zu aktivieren.
    5. SIEM-IP: Geben Sie die IP-Adresse des syslog-Servers/Bindplanes ein.
    6. SIEM-TCP-Port: Geben Sie die Portnummer des Syslog-Servers/Bindplanes für die TCP-Kommunikation ein. Zscaler unterstützt nur die TCP-Verbindung.
    7. Logtyp: Wählen Sie je nach ausgewähltem NSS-Typ Webprotokoll oder Firewallprotokolle aus.
    8. Feedausgabetyp: Wählen Sie Benutzerdefiniert aus.
    9. Feed-Ausgabeformat: Geben Sie das Webprotokoll oder Firewallprotokoll an.
    10. User obfuscation (Nutzerverschleierung): Wählen Sie Disabled (Deaktiviert) aus, um die Anmeldenutzernamen in der Ausgabe anzuzeigen. Wählen Sie für Zufallszahlen Aktiviert aus.
    11. Zeitzone: Wählen Sie die richtige Zeitzone aus. Die Standardzeitzone ist GMT.
    12. Duplizierte Protokolle: Geben Sie die Anzahl der Minuten ein, nach denen NSS die duplizierten Protokolle sendet. Sie können die Zeit entsprechend Ihren Anforderungen auswählen.
    13. Transaktionsfilter: Es gibt verschiedene Parameter, anhand derer Sie die von der NSS-VM gesendeten Protokolle filtern können.

    Weitere Informationen zu den verschiedenen Filtersätzen finden Sie im Abschnitt zu NSS-Dokumenten im Hilfeportal.

  6. Verwenden Sie die Policy Admin Console oder die Analytics Admin Console:

    1. Klicken Sie auf Fertig, um die Richtlinien-Admin-Konsole zu verwenden.
    2. Wenn Sie die Analytics-Admin-Konsole verwenden möchten, klicken Sie auf Speichern. Nachdem Sie das Fenster NSS-Feed hinzufügen geschlossen haben, kehren Sie zum vorherigen Fenster zurück. Die hinzugefügten Feeddetails werden dann im Bereich Feeds konfigurieren angezeigt.
  7. Verwenden Sie die Policy Admin Console oder die Analytics Admin Console:

    1. So verwenden Sie die Policy Admin Console:
      • Klicken Sie im Bereich Feeds konfigurieren auf Speichern.
      • Klicken Sie auf Jetzt aktivieren. Der Status des Ergebnisses wird in einem neuen Fenster angezeigt.
      • Klicken Sie auf Fertig.
    2. Wenn Sie die Analytics-Admin-Konsole verwenden möchten, klicken Sie auf Jetzt aktivieren. Der Status des Ergebnisses wird oben im Fenster angezeigt.

Web- und Firewall-Logfeed konfigurieren

Verwenden Sie im Feld Feedausgabeformat die folgenden Feeds:

  • Wenn der Dispatcher ein benutzerdefiniertes Format unterstützt, geben Sie den folgenden Webprotokollfeed an:

    |ZSCALER|DATE|%s{mon} %d{dd} %02d{hh}:%02d{mm}:%02d{ss}|NSSFEEDIP|%s{nsssvcip}|CLIENTINTIP|%s{cintip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{proto}|URL|%s{url}|HOST|%s{host}|ACTION|%s{action}|REASON|%s{reason}|RISKSCORE|%d{riskscore}|APPNAME|%s{appname}|APPCLASS|%s{appclass}|REQSIZE|%d{reqsize}|RESPSIZE|%d{respsize}|CTIME|%d{ctime}|URLCLASS|%s{urlclass}|SUPERCAT|%s{urlsupercat}|URLCAT|%s{urlcat}|MALWARECAT|%s{malwarecat}|MALWARECLASS|%s{malwareclass}|THREATNAME|%s{threatname}|FILETYPE|%s{filetype}|FILECLASS|%s{fileclass}|DLPENGINE|%s{dlpeng}|DLPDICT|%s{dlpdict}|BWTHROTTLE|%s{bwthrottle}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|CLIENTIP|%s{cip}|DESTINATIONIP|%s{sip}|REQMETHOD|%s{reqmethod}|RESPCODE|%s{respcode}|USERAGENT|%s{ua}|REFERER|%s{referer}|MD5HASH|%s{bamd5}|DLPRULENAME|%s{dlprulename}|DLPMD5|%s{dlpmd5}|DLPIDENTIFIER|%d{dlpidentifier}|DLPDICTHITCOUNT|%s{dlpdicthitcount}|\n
            ```
    
  • Wenn der Collector das Abonnieren von Firewall-Feeds unterstützt, geben Sie den folgenden Firewall-Feed an:

    |ZSCALERFIREWALL|DATE|%s{mon}%d{dd} %02d{hh}:%02d{mm}:%02d{ss}|CLIENTIP|%s{csip}|RECORDID|%d{recordid}|LOGINNAME|%s{login}|PROTOCOL|%s{ipproto}|ACTION|%s{action}|DESTINATIONIP|%s{cdip}|SOURCEPORT|%d{csport}|DESTINATIONPORT|%d{cdport}|CLIENTTUNIP|%s{tsip}|CLIENTTUNPORT|%d{tsport}|LOCATION|%s{location}|DEPARTMENT|%s{dept}|DESTINATIONCOUNTRY|%s{destcountry}|INCOMINGBYTES|%ld{inbytes}|NETWORKAPP|%s{nwapp}|NETWORKSVC|%s{nwsvc}|RULELABEL|%s{rulelabel}|NATTING|%s{dnat}|SESSIONDURATION|%d{duration}|AGGREGATEDSESSION|%d{numsessions}|AVERAGEDURATION|%d{avgduration}|TUNNELTYPE|%s{ttype}|SERVERDESTPORT|%d{sdport}|SERVERSOURCEIP|%s{ssip}|SERVERSOURCEPORT|%d{ssport}|IPCAT|%s{ipcat}|\n
    
    1. Wählen Sie in der Liste Zeitzone die Zeitzone für das Feld Uhrzeit in der Ausgabedatei aus. Standardmäßig ist die Zeitzone auf die Zeitzone Ihrer Organisation festgelegt.
    2. Prüfen Sie die konfigurierten Einstellungen.
    3. Klicken Sie auf Speichern, um die Verbindung zu testen. Wenn die Verbindung erfolgreich ist, wird ein grünes Häkchen mit der Meldung Test Connectivity Successful: OK (200) (Verbindungstest erfolgreich: OK (200)) angezeigt.

Weitere Informationen zu Google SecOps-Feeds finden Sie in der Dokumentation zu Google SecOps-Feeds. Informationen zu den Anforderungen für die einzelnen Feedtypen finden Sie unter Feedkonfiguration nach Typ.

Wenn beim Erstellen von Feeds Probleme auftreten, wenden Sie sich an den Google SecOps-Support.

UDM-Zuordnungstabelle

Referenz für die Feldzuordnung: ZSCALER_CASB

In der folgenden Tabelle sind die Protokollfelder des ZSCALER_CASB-Protokolltyps und die zugehörigen UDM-Felder aufgeführt.

Log field UDM mapping Logic
metadata.event_type The metadata.event_type UDM field is set to USER_UNCATEGORIZED.
metadata.product_name The metadata.product_name UDM field is set to CASB.
metadata.vendor_name The metadata.vendor_name UDM field is set to Zscaler.
principal.user.attribute.roles.type If the is_admin_act log field value is equal to 1, then the principal.user.attribute.roles.type UDM field is set to ADMINISTRATOR.
security_result.associations.type If the malware log field value is not empty, then the security_result.associations.type UDM field is set to MALWARE.
security_result.severity If the severity log field value is equal to High, then the security_result.severity UDM field is set to HIGH.

Else, if the severity log field value is equal to Medium, then the security_result.severity UDM field is set to MEDIUM.

Else, if the severity log field value is equal to Low, then the security_result.sevrity UDM field is set to LOW.

Else, if the severity log field value is equal to Information, then the security_result.severity UDM field is set to INFORMATIONAL.
target.resource.resource_type If the bucketname log field value is not empty, then the target.resource.resource_type UDM field is set to STORAGE_BUCKET.

If the reponame log field value is not empty, then the target.resource.resource_type UDM field is set to REPOSITORY.
act_cnt additional.fields[act_cnt]
act_type_name metadata.product_event_type
any_incident security_result.detection_fields[any_incident]
applicationname principal.application If the applicationname log field value is not empty, then the applicationname log field is mapped to the principal.application UDM field.

Else, the appname log field is mapped to the principal.application UDM field.
attchcomponentfilenames target.file.names
attchcomponentfilesizes target.file.size If the attchcomponentfilesizes log field value is not empty, then the attchcomponentfilesizes log field is mapped to the target.file.size UDM field.
attchcomponentfiletypes additional.fields[attchcomponentfiletypes]
bucketid target.resource.product_object_id
bucketname target.resource.name If the bucketname log field value is not empty, then the bucketname log field is mapped to the target.resource.name UDM field.
bucketowner target.resource.attribute.labels[bucketowner]
channel_name additional.fields[channel_name]
collabnames additional.fields[collabnames]
collabscope additional.fields[collabscope]
company principal.user.company_name
companyid additional.fields[companyid]
component additional.fields[component]
datacenter target.location.name
datacentercity target.location.city
datacentercountry target.location.country_or_region
datetime metadata.event_timestamp If the datetime log field value is not empty, then the datetime log field is mapped to the metadata.event_timestamp UDM field.
day additional.fields[day]
dd additional.fields[dd]
department principal.user.department
dept principal.user.department
dlpdictcount security_result.detection_fields[dlpdictcount] If the dlpdictcount log field value is not empty and the dlpdictcount log field value is not equal to None, then the dlpdictcount log field is mapped to the security_result.detection_fields.dlpdictcount UDM field.
dlpdictnames security_result.detection_fields[dlpdictnames]
dlpenginenames security_result.detection_fields[dlpenginenames] If the dlpenginenames log field value is not empty and the dlpenginenames log field value is not equal to None, then the dlpenginenames log field is mapped to the security_result.detection_fields.dlpenginenames UDM field.
dlpidentifier security_result.detection_fields[dlpidentifier]
epochlastmodtime additional.fields[epochlastmodtime]
epochtime metadata.event_timestamp If the epochtime log field value is not empty, then the epochtime log field is mapped to the metadata.event_timestamp UDM field.
eventtime metadata.event_timestamp If the eventtime log field value is not empty, then the eventtime log field is mapped to the metadata.event_timestamp UDM field.
extcollabnames additional.fields[extcollabnames]
external_collabnames additional.fields[externalcollabnames]
external_recptnames network.email.to For index in external_recptnames, the index is mapped to the network.email.to UDM field.
externalownername additional.fields[externalownername]
extownername additional.fields[extownername]
extrecptnames network.email.to For index in extrecptnames, the index is mapped to the network.email.to UDM field.
file_msg_id additional.fields[file_msg_id]
file_msg_mod_time target.file.last_modification_time If the lastmodtime log field value is not empty, then the lastmodtime log field is mapped to the target.file.last_modification_time UDM field.

Else if the file_msg_mod_time log field value is not empty, then the file_msg_mod_time log field is mapped to the target.file.fullpath UDM field.
filedownloadtimems additional.fields[filedownloadtimems]
fileid additional.fields[fileid]
filemd5 target.file.md5 If the filemd5 log field value is not equal to None and the filemd5 log field value matches the regular expression pattern ^[a-fA-F0-9]{32}$, then the filemd5 log field is mapped to the target.file.md5 UDM field.

Else, if the attchcomponentmd5s log field value matches the regular expression pattern ^[a-fA-F0-9]{32}$, then the attchcomponentmd5s log field is mapped to the target.file.md5 UDM field.
filename target.file.names
filepath target.file.full_path If the filesource log field value is not empty, then the filesource log field is mapped to the target.file.full_path UDM field.

Else if the filepath log field value is not empty, then the filepath log field is mapped to the target.file.full_path UDM field.
filescantimems additional.fields[filescantimems]
filesize target.file.size If the attchcomponentfilesizes log field value is not empty, then the attchcomponentfilesizes log field is mapped to the target.file.size UDM field.

Else if the filesize log field value is not empty, then the filesize log field is mapped to the target.file.size UDM field.
filesource target.file.full_path If the filesource log field value is not empty, then the filesource log field is mapped to the target.file.full_path UDM field.
filetypecategory additional.fields[filetypecategory]
filetypename target.file.mime_type
fullurl principal.url If the fullurl log field is not empty and the fullurl log field value is not equal to Unknown URL, then the fullurl log field is mapped to the principal.url UDM field.
hh additional.fields[hh]
hostname target.hostname If the hostname log field value is not empty, then the hostname log field is mapped to the target.hostname UDM field.
intcollabnames additional.fields[intcollabnames] If intcollabnames log field value does not match the regular expression pattern None then, for index in intcollabnames, the index is mapped to the additional.fields.value.list_value UDM field.
internal_collabnames additional.fields[internal_collabnames]
internal_recptnames network.email.to For index in internal_recptnames, the index is mapped to the network.email.to UDM field.
intrecptnames network.email.to For index in intrecptnames, the index is mapped to the network.email.to UDM field.
is_admin_act principal.user.attribute.labels[is_admin_act]
is_inbound security_result.detection_fields[is_inbound]
lastmodtime target.file.last_modification_time If the lastmodtime log field value is not empty, then the lastmodtime log field is mapped to the target.file.last_modification_time UDM field.
login principal.user.email_addresses If the login log field value matches the regular expression pattern (^.*@.*$), then the login log field is mapped to the principal.user.email_addresses UDM field.
login principal.user.userid If the login log field value does not match the regular expression pattern ^.+@.+$, then the login log field is mapped to the principal.user.userid UDM field.
malware security_result.associations.name
malwareclass security_result.detection_fields[malwareclass]
messageid additional.fields[messageid]
mm additional.fields[mm]
mon additional.fields[mon]
msgid security_result.detection_fields[msgid]
msgsize additional.fields[msgsize]
mth additional.fields[mth]
num_ext_recpts additional.fields[num_ext_recpts]
num_external_collab additional.fields[num_external_collab]
num_int_recpts additional.fields[num_int_recpts]
num_internal_collab additional.fields[num_internal_collab]
numcollab additional.fields[numcollab]
oattchcomponentfilenames security_result.detection_fields[oattchcomponentfilenames]
object_name_1 target.resource.name If the object_name_1 log field value is not empty, then the object_name_1 log field is mapped to the target.resource.name UDM field.
object_name_2 about.resource.name
object_type target.resource.resource_subtype
objectname target.resource.name If the objectname log field value is not empty, then the objectname log field is mapped to the target.resource.name UDM field.
objecttype target.resource.resource_subtype If the objecttype log field value is not empty, then the objecttype log field is mapped to the target.resource.resource_subtype UDM field.
objnames1 target.resource.name If the objnames1 log field value is not empty, then the objnames1 log field is mapped to the target.resource.name UDM field.
objnames2 about.resource.name
objtypename1 target.resource.resource_subtype If the objtypename1 log field value is not empty, then the objtypename1 log field is mapped to the target.resource.resource_subtype UDM field.
objtypename2 about.resource.resource_subtype
obucketname security_result.detection_fields[obucketname]
obucketowner security_result.detection_fields[obucketowner]
ochannel_name security_result.detection_fields[ochannel_name]
ocollabnames security_result.detection_fields[ocollabnames]
odlpdictnames security_result.detection_fields[odlpdictnames]
odlpenginenames security_result.detection_fields[odlpenginenames]
oextcollabnames security_result.detection_fields[oextcollabnames]
oexternal_collabnames security_result.detection_fields[oexternal_collabnames]
oexternal_recptnames security_result.detection_fields[oexternal_recptnames]
oexternalownername security_result.detection_fields[oexternalownername]
oextownername security_result.detection_fields[oextownername]
oextrecptnames security_result.detection_fields[oextrecptnames]
ofile_msg_id security_result.detection_fields[ofile_msg_id]
ofileid security_result.detection_fields[ofileid]
ofullurl security_result.detection_fields[ofullurl]
ohostname security_result.detection_fields[ohostname]
ointcollabnames security_result.detection_fields[ointcollabnames]
ointernal_collabnames security_result.detection_fields[ointernal_collabnames]
ointernal_recptnames security_result.detection_fields[ointernal_recptnames]
ointrecptnames security_result.detection_fields[ointrecptnames]
omessageid security_result.detection_fields[omessageid]
omsgid security_result.detection_fields[omsgid]
oowner security_result.detection_fields[oowner]
orulelabel security_result.detection_fields[orulelabel]
osender security_result.detection_fields[osender]
osharedchannel_hostname security_result.detection_fields[osharedchannel_hostname]
otenant security_result.detection_fields[otenant]
ouser security_result.detection_fields[ouser]
owner principal.user.email_addresses If the owner log field value matches the regular expression pattern (^.*@.*$), then the owner log field is mapped to the principal.user.email_addresses UDM field.
policy security_result.rule_labels[policy]
projectname target.resource.attribute.labels[projectname]
recordid metadata.product_log_id
repochtime additional.fields[repochtime]
reponame target.resource.name If the reponame log field value is not empty, then the reponame log field is mapped to the target.resource.name UDM field.
rtime additional.fields[rtime]
rulelabel security_result.rule_name
ruletype security_result.rule_labels[ruletype]
sender network.email.from If the sender log field value matches the regular expression pattern (^.*@.*$), then the sender log field is mapped to the network.email.from UDM field.
sha target.file.sha256
sharedchannel_hostname target.hostname If the hostname log field value is not empty, then the hostname log field is mapped to the target.hostname UDM field.

Else if the sharedchannel_hostname log field value is not empty, then the sharedchannel_hostname log field is mapped to the target.hostname UDM field.
sourcetype security_result.detection_fields[sourcetype]
src_ip principal.ip
ss additional.fields[ss]
suburl additional.fields[suburl]
tenant additional.fields[tenant]
threatname security_result.threat_name If the threatname log field value is not empty and the dlpdictcount log field value is not equal to None, then the threatname log field is mapped to the security_result.threat_name UDM field.
time metadata.event_timestamp If the time log field value is not empty, then the time log field is mapped to the metadata.event_timestamp UDM field.
tz additional.fields[tz]
upload_doctypename additional.fields[upload_doctypename]
user principal.user.email_addresses If the user log field value matches the regular expression pattern (^.*@.*$), then the user log field is mapped to the principal.user.email_addresses UDM field.
username principal.user.email_addresses If the username log field value matches the regular expression pattern (^.*@.*$), then the username log field is mapped to the principal.user.email_addresses UDM field.
yyyy additional.fields[yyyy]

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten