This page has been updated to align with the new Grail security events table. For the complete list of updates and actions needed to accomplish the migration, follow the steps in the Grail security table migration guide.
Ingest Microsoft Defender for Cloud security events and analyze them in Dynatrace.
Dynatrace integration with Microsoft Defender for Cloud CNAPP platform allows users to unify and contextualize vulnerability findings across DevSecOps tools and products, enabling central prioritization, visualization, and automation of security findings.
In the initial version of this integration, we bring container image vulnerability assessments (part of the Microsoft Defender for Containers plan), powered by Microsoft Defender Vulnerability Management capabilities.
Visualize and report your current security posture and trends around security findings across environments with
Dashboards.
Analyze and prioritize security findings across multiple tools and products uniformly with
Notebooks.
Create notifications and tickets for critical security findings with
Workflows.
Use security findings as an additional dimension for threat hunting and incident forensics using Security Investigator.
See below for the Microsoft Defender for Cloud and Dynatrace requirements.
Permissions:
storage:security.events:read.Tokens:
openpipeline.events_security scope and save it for later. For details, see Dynatrace API - Tokens and authentication.
Microsoft Defender for Cloud continuously exports security findings to Azure Event Hubs.
An Azure Function app pre-processes the events and sends them to Dynatrace, taking advantage of the OpenPipeline dedicated security events ingest endpoint.
The fetched data is mapped to the Dynatrace Semantic Dictionary.
Data is stored in Grail in a unified format, in a default bucket called default_securityevents. For details, see Built-in Grail buckets.
Once you ingest your Microsoft Defender for Cloud data into Grail, you can monitor your data in the app (in Dynatrace, go to Settings > Microsoft Defender for Cloud).

You can view
A chart of ingested data from all existing connections over time
A table with information about your connections
You can create your own dashboards or use our templates to visualize and analyze container vulnerability findings.
You can create your own workflows or use our templates to automate and orchestrate container vulnerability findings.
You can query ingested data in
Notebooks or Security Investigator
, using the data format in Semantic Dictionary.
You can evaluate, triage, and investigate detection findings with
Threats & Exploits.
Threats & Exploits.To stop sending events to Dynatrace
This removes the Dynatrace resources created for this integration.
For billing information, see Events powered by Grail.
Vulnerability finding events store the individual vulnerability findings reported by Microsoft Defender for Cloud per container image and component.
Vulnerability scan events indicate coverage of scans for individual container images.
The container_image namespace is added to store all the container image-related information with the following fields:
container_image.digest represents the container image digest; this value can be used to match to the runtime containers
container_image.repository represents the container repository name
container_image.registry represents the container registry name
container_image.tags represents the labeled versions of the container images
CONTAINER_IMAGE: All the findings from Microsoft Defender for Cloud are generated by vulnerability assessments of container images set with CONTAINER_IMAGE value in the object.type field, and the container_image namespace is added.
Dynatrace normalizes severity and risk scores for all findings ingested through the current integration. This helps you to prioritize findings consistently, regardless of their source.
For details on how normalization works, see Severity and score normalization.
dt.security.risk.level is mapped directly from the severity level set by Microsoft Defender for Cloud.
dt.security.risk.score is mapped directly from the severity score set by Microsoft Defender for Cloud.
dt.security.risk.level (mapped from finding.severity) | dt.security.risk.score (mapped from finding.score) |
|---|---|
| Critical -> CRITICAL | 9.0-10.0 |
| High -> HIGH | 7.0-8.9 |
| Medium -> MEDIUM | 4.0-6.9 |
| Low -> LOW | 0.1-3.9 |
| Unknown, None -> NONE | 0.0 |