zscaler_zpa: fix handling of multiple remote IPs, and event categorisation#13755
zscaler_zpa: fix handling of multiple remote IPs, and event categorisation#13755efd6 merged 1 commit intoelastic:mainfrom
Conversation
…ation ZScaler appears to sometimes send events with multiple remote IPs. So split the list an raise client.ip to an array if this is the case. The Zscaler ZPA documentation does not make clear what the semantics of this case are, so we bend the ECS a little here. Also fix handling of event.type and event.category to ensure that they agree with ECS definitions, and add event.outcome mappings.
💔 Build Failed
Failed CI StepsHistorycc @efd6 |
|
Pinging @elastic/security-service-integrations (Team:Security-Service Integrations) |
| - split: | ||
| field: client.ip | ||
| separator: ', *' | ||
| if: ctx.client?.ip instanceof String && ctx.client.ip.contains(',') |
There was a problem hiding this comment.
I think having a list of client.ip/ source.ip will prevent us from using geoip processor on them. Maybe we should find the public IP among the 2 IPs and populate just with it?
There was a problem hiding this comment.
I'm following this up to see if there is a known behaviour we can rely on to do this.
There was a problem hiding this comment.
@StellaFreyju can you provide some insight here? I understand that the first element of the array is the public IP address, but that the second may be somewhat public. I do not think that it is a good idea to do geoip look-ups on both, but doing it on the first element seems fine; users interested in the second (and subsequent) addresses can do look-ups in an @custom pipeline. Does this sound reasonable to you?
|
@kcreddy I haven't had a response, so I would like to merge this either as is. PTAL |
|
Package zscaler_zpa - 1.22.2 containing this change is available at https://epr.elastic.co/package/zscaler_zpa/1.22.2/ |
* main: (42 commits) [jamf_pro] Fix `flattened` field types for non-object values (elastic#13985) [Netskope Alerts] Add text multi-field to netskope.alerts.breach.description field (elastic#13977) zscaler_zia: add strict field template mode for tcp and http_endpoint input data streams (elastic#13904) apm: Add config for tail-based sampling discard on write (elastic#13950) [CI] Add dev/coverage into backport script (elastic#13987) Update configuration updatecli for 8.x snapshot (elastic#13981) [Prometheus] Add username, password, and SSL related fields for query dataset (elastic#13969) o365: Ignore failures in rename processors for organization fields (elastic#13983) aws.firewall: Document ingested log types of AWS Network Firewall (elastic#13978) mimecast: resolve field data type conflicts between data streams (elastic#13825) [Infoblox NIOS] Handle the parsing of IPv6 address (elastic#13947) [Cribl] Fix handling of metric event type (elastic#13930) zscaler_zpa: fix handling of multiple remote IPs, and event categorisation (elastic#13755) Adding agentless deployment to the sublime security integration (elastic#13963) [integration/system] add use_performance_counters in system integration (elastic#13150) crowdstrike,m365_defender,microsoft_defender_{cloud,endpoint},sentinel_one: normalise severity handling (elastic#13955) [forgerock] Map `forgerock.response.elapsedTime` as a long not a date (elastic#13959) github: squelch errors from pagination ends (elastic#13965) cisco_secure_endpoint: squelch errors from pagination ends (elastic#13964) [Cloud Security] Cloud Asset Inventory: fixed cloud formation URL (elastic#13971) ...
* feature/use-google-secrets: (43 commits) use -ci account [jamf_pro] Fix `flattened` field types for non-object values (#13985) [Netskope Alerts] Add text multi-field to netskope.alerts.breach.description field (#13977) zscaler_zia: add strict field template mode for tcp and http_endpoint input data streams (#13904) apm: Add config for tail-based sampling discard on write (#13950) [CI] Add dev/coverage into backport script (#13987) Update configuration updatecli for 8.x snapshot (#13981) [Prometheus] Add username, password, and SSL related fields for query dataset (#13969) o365: Ignore failures in rename processors for organization fields (#13983) aws.firewall: Document ingested log types of AWS Network Firewall (#13978) mimecast: resolve field data type conflicts between data streams (#13825) [Infoblox NIOS] Handle the parsing of IPv6 address (#13947) [Cribl] Fix handling of metric event type (#13930) zscaler_zpa: fix handling of multiple remote IPs, and event categorisation (#13755) Adding agentless deployment to the sublime security integration (#13963) [integration/system] add use_performance_counters in system integration (#13150) crowdstrike,m365_defender,microsoft_defender_{cloud,endpoint},sentinel_one: normalise severity handling (#13955) [forgerock] Map `forgerock.response.elapsedTime` as a long not a date (#13959) github: squelch errors from pagination ends (#13965) cisco_secure_endpoint: squelch errors from pagination ends (#13964) ...
…ation (elastic#13755) ZScaler appears to sometimes send events with multiple remote IPs. So split the list an raise client.ip to an array if this is the case. The Zscaler ZPA documentation does not make clear what the semantics of this case are, so we bend the ECS a little here. Also fix handling of event.type and event.category to ensure that they agree with ECS definitions, and add event.outcome mappings.
Proposed commit message
Checklist
changelog.ymlfile.Author's Checklist
How to test this PR locally
Related issues
Screenshots