Skip to content

zscaler_zpa: fix handling of multiple remote IPs, and event categorisation #13755

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

efd6
Copy link
Contributor

@efd6 efd6 commented May 1, 2025

Proposed commit message

zscaler_zpa: fix handling of multiple remote IPs, and event categorisation

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.

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

Author's Checklist

  • [ ]

How to test this PR locally

Related issues

Screenshots

@efd6 efd6 added Integration:zscaler_zpa Zscaler Private Access bugfix Pull request that fixes a bug issue Team:Security-Service Integrations Security Service Integrations team [elastic/security-service-integrations] labels May 1, 2025
@efd6 efd6 self-assigned this May 1, 2025
…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.
@efd6 efd6 force-pushed the 13754-zscaler_zpa branch from a1a6de7 to 1c9eae2 Compare May 1, 2025 20:41
@elasticmachine
Copy link

elasticmachine commented May 1, 2025

💔 Build Failed

Failed CI Steps

History

cc @efd6

@efd6 efd6 marked this pull request as ready for review May 1, 2025 21:19
@efd6 efd6 requested a review from a team as a code owner May 1, 2025 21:19
@elasticmachine
Copy link

Pinging @elastic/security-service-integrations (Team:Security-Service Integrations)

Comment on lines +263 to +266
- split:
field: client.ip
separator: ', *'
if: ctx.client?.ip instanceof String && ctx.client.ip.contains(',')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm following this up to see if there is a known behaviour we can rely on to do this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugfix Pull request that fixes a bug issue Integration:zscaler_zpa Zscaler Private Access Team:Security-Service Integrations Security Service Integrations team [elastic/security-service-integrations]
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Zscaler Private Access]: audit data stream does not tolerate remoteIP lists
3 participants