Copy-ready starting points for Entra sign-in, Intune, Defender, and audit. Adjust table names for your workspace.
Failed interactive sign-ins
Entra sign-in logs. Adjust TimeGenerated.
SigninLogs
| where TimeGenerated > ago(24h)
| where ResultType != "0"
| summarize failures=count() by UserPrincipalName, ResultType, ResultDescription, AppDisplayName, IPAddress
| order by failures desc
Sign-ins without MFA
AuthenticationDetails may vary by workspace.
SigninLogs
| where TimeGenerated > ago(7d)
| where ResultType == "0"
| extend mfa = tostring(parse_json(AuthenticationDetails)[0].authenticationMethod)
| where AuthenticationRequirement != "multiFactorAuthentication"
| summarize count() by UserPrincipalName, AppDisplayName, ClientAppUsed
Conditional Access failures
Useful when a CA policy looks noisy.
SigninLogs
| where TimeGenerated > ago(24h)
| mv-expand CAP = ConditionalAccessPolicies
| where CAP.result in ("failure", "reportOnlyFailure")
| summarize hits=count() by tostring(CAP.displayName), tostring(CAP.result), UserPrincipalName
| order by hits desc
Intune devices by OS and ownership
Requires Intune diagnostic / device tables in the workspace.
IntuneDevices
| where TimeGenerated > ago(1d)
| summarize arg_max(TimeGenerated, *) by DeviceId
| summarize count() by OS, Ownership, JoinType
Win32 app install failures
Table names differ between tenants. Start here then pivot.
IntuneOperationalLogs
| where TimeGenerated > ago(7d)
| where Result != "Success"
| summarize count() by AppName, Result, ErrorCode, DeviceName
| order by count_ desc
Defender alerts last 24h
Microsoft 365 Defender Advanced Hunting.
AlertInfo
| where Timestamp > ago(24h)
| summarize count() by Title, Severity, Category
| order by count_ desc
Device logons (Defender)
DeviceLogonEvents in Advanced Hunting.
DeviceLogonEvents
| where Timestamp > ago(24h)
| where ActionType == "LogonFailed"
| summarize failures=count() by DeviceName, AccountName, LogonType
| order by failures desc
Directory role changes
Entra audit logs.
AuditLogs
| where TimeGenerated > ago(7d)
| where OperationName has_any ("Add member to role", "Add eligible member to role")
| project TimeGenerated, OperationName, InitiatedBy, TargetResources, Result
| order by TimeGenerated desc