The Global Administrator Role Was Active for Only 17 Minutes
The security team checked the account.
It was not a Global Administrator.
No permanent privileged assignment appeared. Nothing obvious explained the administrative changes that had occurred overnight.
Then Agent Foskett stopped asking what access the user had now.
For seventeen minutes, the account had held one of the most powerful roles in the tenant.

Privilege Escalation Investigation
The role was gone when investigators looked. The evidence was not.
The account looked unprivileged
The privilege window
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
02:03 Suspicious sign-in 02:14 New MFA method registered 02:31 Global Administrator activated 02:36 Administrative change recorded 02:43 Second privileged action recorded 02:48 Global Administrator activation ended Privileged window: 17 minutes
Start with role-management activity
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AuditLogs
| where TimeGenerated > ago(7d)
| where Category =~ "RoleManagement"
| project TimeGenerated,
ActivityDisplayName,
Result,
InitiatedBy,
TargetResources,
AdditionalDetails
| order by TimeGenerated asc
Discover the PIM activity names in your tenant
- 1
- 2
- 3
- 4
- 5
- 6
- 7
AuditLogs
| where TimeGenerated > ago(30d)
| where Category =~ "RoleManagement"
| summarize Events = count()
by ActivityDisplayName, Result
| order by Events desc
Search for temporary privilege around the user
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
AuditLogs
| where TimeGenerated between (datetime(2026-08-15 02:00:00) .. datetime(2026-08-15 03:00:00))
| where Category =~ "RoleManagement"
| where tostring(TargetResources) has "alex.morgan@contoso.com"
or tostring(InitiatedBy) has "alex.morgan@contoso.com"
| project TimeGenerated,
ActivityDisplayName,
Result,
TargetResources,
InitiatedBy
| order by TimeGenerated asc
Do not stop when you find the activation
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AuditLogs
| where TimeGenerated between (datetime(2026-08-15 02:31:00) .. datetime(2026-08-15 02:48:00))
| where tostring(InitiatedBy) has "alex.morgan@contoso.com"
| project TimeGenerated,
Category,
ActivityDisplayName,
Result,
TargetResources
| order by TimeGenerated asc
Correlate the privilege with the sign-in
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
SigninLogs
| where TimeGenerated between (datetime(2026-08-15 02:00:00) .. datetime(2026-08-15 03:00:00))
| where UserPrincipalName =~ "alex.morgan@contoso.com"
| project TimeGenerated,
UserPrincipalName,
IPAddress,
AppDisplayName,
ConditionalAccessStatus,
ResultType,
CorrelationId
| order by TimeGenerated asc

