Zscaler-Webproxy-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Zscaler-Webproxy-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 dem Zscaler-Webproxy 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.

Die Bereitstellung umfasst die folgenden Komponenten:

  • Zscaler Webproxy: Die Plattform, von der Sie Protokolle erfassen.

  • Google SecOps-Feed: Der Google SecOps-Feed, über den Protokolle vom Zscaler-Webproxy abgerufen und in Google SecOps geschrieben werden.

  • Google SecOps: Hier werden die Protokolle aufbewahrt und analysiert.

Ein Datenaufnahmelabel identifiziert den Parser, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel ZSCALER_WEBPROXY.

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 Webproxy 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.

Aufnahmefeed in Google SecOps einrichten, um Zscaler-Webproxy-Logs aufzunehmen

  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 Webproxy-Logs.
  4. Wählen Sie Webhook als Quelltyp aus.
  5. Wählen Sie Zscaler als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Optional: Geben Sie Werte für die folgenden Eingabeparameter ein:
    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 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-Webproxy einrichten

  1. Klicken Sie in der Zscaler Internet Access-Konsole auf Verwaltung > Nanolog-Streamingdienst > Cloud NSS-Feeds und dann auf Cloud NSS-Feed hinzufügen.
  2. Das Fenster Cloud-NSS-Feed hinzufügen wird angezeigt. Geben Sie im Fenster Cloud NSS-Feed hinzufügen die Details ein.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein.
  4. Wählen Sie unter NSS-Typ die Option NSS for Web aus.
  5. Wählen Sie in der Liste Status den Status aus, um den NSS-Feed zu aktivieren oder zu deaktivieren.
  6. Lassen Sie den Wert im Drop-down-Menü SIEM-Rate bei Unbegrenzt. Wenn Sie den Ausgabestream aufgrund von Lizenzierungs- oder anderen Einschränkungen unterdrücken möchten, ändern Sie den Wert.
  7. Wählen Sie in der Liste SIEM-Typ die Option Sonstiges aus.
  8. Wählen Sie in der Liste OAuth 2.0-Authentifizierung die Option Deaktiviert aus.
  9. Geben Sie unter Max. Batchgröße ein Größenlimit für die Nutzlast einer einzelnen HTTP-Anfrage gemäß den Best Practices der SIEM ein. Beispiel: 512 KB.
  10. Geben Sie die HTTPS-URL des Chronicle API-Endpunkts in der API-URL im folgenden Format ein:

      https://<CHRONICLE_REGION>-chronicle.googleapis.com/v1alpha/projects/<GOOGLE_PROJECT_NUMBER>/locations/<LOCATION>/instances/<CUSTOMER_ID>/feeds/<FEED_ID>:importPushLogs
    
    • CHRONICLE_REGION: Region, in der Ihre Chronicle-Instanz gehostet wird. Beispiel: DE.
    • GOOGLE_PROJECT_NUMBER: BYOP-Projektnummer. Diese Informationen erhalten Sie von C4.
    • LOCATION: Chronicle-Region. Beispiel: DE.
    • CUSTOMER_ID: Chronicle-Kundennummer. Von C4 abrufen.
    • FEED_ID: Feed-ID, die in der Feed-Benutzeroberfläche des neuen erstellten Webhooks angezeigt wird
    • Beispiel-API-URL:
    https://us-chronicle.googleapis.com/v1alpha/projects/12345678910/locations/US/instances/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/feeds/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy:importPushLogs
    
  11. Klicken Sie auf HTTP-Header hinzufügen, um weitere HTTP-Header mit Schlüsseln und Werten hinzuzufügen.

    Beispiel: „Header 1: Key1: X-goog-api-key“ und „Value1: API-Schlüssel, generiert mit den API-Anmeldedaten von Google Cloud BYOP“.

  12. Wählen Sie in der Liste Logtypen die Option Webprotokolle aus.

  13. Wählen Sie in der Liste Feedausgabetyp die Option JSON aus.

  14. Legen Sie , \ " als Feed-Escape-Zeichen fest.

  15. Wenn Sie dem Feed-Ausgabeformat ein neues Feld hinzufügen möchten,wählen Sie in der Liste Feed-Ausgabetyp die Option Benutzerdefiniert aus.

  16. Kopieren Sie das Feedausgabeformat und fügen Sie neue Felder hinzu. Die Schlüsselnamen müssen mit den tatsächlichen Feldnamen übereinstimmen.

  17. Im Folgenden sehen Sie das Standard-Feedausgabeformat:

      \{ "sourcetype" : "zscalernss-web", "event" : \{"datetime":"%d{yy}-%02d{mth}-%02d{dd} %02d{hh}:%02d{mm}:%02d{ss}","reason":"%s{reason}","event_id":"%d{recordid}","protocol":"%s{proto}","action":"%s{action}","transactionsize":"%d{totalsize}","responsesize":"%d{respsize}","requestsize":"%d{reqsize}","urlcategory":"%s{urlcat}","serverip":"%s{sip}","requestmethod":"%s{reqmethod}","refererURL":"%s{ereferer}","useragent":"%s{eua}","product":"NSS","location":"%s{elocation}","ClientIP":"%s{cip}","status":"%s{respcode}","user":"%s{elogin}","url":"%s{eurl}","vendor":"Zscaler","hostname":"%s{ehost}","clientpublicIP":"%s{cintip}","threatcategory":"%s{malwarecat}","threatname":"%s{threatname}","filetype":"%s{filetype}","appname":"%s{appname}","pagerisk":"%d{riskscore}","threatseverity":"%s{threatseverity}","department":"%s{edepartment}","urlsupercategory":"%s{urlsupercat}","appclass":"%s{appclass}","dlpengine":"%s{dlpeng}","urlclass":"%s{urlclass}","threatclass":"%s{malwareclass}","dlpdictionaries":"%s{dlpdict}","fileclass":"%s{fileclass}","bwthrottle":"%s{bwthrottle}","contenttype":"%s{contenttype}","unscannabletype":"%s{unscannabletype}","deviceowner":"%s{deviceowner}","devicehostname":"%s{devicehostname}","keyprotectiontype":"%s{keyprotectiontype}"\}\}
    
  18. 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.

  19. Prüfen Sie die konfigurierten Einstellungen.

  20. 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.

