This toolkit supports the six-part Azure Security Telemetry series. It is deliberately practical: use it to start a review, validate assumptions, and adapt the patterns to your own subscriptions, workspaces, Sentinel deployment, Defender XDR portal, and Defender for Cloud configuration.
It is not a Microsoft standard. The scorecard included here is Chris Hailes’s practitioner framework for measuring whether Azure security telemetry is useful during real investigations, not merely collected.
Series articles
- Azure Security Telemetry: Start with the Control Plane
- Collecting Azure Resource Logs Without Creating Noise
- Designing Microsoft Sentinel Around Normalized Signals
- Using Defender XDR Advanced Hunting as a Cross-Domain Lens
- Turning Defender for Cloud Findings into Operational Signals
- Operating Azure Security Telemetry as a Product
Prerequisites and boundaries
- Azure Activity Log routed to a Log Analytics workspace where the
AzureActivitytable is available. - Resource diagnostic settings deployed to the services that matter for your investigation scenarios.
- Microsoft Sentinel enabled where ASIM parsers and normalized hunting content are used.
- Microsoft Defender XDR advanced hunting access in the Defender portal for identity, endpoint, cloud app, and alert-evidence queries.
- Defender for Cloud enabled with continuous export configured to Log Analytics where
SecurityAlertandSecurityRecommendationare queried. - Tenant-specific validation before production use. Category groups, diagnostic categories, table availability, and Defender XDR schema coverage vary by service, license, connector, and portal integration state.
Control-plane reconstruction KQL
Use this in Azure Monitor Logs or Microsoft Sentinel against the AzureActivity table. It reconstructs security-relevant management operations with caller, correlation, operation, target, result, and timing context.
| |
Assumptions: AzureActivity contains subscription-level or management group level events that have been routed to the workspace. CorrelationId groups events from the same broader action, while OperationId identifies the operation event. Use Authorization_d, Claims_d, and Properties_d where available rather than parsing legacy string fields.
Tiered diagnostic-settings Bicep pattern
This sample shows a resource-class pattern, not a universal diagnostic policy. It uses Microsoft.Insights/diagnosticSettings@2021-05-01-preview, the Audit category group for mandatory evidence, and allLogs for a conditional investigative tier when a service and cost model justify it.
| |
Adaptation guidance: do not copy this blindly across resource providers. First list the diagnostic categories and category groups supported by the target resource type, then decide which categories are mandatory evidence and which are conditional investigation support. Use Azure Policy DeployIfNotExists for scale and drift control, but keep per-resource-class decisions visible in the baseline.
ASIM-aligned Sentinel normalization example
This query uses the Microsoft Sentinel ASIM authentication filtering parser. It is intended for workspaces where authentication sources are onboarded through supported ASIM parsers.
| |
Assumptions: the parser returns ASIM fields such as EventType, EventResult, EventStartTime, EventEndTime, TargetUsername, TargetUserId, LogonMethod, SrcIpAddr, and EventProduct. Validate parser output with known events before promoting the query to an analytic rule.
Defender XDR advanced hunting examples
These examples run in Microsoft Defender XDR advanced hunting, not Azure Monitor Logs. Use them to add identity, device, cloud app, and alert-evidence context around Azure investigations. Do not assume direct joins to AzureActivity inside Defender XDR unless Microsoft Sentinel tables are onboarded into the Defender portal and visible to your role.
Identity and cloud-app context for privileged activity
| |
Endpoint process context around a suspicious administrator
| |
Alert evidence for Azure or cloud-resource entities
| |
Defender for Cloud continuous export
For scale, prefer the Microsoft built-in Azure Policy definitions for continuous export:
ffb6f416-7bd2-4488-8828-56585fef2be9deploys export to a Log Analytics workspace for Defender for Cloud alerts and recommendations.cdfcce10-4578-4ecd-9703-530938e4abcbdeploys export to Event Hubs for Defender for Cloud alerts and recommendations.
Where you manage the automation resource directly, this Bicep pattern exports alerts, recommendations, recommendation snapshots, secure score, and attack paths to a Log Analytics workspace. Validate event-source selection and filters in a non-production subscription before broad assignment.
| |
Query exported recommendations and alerts from Log Analytics:
| |
| |
Hailes Telemetry Utility Score
The Hailes Telemetry Utility Score is a reusable practitioner scorecard for Azure security telemetry. It measures whether telemetry reduces uncertainty during investigation, not whether a team has collected the most data.
Score each dimension from 0 to 5:
| Dimension | What good looks like |
|---|---|
| Completeness | Critical subscriptions, identities, resources, Defender findings, and response paths are represented. |
| Freshness | Data arrives fast enough for the response decision it supports. |
| Accuracy | Fields are mapped correctly, parsers are tested, and source semantics are understood. |
| Accessibility and coverage | The right teams can query the right workspaces, tables, and portals without over-privilege. |
| Cost efficiency | Ingestion and retention spend are tied to detection, investigation, assurance, or response value. |
| Tamper resilience | Diagnostic settings, workspaces, exports, retention, and administrative paths are protected and monitored. |
Formula:
| |
Thresholds:
| Score | Interpretation |
|---|---|
| 85-100 | Operationally dependable for the assessed scenario. |
| 70-84 | Useful, but one or two dimensions can still break an investigation. |
| 50-69 | Partial visibility; suitable for backlog prioritization, not assurance. |
| Below 50 | Collection exists, but the scenario is not defensible. |
Example: a production privileged-access scenario scores completeness 4, freshness 4, accuracy 3, accessibility 4, cost efficiency 3, and tamper resilience 2. The score is 66.7. That does not mean the telemetry program failed; it means the next investment should be tamper resilience and parser validation, not another dashboard.
Limitations
- KQL examples are starting points. Test against your own tables, connector versions, table retention, parser coverage, and role permissions.
AzureActivity,SecurityAlert, andSecurityRecommendationschemas are documented by Microsoft, but individual fields can be empty depending on provider, connector, export path, and event type.- Diagnostic category groups are not universal. Validate supported categories per resource type before assigning policy or Bicep modules at scale.
- Defender XDR advanced hunting tables depend on deployed Defender services, licensing, data availability, portal integration, and role access.
- Continuous export requires Defender for Cloud enablement, target write permissions, workspace solution requirements, and tenant-aware design for cross-tenant destinations.