Collect Netskope web proxy logs
This parser handles both CEF and non-CEF formatted Netskope web proxy logs. It extracts fields, performs data transformations (for example, converting timestamps or merging fields), maps them to the UDM, and adds Netskope-specific metadata. The parser uses conditional logic to handle different log formats and field availability, enriching the UDM with relevant network, security, and application details.
Before you begin
- Ensure that you have a Google Security Operations instance.
 - Ensure that you have privileged access to Netskope.
 - Ensure that you have a configured Log Shipper module.
 - Ensure that you have a Google SecOps service account key (reach out to the Google SecOps team to get a service account with the following scopes: https://www.googleapis.com/auth/malachite-ingestion).
 
Get Google SecOps customer ID
- Sign in to the Google SecOps console.
 - Go to SIEM Settings > Profile.
 - Copy and save the Customer ID from the Organization Details section.
 
Configure the Netskope Tenant in CE
- Go to Settings > General.
 - Toggle the Log Shipper switch to ON
 - In Settings, go to Netskope Tenants.
 - If no tenants are configured, click Add Tenant.
 - Enter the following values:
- Name: provide a memorable name for your tenant.
 - Tenant Name: enter the real name of your Netskope tenant.
 - V2 API Token: enter your Netskope API token.
 - Alert Filters: add the web proxy alerts you would like to ingest.
 - Initial Range: enter the amount of historical data you would like to ingest (in days).
 - Click Save.
 
 
Configure the Netskope CLS plugin
- Go to Settings > Plugins.
 - Search for and select the Netskope (CLS) box to open the plugin creation page.
 - Enter the following details:
- Configuration Name: enter a memorable name for this plugin.
 - Tenant: select the tenant you created in the previous step from the list.
 - Click Next.
 - Update the Event Type list as needed.
 - Initial Range: enter the amount of historical data you would like to ingest (in hours).
 - Click Save.
 
 
Configure a Google SecOps plugin in Netskope
- Go to Settings > Plugins.
 - Search for and select the Chronicle (CLS) box to open the plugin creation page.
 - Enter the following details:
- Configuration Name: enter a name for this plugin.
 - Mapping: leave the default selection.
 - Toggle ON 
When enabled logs will be transformed using the selected mapping file. - Click Next.
 - Region: select the region of your Google SecOps.
 - Custom Region URL: optional setting that is required only if Custom Region was selected in the previous step.
 - Service Account Key: enter the JSON key provided by Google SecOps.
 - Customer ID: enter the customer ID of your Google SecOps tenant.
 - Click Save.
 
 
Configure a Log Shipper Business Rule for Google SecOps
- Go to Log Shipper > Business Rules.
 - By default, there is a business rule that filters all alerts and events.
 - If you want to filter out any specific type of alert, or event, click Create New Rule and configure a new business rule by adding the rule name and filter.
 - Click Save.
 
Configure Log Shipper SIEM Mappings for Google SecOps
- Go to Log Shipper > SIEM Mappings
 - Click Add SIEM Mapping.
 - Enter the following details:
- Source Configuration: select Netskope CLS plugin.
 - Destination Configuration: select the Google SecOps plugin.
 - Business Rule: select the rule you created earlier.
 - Click Save.
 
 
Validate pulling and workflow of Events and Alerts in Netskope
- Go to Logging in Netskope Cloud Exchange.
 - Search for the pulled logs.
 - In Logging, search for ingested events & alerts with the filter message contains ingested.
 - The ingested logs will be filtered.
 
UDM Mapping Table
| Log Field | UDM Mapping | Logic | 
|---|---|---|
applicationType | 
security_result.detection_fields[].key: "applicationType"security_result.detection_fields[].value: applicationType | 
Directly mapped from the corresponding CEF field. | 
appcategory | 
security_result.category_details[]: appcategory | 
Directly mapped from the corresponding CEF field. | 
browser | 
security_result.detection_fields[].key: "browser"security_result.detection_fields[].value: browser | 
Directly mapped from the corresponding CEF field. | 
c-ip | 
principal.asset.ip[]: c-ipprincipal.ip[]: c-ip | 
Directly mapped from the corresponding JSON field. | 
cci | 
security_result.detection_fields[].key: "cci"security_result.detection_fields[].value: cci | 
Directly mapped from the corresponding CEF field. | 
ccl | 
security_result.confidence: Derived valuesecurity_result.confidence_details: ccl | 
security_result.confidence is derived based on the value of ccl: "excellent" or "high" maps to HIGH_CONFIDENCE, "medium" maps to MEDIUM_CONFIDENCE, "low" or "poor" maps to LOW_CONFIDENCE, and "unknown" or "not_defined" maps to UNKNOWN_CONFIDENCE.security_result.confidence_details is directly mapped from ccl. | 
clientBytes | 
network.sent_bytes: clientBytes | 
Directly mapped from the corresponding CEF field. | 
cs-access-method | 
additional.fields[].key: "accessMethod"additional.fields[].value.string_value: cs-access-method | 
Directly mapped from the corresponding JSON field. | 
cs-app | 
additional.fields[].key: "x-cs-app"additional.fields[].value.string_value: cs-appprincipal.application: cs-app | 
Directly mapped from the corresponding JSON field. | 
cs-app-activity | 
additional.fields[].key: "x-cs-app-activity"additional.fields[].value.string_value: cs-app-activity | 
Directly mapped from the corresponding JSON field. | 
cs-app-category | 
additional.fields[].key: "x-cs-app-category"additional.fields[].value.string_value: cs-app-category | 
Directly mapped from the corresponding JSON field. | 
cs-app-cci | 
additional.fields[].key: "x-cs-app-cci"additional.fields[].value.string_value: cs-app-cci | 
Directly mapped from the corresponding JSON field. | 
cs-app-ccl | 
additional.fields[].key: "x-cs-app-ccl"additional.fields[].value.string_value: cs-app-ccl | 
Directly mapped from the corresponding JSON field. | 
cs-app-from-user | 
additional.fields[].key: "x-cs-app-from-user"additional.fields[].value.string_value: cs-app-from-userprincipal.user.email_addresses[]: cs-app-from-user | 
Directly mapped from the corresponding JSON field. | 
cs-app-instance-id | 
additional.fields[].key: "x-cs-app-instance-id"additional.fields[].value.string_value: cs-app-instance-id | 
Directly mapped from the corresponding JSON field. | 
cs-app-object-name | 
additional.fields[].key: "x-cs-app-object-name"additional.fields[].value.string_value: cs-app-object-name | 
Directly mapped from the corresponding JSON field. | 
cs-app-object-type | 
additional.fields[].key: "x-cs-app-object-type"additional.fields[].value.string_value: cs-app-object-type | 
Directly mapped from the corresponding JSON field. | 
cs-app-suite | 
additional.fields[].key: "x-cs-app-suite"additional.fields[].value.string_value: cs-app-suite | 
Directly mapped from the corresponding JSON field. | 
cs-app-tags | 
additional.fields[].key: "x-cs-app-tags"additional.fields[].value.string_value: cs-app-tags | 
Directly mapped from the corresponding JSON field. | 
cs-bytes | 
network.sent_bytes: cs-bytes | 
Directly mapped from the corresponding JSON field. | 
cs-content-type | 
additional.fields[].key: "sc-content-type"additional.fields[].value.string_value: cs-content-type | 
Directly mapped from the corresponding JSON field. | 
cs-dns | 
target.asset.hostname[]: cs-dnstarget.hostname: cs-dns | 
Directly mapped from the corresponding JSON field. | 
cs-host | 
target.asset.hostname[]: cs-hosttarget.hostname: cs-host | 
Directly mapped from the corresponding JSON field. | 
cs-method | 
network.http.method: cs-method | 
Directly mapped from the corresponding JSON field. | 
cs-referer | 
network.http.referral_url: cs-referer | 
Directly mapped from the corresponding JSON field. | 
cs-uri | 
additional.fields[].key: "cs-uri"additional.fields[].value.string_value: cs-uri | 
Directly mapped from the corresponding JSON field. | 
cs-uri-path | 
additional.fields[].key: "x-cs-uri-path"additional.fields[].value.string_value: cs-uri-path | 
Directly mapped from the corresponding JSON field. | 
cs-uri-port | 
additional.fields[].key: "cs-uri-port"additional.fields[].value.string_value: cs-uri-port | 
Directly mapped from the corresponding JSON field. | 
cs-uri-scheme | 
network.application_protocol: cs-uri-scheme | 
Directly mapped from the corresponding JSON field after converting to uppercase. | 
cs-user-agent | 
network.http.parsed_user_agent: Parsed user agentnetwork.http.user_agent: cs-user-agent | 
network.http.parsed_user_agent is derived by parsing the cs-user-agent field using the "parseduseragent" filter. | 
cs-username | 
principal.user.userid: cs-username | 
Directly mapped from the corresponding JSON field. | 
date | 
metadata.event_timestamp.seconds: Epoch seconds from date and time fieldsmetadata.event_timestamp.nanos: 0 | 
The date and time are combined and converted to epoch seconds and nanoseconds. Nanoseconds are set to 0. | 
device | 
intermediary.hostname: device | 
Directly mapped from the corresponding CEF field. | 
dst | 
target.ip[]: dst | 
Directly mapped from the corresponding CEF field. | 
dst_country | 
target.location.country_or_region: dst_country | 
Directly mapped from the corresponding grokked field. | 
dst_ip | 
target.asset.ip[]: dst_iptarget.ip[]: dst_ip | 
Directly mapped from the corresponding grokked field. | 
dst_location | 
target.location.city: dst_location | 
Directly mapped from the corresponding grokked field. | 
dst_region | 
target.location.state: dst_region | 
Directly mapped from the corresponding grokked field. | 
dst_zip | 
Not mapped | This field is not mapped to the UDM. | 
duser | 
target.user.email_addresses[]: dusertarget.user.user_display_name: duser | 
Directly mapped from the corresponding CEF field. | 
dvchost | 
about.hostname: dvchosttarget.asset.hostname[]: dvchosttarget.hostname: dvchost | 
Directly mapped from the corresponding CEF field. | 
event_timestamp | 
metadata.event_timestamp.seconds: event_timestamp | 
Directly mapped from the corresponding grokked field. | 
hostname | 
target.asset.hostname[]: hostnametarget.hostname: hostname | 
Directly mapped from the corresponding CEF field. | 
IncidentID | 
security_result.detection_fields[].key: "IncidentID"security_result.detection_fields[].value: IncidentID | 
Directly mapped from the corresponding CEF field. | 
intermediary | 
intermediary: intermediary | 
Directly mapped from the corresponding CEF field. | 
md5 | 
target.file.md5: md5 | 
Directly mapped from the corresponding CEF field. | 
message | 
Various UDM fields | The message field is parsed based on whether it contains "CEF".  If it does, it's treated as a CEF log. Otherwise, it's parsed as either a space-delimited string or JSON.  See the "Parsing Logic" section for details. | 
mime_type1 | 
Not mapped | This field is not mapped to the UDM. | 
mime_type2 | 
Not mapped | This field is not mapped to the UDM. | 
mwDetectionEngine | 
additional.fields[].key: "mwDetectionEngine"additional.fields[].value.string_value: mwDetectionEngine | 
Directly mapped from the corresponding CEF field. | 
mwType | 
metadata.description: mwType | 
Directly mapped from the corresponding CEF field. | 
os | 
principal.platform: Derived value | 
The platform is derived from the os field: "Windows" maps to WINDOWS, "MAC" maps to MAC, and "LINUX" maps to LINUX. | 
page | 
network.http.referral_url: page | 
Directly mapped from the corresponding CEF field. | 
port | 
Not mapped | This field is not mapped to the UDM. | 
referer | 
network.http.referral_url: referer | 
Directly mapped from the corresponding CEF field. | 
requestClientApplication | 
network.http.parsed_user_agent: Parsed user agentnetwork.http.user_agent: requestClientApplication | 
network.http.parsed_user_agent is derived by parsing the requestClientApplication field using the "parseduseragent" filter. | 
request_method | 
network.http.method: request_method | 
Directly mapped from the corresponding grokked field. | 
request_protocol | 
Not mapped | This field is not mapped to the UDM. | 
rs-status | 
additional.fields[].key: "rs-status"additional.fields[].value.string_value: rs-statusnetwork.http.response_code: rs-status | 
Directly mapped from the corresponding JSON field. | 
s-ip | 
target.asset.ip[]: s-iptarget.ip[]: s-ip | 
Directly mapped from the corresponding JSON field. | 
sc-bytes | 
network.received_bytes: sc-bytes | 
Directly mapped from the corresponding JSON field. | 
sc-content-type | 
additional.fields[].key: "sc-content-type"additional.fields[].value.string_value: sc-content-type | 
Directly mapped from the corresponding JSON field. | 
sc-status | 
network.http.response_code: sc-status | 
Directly mapped from the corresponding JSON field. | 
serverBytes | 
network.received_bytes: serverBytes | 
Directly mapped from the corresponding CEF field. | 
sha256 | 
target.file.sha256: sha256 | 
Directly mapped from the corresponding CEF field. | 
src | 
principal.ip[]: src | 
Directly mapped from the corresponding CEF field. | 
src_country | 
principal.location.country_or_region: src_country | 
Directly mapped from the corresponding grokked field. | 
src_ip | 
principal.asset.ip[]: src_ipprincipal.ip[]: src_ip | 
Directly mapped from the corresponding grokked field. | 
src_latitude | 
Not mapped | This field is not mapped to the UDM. | 
src_location | 
principal.location.city: src_location | 
Directly mapped from the corresponding grokked field. | 
src_longitude | 
Not mapped | This field is not mapped to the UDM. | 
src_region | 
principal.location.state: src_region | 
Directly mapped from the corresponding grokked field. | 
src_zip | 
Not mapped | This field is not mapped to the UDM. | 
suser | 
principal.user.user_display_name: suser | 
Directly mapped from the corresponding CEF field. | 
target_host | 
target.asset.hostname[]: target_hosttarget.hostname: target_host | 
Directly mapped from the corresponding grokked field. | 
time | 
metadata.event_timestamp.seconds: Epoch seconds from date and time fieldsmetadata.event_timestamp.nanos: 0 | 
The date and time are combined and converted to epoch seconds and nanoseconds. Nanoseconds are set to 0. | 
timestamp | 
metadata.event_timestamp.seconds: timestamp | 
Directly mapped from the corresponding CEF field. | 
ts | 
metadata.event_timestamp.seconds: Epoch seconds from tsmetadata.event_timestamp.nanos: 0 | 
The timestamp is converted to epoch seconds and nanoseconds. Nanoseconds are set to 0. | 
url | 
target.url: url | 
Directly mapped from the corresponding CEF field. | 
user_agent | 
network.http.parsed_user_agent: Parsed user agentnetwork.http.user_agent: user_agent | 
network.http.parsed_user_agent is derived by parsing the user_agent field using the "parseduseragent" filter. | 
user_ip | 
Not mapped | This field is not mapped to the UDM. | 
user_key | 
principal.user.email_addresses[]: user_key | 
Directly mapped from the corresponding grokked field. | 
version | 
Not mapped | This field is not mapped to the UDM. | 
x-c-browser | 
additional.fields[].key: "x-c-browser"additional.fields[].value.string_value: x-c-browser | 
Directly mapped from the corresponding JSON field. | 
x-c-browser-version | 
additional.fields[].key: "x-c-browser-version"additional.fields[].value.string_value: x-c-browser-version | 
Directly mapped from the corresponding JSON field. | 
x-c-country | 
principal.location.country_or_region: x-c-country | 
Directly mapped from the corresponding JSON field. | 
x-c-device | 
additional.fields[].key: "x-c-device"additional.fields[].value.string_value: x-c-device | 
Directly mapped from the corresponding JSON field. | 
x-c-latitude | 
principal.location.region_coordinates.latitude: x-c-latitude | 
Directly mapped from the corresponding JSON field. | 
x-c-local-time | 
security_result.detection_fields[].key: "x-c-local-time"security_result.detection_fields[].value: x-c-local-time | 
Directly mapped from the corresponding JSON field. | 
x-c-location | 
principal.location.name: x-c-location | 
Directly mapped from the corresponding JSON field. | 
x-c-longitude | 
principal.location.region_coordinates.longitude: x-c-longitude | 
Directly mapped from the corresponding JSON field. | 
x-c-os | 
principal.platform: Derived value | 
The platform is derived from the x-c-os field: "Windows" maps to WINDOWS, "MAC" maps to MAC, and "LINUX" maps to LINUX. | 
x-c-region | 
principal.location.state: x-c-region | 
Directly mapped from the corresponding JSON field. | 
x-c-zipcode | 
additional.fields[].key: "x-c-zipcode"additional.fields[].value.string_value: x-c-zipcode | 
Directly mapped from the corresponding JSON field. | 
x-category | 
additional.fields[].key: "x-category"additional.fields[].value.string_value: x-category | 
Directly mapped from the corresponding JSON field. | 
x-category-id | 
additional.fields[].key: "x-category-id"additional.fields[].value.string_value: x-category-id | 
Directly mapped from the corresponding JSON field. | 
x-cs-access-method | 
additional.fields[].key: "accessMethod"additional.fields[].value.string_value: x-cs-access-method | 
Directly mapped from the corresponding JSON field. | 
x-cs-app | 
principal.application: x-cs-appadditional.fields[].key: "x-cs-app"additional.fields[].value.string_value: x-cs-app | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-activity | 
additional.fields[].key: "x-cs-app-activity"additional.fields[].value.string_value: x-cs-app-activity | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-category | 
additional.fields[].key: "x-cs-app-category"additional.fields[].value.string_value: x-cs-app-category | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-cci | 
additional.fields[].key: "x-cs-app-cci"additional.fields[].value.string_value: x-cs-app-cci | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-from-user | 
additional.fields[].key: "x-cs-app-from-user"additional.fields[].value.string_value: x-cs-app-from-user | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-object-id | 
additional.fields[].key: "x-cs-app-object-id"additional.fields[].value.string_value: x-cs-app-object-id | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-object-name | 
additional.fields[].key: "x-cs-app-object-name"additional.fields[].value.string_value: x-cs-app-object-name | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-object-type | 
additional.fields[].key: "x-cs-app-object-type"additional.fields[].value.string_value: x-cs-app-object-type | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-suite | 
additional.fields[].key: "x-cs-app-suite"additional.fields[].value.string_value: x-cs-app-suite | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-tags | 
additional.fields[].key: "x-cs-app-tags"additional.fields[].value.string_value: x-cs-app-tags | 
Directly mapped from the corresponding JSON field. | 
x-cs-app-to-user | 
additional.fields[].key: "x-cs-app-to-user"additional.fields[].value.string_value: x-cs-app-to-user | 
Directly mapped from the corresponding JSON field. | 
x-cs-dst-ip | 
security_result.detection_fields[].key: "x-cs-dst-ip"security_result.detection_fields[].value: x-cs-dst-iptarget.asset.ip[]: x-cs-dst-iptarget.ip[]: x-cs-dst-ip | 
Directly mapped from the corresponding JSON field. | 
x-cs-dst-port | 
security_result.detection_fields[].key: "x-cs-dst-port"security_result.detection_fields[].value: x-cs-dst-porttarget.port: x-cs-dst-port | 
Directly mapped from the corresponding JSON field. | 
x-cs-http-version | 
security_result.detection_fields[].key: "x-cs-http-version"security_result.detection_fields[].value: x-cs-http-version | 
Directly mapped from the corresponding JSON field. | 
x-cs-page-id | 
additional.fields[].key: "x-cs-page-id"additional.fields[].value.string_value: x-cs-page-id | 
Directly mapped from the corresponding JSON field. | 
x-cs-session-id | 
network.session_id: x-cs-session-id | 
Directly mapped from the corresponding JSON field. | 
x-cs-site | 
additional.fields[].key: "x-cs-site"additional.fields[].value.string_value: x-cs-site | 
Directly mapped from the corresponding JSON field. | 
x-cs-sni | 
network.tls.client.server_name: x-cs-sni | 
Directly mapped from the corresponding JSON field. | 
x-cs-src-ip | 
principal.asset.ip[]: x-cs-src-ipprincipal.ip[]: x-cs-src-ipsecurity_result.detection_fields[].key: "x-cs-src-ip"security_result.detection_fields[].value: x-cs-src-ip | 
Directly mapped from the corresponding JSON field. | 
x-cs-src-ip-egress | 
principal.asset.ip[]: x-cs-src-ip-egressprincipal.ip[]: x-cs-src-ip-egresssecurity_result.detection_fields[].key: "x-cs-src-ip-egress"security_result.detection_fields[].value: x-cs-src-ip-egress | 
Directly mapped from the corresponding JSON field. | 
x-cs-src-port | 
principal.port: x-cs-src-portsecurity_result.detection_fields[].key: "x-cs-src-port"security_result.detection_fields[].value: x-cs-src-port | 
Directly mapped from the corresponding JSON field. | 
x-cs-ssl-cipher | 
network.tls.cipher: x-cs-ssl-cipher | 
Directly mapped from the corresponding JSON field. | 
x-cs-ssl-fronting-error | 
security_result.detection_fields[].key: "x-cs-ssl-fronting-error"security_result.detection_fields[].value: x-cs-ssl-fronting-error | 
Directly mapped from the corresponding JSON field. | 
x-cs-ssl-handshake-error | 
security_result.detection_fields[].key: "x-cs-ssl-handshake-error"security_result.detection_fields[].value: x-cs-ssl-handshake-error | 
Directly mapped from the corresponding JSON field. | 
x-cs-ssl-ja3 | 
network.tls.client.ja3: x-cs-ssl-ja3 | 
Directly mapped from the corresponding JSON field. | 
x-cs-ssl-version | 
network.tls.version: x-cs-ssl-version | 
Directly mapped from the corresponding JSON field. | 
x-cs-timestamp | 
metadata.event_timestamp.seconds: x-cs-timestamp | 
Directly mapped from the corresponding JSON field. | 
x-cs-traffic-type | 
additional.fields[].key: "trafficType"additional.fields[].value.string_value: x-cs-traffic-type | 
Directly mapped from the corresponding JSON field. | 
x-cs-tunnel-src-ip | 
security_result.detection_fields[].key: "x-cs-tunnel-src-ip"security_result.detection_fields[].value: x-cs-tunnel-src-ip | 
Directly mapped from the corresponding JSON field. | 
x-cs-uri-path | 
additional.fields[].key: "x-cs-uri-path"additional.fields[].value.string_value: x-cs-uri-path | 
Directly mapped from the corresponding JSON field. | 
x-cs-url | 
target.url: x-cs-url | 
Directly mapped from the corresponding JSON field. | 
x-cs-userip | 
security_result.detection_fields[].key: "x-cs-userip"security_result.detection_fields[].value: x-cs-userip | 
Directly mapped from the corresponding JSON field. | 
x-other-category | 
security_result.category_details[]: x-other-category | 
Directly mapped from the corresponding JSON field. | 
x-other-category-id | 
security_result.detection_fields[].key: "x-other-category-id"security_result.detection_fields[].value: x-other-category-id | 
Directly mapped from the corresponding JSON field. | 
x-policy-action | 
security_result.action: Derived valuesecurity_result.action_details: x-policy-action | 
security_result.action is derived by converting x-policy-action to uppercase. If the uppercase value is "ALLOW" or "BLOCK", it's used directly. Otherwise, it's not mapped.security_result.action_details is directly mapped from x-policy-action. | 
x-policy-dst-host | 
security_result.detection_fields[].key: "x-policy-dst-host"security_result.detection_fields[].value: x-policy-dst-host | 
Directly mapped from the corresponding JSON field. | 
x-policy-dst-host-source | 
security_result.detection_fields[].key: "x-policy-dst-host-source"security_result.detection_fields[].value: x-policy-dst-host-source | 
Directly mapped from the corresponding JSON field. | 
x-policy-dst-ip | 
security_result.detection_fields[].key: "x-policy-dst-ip"security_result.detection_fields[].value: x-policy-dst-ip | 
Directly mapped from the corresponding JSON field. | 
x-policy-name | 
security_result.rule_name: x-policy-name | 
Directly mapped from the corresponding JSON field. | 
x-policy-src-ip | 
security_result.detection_fields[].key: "x-policy-src-ip"security_result.detection_fields[].value: x-policy-src-ip | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-enddate | 
network.tls.server.certificate.not_after.seconds: Epoch seconds from x-r-cert-enddate | 
The date is converted to epoch seconds. | 
x-r-cert-expired | 
additional.fields[].key: "x-r-cert-expired"additional.fields[].value.string_value: x-r-cert-expired | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-incomplete-chain | 
additional.fields[].key: "x-r-cert-incomplete-chain"additional.fields[].value.string_value: x-r-cert-incomplete-chain | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-issuer-cn | 
network.tls.server.certificate.issuer: x-r-cert-issuer-cn | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-mismatch | 
additional.fields[].key: "x-r-cert-mismatch"additional.fields[].value.string_value: x-r-cert-mismatch | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-revoked | 
additional.fields[].key: "x-r-cert-revoked"additional.fields[].value.string_value: x-r-cert-revoked | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-self-signed | 
additional.fields[].key: "x-r-cert-self-signed"additional.fields[].value.string_value: x-r-cert-self-signed | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-startdate | 
network.tls.server.certificate.not_before.seconds: Epoch seconds from x-r-cert-startdate | 
The date is converted to epoch seconds. | 
x-r-cert-subject-cn | 
network.tls.server.certificate.subject: x-r-cert-subject-cn | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-untrusted-root | 
additional.fields[].key: "x-r-cert-untrusted-root"additional.fields[].value.string_value: x-r-cert-untrusted-root | 
Directly mapped from the corresponding JSON field. | 
x-r-cert-valid | 
additional.fields[].key: "x-r-cert-valid"additional.fields[].value.string_value: x-r-cert-valid | 
Directly mapped from the corresponding JSON field. | 
x-request-id | 
additional.fields[].key: "requestId"additional.fields[].value.string_value: x-request-id | 
Directly mapped from the corresponding JSON field. | 
x-rs-file-category | 
additional.fields[].key: "x-rs-file-category"additional.fields[].value.string_value: x-rs-file-category | 
Directly mapped from the corresponding JSON field. | 
x-rs-file-type | 
additional.fields[].key: "x-rs-file-type"additional.fields[].value.string_value: x-rs-file-type | 
Directly mapped from the corresponding JSON field. | 
x-s-country | 
target.location.country_or_region: x-s-country | 
Directly mapped from the corresponding JSON field. | 
x-s-dp-name | 
additional.fields[].key: "x-s-dp-name"additional.fields[].value.string_value: x-s-dp-name | 
Directly mapped from the corresponding JSON field. | 
x-s-latitude | 
target.location.region_coordinates.latitude: x-s-latitude | 
Directly mapped from the corresponding JSON field. | 
x-s-location | 
target.location.name: x-s-location | 
Directly mapped from the corresponding JSON field. | 
x-s-longitude | 
target.location.region_coordinates.longitude: x-s-longitude | 
Directly mapped from the corresponding JSON field. | 
x-s-region | 
target.location.state: x-s-region | 
Directly mapped from the corresponding JSON field. | 
x-s-zipcode | 
additional.fields[].key: "x-s-zipcode"additional.fields[].value.string_value: x-s-zipcode | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-cipher | 
security_result.detection_fields[].key: "x-sr-ssl-cipher"security_result.detection_fields[].value: x-sr-ssl-cipher | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-client-certificate-error | 
security_result.detection_fields[].key: "x-sr-ssl-client-certificate-error"security_result.detection_fields[].value: x-sr-ssl-client-certificate-error | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-engine-action | 
security_result.detection_fields[].key: "x-sr-ssl-engine-action"security_result.detection_fields[].value: x-sr-ssl-engine-action | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-engine-action-reason | 
security_result.detection_fields[].key: "x-sr-ssl-engine-action-reason"security_result.detection_fields[].value: x-sr-ssl-engine-action-reason | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-handshake-error | 
security_result.detection_fields[].key: "x-sr-ssl-handshake-error"security_result.detection_fields[].value: x-sr-ssl-handshake-error | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-ja3s | 
network.tls.server.ja3s: x-sr-ssl-ja3s | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-malformed-ssl | 
security_result.detection_fields[].key: "x-sr-ssl-malformed-ssl"security_result.detection_fields[].value: x-sr-ssl-malformed-ssl | 
Directly mapped from the corresponding JSON field. | 
x-sr-ssl-version | 
security_result.detection_fields[].key: "x-sr-ssl-version"security_result.detection_fields[].value: x-sr-ssl-version | 
Directly mapped from the corresponding JSON field. | 
x-s-custom-signing-ca-error | 
security_result.detection_fields[].key: "x-s-custom-signing-ca-error"security_result.detection_fields[].value: x-s-custom-signing-ca-error | 
Directly mapped from the corresponding JSON field. | 
x-ssl-bypass | 
security_result.detection_fields[].key: "SSL BYPASS"security_result.detection_fields[].value: x-ssl-bypass or x-ssl-bypass-reason | 
If x-ssl-bypass is "Yes" and x-ssl-bypass-reason is present, the value of x-ssl-bypass-reason is used. Otherwise, the value of x-ssl-bypass is used. | 
x-ssl-policy-action | 
security_result.detection_fields[].key: "x-ssl-policy-action"security_result.detection_fields[].value: x-ssl-policy-action | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-categories | 
security_result.category_details[]: x-ssl-policy-categories | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-dst-host | 
security_result.detection_fields[].key: "x-ssl-policy-dst-host"security_result.detection_fields[].value: x-ssl-policy-dst-host | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-dst-host-source | 
security_result.detection_fields[].key: "x-ssl-policy-dst-host-source"security_result.detection_fields[].value: x-ssl-policy-dst-host-source | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-dst-ip | 
security_result.detection_fields[].key: "x-ssl-policy-dst-ip"security_result.detection_fields[].value: x-ssl-policy-dst-ip | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-name | 
security_result.rule_name: x-ssl-policy-name | 
Directly mapped from the corresponding JSON field. | 
x-ssl-policy-src-ip | 
security_result.detection_fields[].key: "x-ssl-policy-src-ip"security_result.detection_fields[].value: x-ssl-policy-src-ip | 
Directly mapped from the corresponding JSON field. | 
x-sr-dst-ip | 
security_result.detection_fields[].key: "x-sr-dst-ip"security_result.detection_fields[].value: x-sr-dst-ip | 
Directly mapped from the corresponding JSON field. | 
x-sr-dst-port | 
security_result.detection_fields[].key: "x-sr-dst-port"security_result.detection_fields[].value: x-sr-dst-port | 
Directly mapped from the corresponding JSON field. | 
x-type | 
additional.fields[].key: "xType"additional.fields[].value.string_value: x-type | 
Directly mapped from the corresponding JSON field. | 
x-transaction-id | 
additional.fields[].key: "transactionId"additional.fields[].value.string_value: x-transaction-id | 
Directly mapped from the corresponding JSON field. | 
| N/A | metadata.vendor_name: "Netskope" | 
Hardcoded value in the parser. | 
| N/A | metadata.product_name: "Netskope Webproxy" | 
Set to "Netskope Webproxy" if not already present. | 
| N/A | metadata.log_type: "NETSKOPE_WEBPROXY" | 
Hardcoded value in the parser. | 
Need more help? Get answers from Community members and Google SecOps professionals.