Referenz für die Feldzuordnung

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

Log field UDM mapping Logic
metadata.vendor_name The metadata.vendor_name UDM field is set to Zscaler.
metadata.event_type If the ClientIP log field value is not empty and the serverip log field value is not empty and the proto log field value contain one of the following values, then the metadata.event_type UDM field is set to NETWORK_HTTP.
  • HTTPS
  • HTTP
Else, if the ClientIP log field value is not empty and the serverip log field value is not empty, then the metadata.event_type UDM field is set to NETWORK_CONNECTION.

Else, if the user log field value is not empty or the deviceowner log field value is not empty, then the metadata.event_type UDM field is set to USER_UNCATEGORIZED.

Else, the metadata.event_type UDM field is set to GENERIC_EVENT.
metadata.product_name The metadata.product_name UDM field is set to Web Proxy.
sourcetype additional.fields[sourcetype]
datetime metadata.event_timestamp
tz additional.fields[tz]
ss additional.fields[ss]
mm additional.fields[mm]
hh additional.fields[hh]
dd additional.fields[dd]
mth additional.fields[mth]
yyyy additional.fields[yyyy]
mon additional.fields[mon]
day additional.fields[day]
department principal.user.department
b64dept principal.user.department
edepartment principal.user.department
user principal.user.email_addresses
b64login principal.user.email_addresses
elogin principal.user.email_addresses
ologin additional.fields[ologin]
cloudname principal.user.attribute.labels[cloudname]
company principal.user.company_name
throttlereqsize security_result.detection_fields[throttlereqsize]
throttlerespsize security_result.detection_fields[throttlerespsize]
bwthrottle security_result.detection_fields[bwthrottle]
security_result.category If the bwthrottle log field value is equal to Yes, then the security_result.category UDM field is set to POLICY_VIOLATION.
bwclassname security_result.detection_fields[bwclassname]
obwclassname security_result.detection_fields[obwclassname]
bwrulename security_result.rule_name
appname target.application
appclass target.security_result.detection_fields[appclass]
module target.security_result.detection_fields[module]
app_risk_score target.security_result.risk_score If the app_risk_score log field value matches the regular expression pattern [0-9]+, then the app_risk_score log field is mapped to the security_result.risk_score UDM field.
datacenter target.location.name
datacentercity target.location.city
datacentercountry target.location.country_or_region
dlpdictionaries security_result.detection_fields[dlpdictionaries]
odlpdict security_result.detection_fields[odlpdict]
dlpdicthitcount security_result.detection_fields[dlpdicthitcount]
dlpengine security_result.detection_fields[dlpengine]
odlpeng security_result.detection_fields[odlpeng]
dlpidentifier security_result.detection_fields[dlpidentifier]
dlpmd5 security_result.detection_fields[dlpmd5]
dlprulename security_result.rule_name
odlprulename security_result.detection_fields[odlprulename]
fileclass additional.fields[fileclass]
filetype target.file.mime_type
filename target.file.full_path
b64filename target.file.full_path
efilename target.file.full_path
filesubtype additional.fields[filesubtype]
upload_fileclass additional.fields[upload_fileclass]
upload_filetype target.file.mime_type If the filetype log field value is equal to None and the upload_filetype log field value is not equal to None, then the upload_filetype log field is mapped to the target.file.mime_type UDM field.
upload_filename target.file.full_path If the filename log field value is equal to None and the upload_filename log field value is not equal to None, then the upload_filename log field is mapped to the target.file.full_path UDM field.
b64upload_filename target.file.full_path
eupload_filename target.file.full_path
upload_filesubtype additional.fields[upload_filesubtype]
upload_doctypename additional.fields[upload_doctypename]
unscannabletype security_result.detection_fields[unscannabletype]
rdr_rulename intermediary.security_result.rule_name
b64rdr_rulename intermediary.security_result.rule_name
intermediary.resource.resource_type If the rdr_rulename log field value is not empty, then the intermediary.resource.resource_type UDM field is set to GATEWAY.
ordr_rulename additional.fields[ordr_rulename]
fwd_type intermediary.resource.attribute.labels[fwd_type]
fwd_gw_name intermediary.resource.name
b64fwd_gw_name intermediary.resource.name
ofwd_gw_name security_result.detection_fields[ofwd_gw_name]
fwd_gw_ip intermediary.ip
zpa_app_seg_name additional.fields[zpa_app_seg_name]
b64zpa_app_seg_name additional.fields[zpa_app_seg_name]
ozpa_app_seg_name additional.fields[ozpa_app_seg_name]
reqdatasize additional.fields[reqdatasize]
reqhdrsize additional.fields[reqhdrsize]
requestsize network.sent_bytes
respdatasize additional.fields[respdatasize]
resphdrsize additional.fields[resphdrsize]
responsesize network.received_bytes
transactionsize additional.fields[transactionsize]
contenttype additional.fields[contenttype]
df_hosthead security_result.detection_fields[df_hosthead]
df_hostname security_result.detection_fields[df_hostname]
hostname target.hostnametarget.asset.hostname
b64host target.hostnametarget.asset.hostname
ehost target.hostnametarget.asset.hostname
refererURL network.http.referral_url
b64referer network.http.referral_url
ereferer network.http.referral_url
erefererpath additional.fields[erefererpath]
refererhost additional.fields[refererhost]
erefererhost additional.fields[refererhost]
requestmethod network.http.method
reqversion additional.fields[reqversion]
status network.http.response_code
respversion additional.fields[respversion]
ua_token additional.fields[ua_token]
useragent network.http.user_agent
b64ua network.http.user_agent
eua network.http.user_agent
useragent network.http.parsed_user_agent
b64ua network.http.parsed_user_agent
eua network.http.parsed_user_agent
uaclass additional.fields[uaclass]
url target.url
b64url target.url
eurl target.url
eurlpath additional.fields[eurlpath]
mobappname additional.fields[mobappname]
b64mobappname additional.fields[mobappname]
emobappname additional.fields[mobappname]
mobappcat additional.fields[mobappcat]
mobdevtype additional.fields[mobdevtype]
clt_sport principal.port
ClientIP principal.ip
ocip security_result.detection_fields[ocip]
cpubip additional.fields[cpubip]
ocpubip additional.fields[ocpubip]
clientpublicIP principal.nat_ip
serverip target.ip
network.application_protocol If the protocol log field value contain one of the following values, then the network.application_protocol UDM field is set to HTTP.
  • HTTP
  • HTTP_PROXY
