[Azure Logs] Add dedicated aadgraphactivitylogs data stream#18880
[Azure Logs] Add dedicated aadgraphactivitylogs data stream#18880terrancedejesus wants to merge 9 commits intomainfrom
Conversation
Adds the azure.aadgraphactivitylogs data stream to ingest the AzureADGraphActivityLogs diagnostic category from Microsoft Entra ID, parallel to azure.graphactivitylogs for Microsoft Graph. Without this, AAD Graph events fall through to azure.platformlogs and the AAD-Graph-specific properties survive only inside event.original.
This comment has been minimized.
This comment has been minimized.
efd6
left a comment
There was a problem hiding this comment.
Please update the proposed commit message so that it's something that can be used in context of git; no Markdown, appropriately wrapped etc.
For example based on the current code here (update as needed):
azure: add aadgraphactivitylogs data stream
Add a dedicated data stream for the AzureADGraphActivityLogs
diagnostic category from Microsoft Entra ID. Without this,
legacy Azure AD Graph (graph.windows.net) events fall through
to the platformlogs catch-all and lose schema-aware parsing.
The events router maps routing.category ==
"AzureADGraphActivityLogs" to the new dataset. The ingest
pipeline extracts ECS fields: event.action from HTTP method +
URI collection, event.outcome from response status,
event.category [iam, web], and related.user including the
OAuth app_id for client correlation.
Legacy AAD Graph is still actively used by Microsoft first-party
tooling, older line-of-business apps, and adversary tooling
(ROADtools, AzureHound v1, AADInternals). The dedicated dataset
makes these events available for detection rules and dashboards.
|
@efd6 proposed commit message updated. Thank you! |
|
The build is complaining:
I think you will need to add a line before this. Who will be the owner of this data stream? |
Yes, I noticed the buildkite fail related to owners. There are a few owners across the Azure package data streams it seems so I am not sure what team should be the owner/maintainer? I assume since these are the legacy data stream for Microsoft Graph and it was provisioned to write threat detection rules on, we mirror that so @elastic/security-service-integrations? |
This comment has been minimized.
This comment has been minimized.
🚀 Benchmarks reportTo see the full report comment with |
💚 Build Succeeded
History
|
There was a problem hiding this comment.
This file shouldn't be here, because the log input isn't used. It should be removed for all data streams. If you don't want to include that in this PR, at least don't add the new one.
There was a problem hiding this comment.
There was a problem hiding this comment.
The list of data streams in the README should be updated.
If it's intended that this data stream has its own item in the integrations browser, separate from the full integration, as is the case for several of the other data streams, then there should be a policy template entry in the top level manifest, and an extra file of documentation in _dev/build/docs/.
There was a problem hiding this comment.
This pipeline does match about half the other pipelines with the same name:
find -name 'azure-shared-pipeline.yml' | xargs md5sum | sort
28624170d9ba87d593c9aef7dd72284a ./data_stream/application_gateway/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
28624170d9ba87d593c9aef7dd72284a ./data_stream/firewall_logs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
352b4a0232fcf818b45a174958b161e8 ./data_stream/identity_protection/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
352b4a0232fcf818b45a174958b161e8 ./data_stream/provisioning/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
8fb30aa0822189b990f17ba026aeb928 ./data_stream/platformlogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/aadgraphactivitylogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/activitylogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/auditlogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/eventhub/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/graphactivitylogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/signinlogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
d9d42c87fb050f4264f140fe5c4fddd0 ./data_stream/springcloudlogs/elasticsearch/ingest_pipeline/azure-shared-pipeline.yml
It's a good time to use the new links functionality, at least for the ones that do still match.
| dynamic_fields: | ||
| # This can be removed after ES 8.14 is the minimum version. | ||
| # Relates: https://github.com/elastic/elasticsearch/pull/105689 | ||
| url.extension: '^.*$' |
There was a problem hiding this comment.
Looks like 8.19 is the minimum, so this comment's advice can be followed.
| type: keyword | ||
| description: | | ||
| Result signature. | ||
| - name: properties |
There was a problem hiding this comment.
Are all the fields documented in https://learn.microsoft.com/en-us/azure/azure-monitor/reference/tables/aadgraphactivitylogs retained here or mapped to common fields outside of this prefix or to ECS fields?
There was a problem hiding this comment.
It would be helpful for future maintenance if that API doc was linked either in the README or in a comment in the ingest pipeline.
There was a problem hiding this comment.
The description in data_stream/events/manifest.yml, starting with
Collect all the supported (see list below) Azure logs from Event Hub to a target data stream.
✨ New in version 1.20.0+: by enabling this integration, you can collect all the logs from the following Azure services and route them to the appropriate data stream:
should also be updated.
TL;DRBuildkite failed before tests ran because the PR checkout hook hit a GitHub remote Remediation
Investigation detailsRoot CauseThe failing step is Relevant code path:
The PR changes are focused on Azure package files/CODEOWNERS and do not modify Buildkite hooks, which supports this being infra/transient rather than a PR logic/config bug. Evidence
Verification
Follow-upIf the retry succeeds, no PR code change is needed. If repeated 500s continue across builds, treat as persistent CI infrastructure issue and add fetch retry logic in the hook. What is this? | From workflow: PR Buildkite Detective Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not. |
Adds the
azure.aadgraphactivitylogsdata stream to ingest theAzureADGraphActivityLogsdiagnostic category from Microsoft Entra ID, parallel toazure.graphactivitylogsfor Microsoft Graph. Without this, AAD Graph events fall through toazure.platformlogsand the AAD-Graph-specific properties survive only insideevent.original.Proposed commit message
Checklist
changelog.ymlfile.Author's Checklist
elastic-package checkpasses;elastic-package test pipeline -d aadgraphactivitylogspasses.logs-azure.events-defaultare correctly rerouted tologs-azure.aadgraphactivitylogs-defaultwith full ECS field extraction.How to test this PR locally
Optional end-to-end:
https://localhost:5601(user/pass)logs-azure.aadgraphactivitylogs-*event.action,event.outcome,http.*,url.path,azure.aadgraphactivitylogs.properties.*, andrelated.userall populate.Related issues
Screenshots
Pipeline tests passing locally
Discover view of the new dataset with ECS-parsed events
Expanded document showing the full ECS field tree