Else, if the protocol log field value contain one of the following values, then the network.application_protocol UDM field is set to HTTPS.
  • HTTPS
  • SSL
  • TUNNEL_SSL
  • DNSOVERHTTPS
  • TUNNEL
Else, the network.application_protocol UDM field is set to UNKNOWN_APPLICATION_PROTOCOL.
alpnprotocol additional.fields[alpnprotocol]
trafficredirectmethod intermediary.resource.attribute.labels[trafficredirectmethod]
location principal.location.name
elocation principal.location.name
userlocationname principal.location.name If the userlocationname log field value is not equal to None, then the userlocationname log field is mapped to the principal.location.name UDM field.
b64userlocationname principal.location.name
euserlocationname principal.location.name
rulelabel security_result.rule_name If the action log field value is equal to Blocked, then the rulelabel log field is mapped to the security_result.rule_name UDM field.
b64rulelabel security_result.rule_name
erulelabel security_result.rule_name
ruletype security_result.rule_type
reason security_result.description If the action log field value is equal to Blocked, then the reason log field is mapped to the security_result.description UDM field.
action security_result.action_details
security_result.action If the action log field value is equal to Allowed, then the security_result.action UDM field is set to ALLOW.

Else, if the action log field value is equal to Blocked, then the security_result.action UDM field is set to BLOCK.
urlfilterrulelabel security_result.rule_name
b64urlfilterrulelabel security_result.rule_name
eurlfilterrulelabel security_result.rule_name
ourlfilterrulelabel security_result.detection_fields[ourlfilterrulelabel]
apprulelabel target.security_result.rule_name
b64apprulelabel target.security_result.rule_name
oapprulelabel security_result.detection_fields[oapprulelabel]
bamd5 target.file.md5
sha256 target.file.sha256
ssldecrypted security_result.detection_fields[ssldecrypted]
externalspr security_result.about.artifact.last_https_certificate.extension.certificate_policies
keyprotectiontype security_result.about.artifact.last_https_certificate.extension.key_usage
clientsslcipher network.tls.client.supported_ciphers
clienttlsversion network.tls.version
clientsslsessreuse security_result.detection_fields[clientsslsessreuse]
cltsslfailreason security_result.detection_fields[cltsslfailreason]
cltsslfailcount security_result.detection_fields[cltsslfailcount]
srvsslcipher network.tls.cipher
srvtlsversion security_result.detection_fields[srvtlsversion]
srvocspresult security_result.detection_fields[srvocspresult]
srvcertchainvalpass security_result.detection_fields[srvcertchainvalpass]
srvwildcardcert security_result.detection_fields[srvwildcardcert]
serversslsessreuse security_result.detection_fields[server_ssl_sess_reuse]
srvcertvalidationtype security_result.detection_fields[srvcertvalidationtype]
srvcertvalidityperiod security_result.detection_fields[srvcertvalidityperiod]
is_ssluntrustedca security_result.detection_fields[is_ssluntrustedca]
is_sslselfsigned security_result.detection_fields[is_sslselfsigned]
is_sslexpiredca security_result.detection_fields[is_sslexpiredca]
pagerisk security_result.risk_score
security_result.severity If the pagerisk log field value is greater than or equal to 90 and the pagerisk log field value is less than or equal to 100, then the security_result.severity UDM field is set to CRITICAL.

If the pagerisk log field value is greater than or equal to 75 and the pagerisk log field value is less than or equal to 89, then the security_result.severity UDM field is set to HIGH.

If the pagerisk log field value is greater than or equal to 46 and the pagerisk log field value is less than or equal to 74, then the security_result.severity UDM field is set to MEDIUM.

If the pagerisk log field value is greater than or equal to 1 and the pagerisk log field value &is less than or equal to 45, then the security_result.severity UDM field is set to LOW.

If the pagerisk log field value is equal to 0, then the security_result.severity UDM field is set to NONE.
threatname security_result.threat_name
b64threatname security_result.threat_name
threatcategory security_result.associations.name
threatclass security_result.associations.description
urlclass security_result.detection_fields[urlclass]
urlsupercategory security_result.category_details
urlcategory security_result.category_details
b64urlcat security_result.category_details
ourlcat security_result.detection_fields[ourlcat]
urlcatmethod security_result.detection_fields[urlcatmethod]
bypassed_traffic security_result.detection_fields[bypassed_traffic]
bypassed_etime security_result.detection_fields[bypassed_etime]
deviceappversion additional.fields[deviceappversion]
devicehostname principal.asset.hostname
odevicehostname security_result.detection_fields[odevicehostname]
devicemodel principal.asset.hardware.model
devicename principal.asset.asset_id
odevicename security_result.detection_fields[odevicename]
principal.asset.platform_software.platform If the deviceostype log field value matches the regular expression pattern (?i)iOS, then the principal.asset.platform_software.platform UDM field is set to IOS.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Android, then the principal.asset.platform_software.platform UDM field is set to ANDROID.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Windows, then the principal.asset.platform_software.platform UDM field is set to WINDOWS.

Else, if the deviceostype log field value matches the regular expression pattern (?i)MAC, then the principal.asset.platform_software.platform UDM field is set to MAC.

Else, if the deviceostype log field value matches the regular expression pattern (?i)Other, then the principal.asset.platform_software.platform UDM field is set to UNKNOWN_PLATFORM.
deviceosversion principal.asset.software.version
deviceowner principal.user.userid
odeviceowner security_result.detection_fields[odeviceowner]
devicetype principal.asset.category
external_devid additional.fields[external_devid]
flow_type additional.fields[flow_type]
ztunnelversion additional.fields[ztunnelversion]
event_id metadata.product_log_id
productversion metadata.product_version
nsssvcip about.ip
eedone additional.fields[eedone]

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