The Administrator Fixed the Setting — But Nobody Investigated Who Changed It
The risky setting had already been fixed.
An administrator found the problem.
Changed the configuration.
Confirmed the service was secure again.
The ticket could have been closed.
But Agent Foskett asked the question the remediation had not answered.
Who changed the setting in the first place?
A configuration can be repaired in seconds.
The reason it changed can matter for much longer.

Fixed Did Not Mean Explained.
Remediation restores the configuration. Investigation determines how it changed and whether the same identity changed anything else.
The technical problem was already gone
That made the environment safer.
It also meant the live setting could no longer explain how the exposure had occurred.
The investigation had to move from current state to historical evidence.
Start with the affected resource
Agent Foskett used those facts to search the Azure control-plane audit trail.
AzureActivity records subscription-level administrative activity, including many create, update and delete operations performed through Azure Resource Manager.Find configuration changes to the resource
AzureActivity to the affected resource and successful administrative operations around the suspected period. The exact operation depends on the resource and setting that changed.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
let TargetResource =
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.Network/networkSecurityGroups/nsg-prod";
AzureActivity
| where TimeGenerated > ago(14d)
| where ResourceId =~ TargetResource
| where ActivityStatusValue =~ "Success"
| project TimeGenerated,
OperationNameValue,
ActivityStatusValue,
Caller,
CallerIpAddress,
CorrelationId,
ResourceGroup,
ResourceId,
Properties
| order by TimeGenerated ascThe audit trail contained two important changes
A later operation aligned with the administrator fixing it.
The current resource showed only the safe state.
The activity history showed the transition.
Current configuration answers “what is true now?” Audit history helps answer “how did it become true?”
Identify the caller behind the original change
Caller, CallerIpAddress and CorrelationId became pivots for the wider investigation.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
let TargetResource =
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.Network/networkSecurityGroups/nsg-prod";
let ChangeStart = datetime(2026-10-05 00:00:00);
let ChangeEnd = datetime(2026-10-05 06:00:00);
AzureActivity
| where TimeGenerated between (ChangeStart .. ChangeEnd)
| where ResourceId =~ TargetResource
| where ActivityStatusValue =~ "Success"
| project TimeGenerated,
Caller,
CallerIpAddress,
OperationNameValue,
CorrelationId,
ResourceId,
Properties
| order by TimeGenerated ascAttribution was the beginning, not the conclusion
It does not automatically prove who was physically behind the keyboard or whether the action was malicious.
The account could have been used legitimately.
Its credentials could have been compromised.
An automation identity could have performed the change.
Agent Foskett attributed the operation first — then investigated the identity.
Look for other changes by the same caller
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
let SuspectCaller = "admin@contoso.com";
AzureActivity
| where TimeGenerated > ago(14d)
| where Caller =~ SuspectCaller
| project TimeGenerated,
OperationNameValue,
ActivityStatusValue,
CallerIpAddress,
ResourceGroup,
ResourceId,
CorrelationId
| order by TimeGenerated ascOne change became a sequence
Some operations were routine. Others occurred close to the risky change and deserved inspection.
Agent Foskett grouped them by time, source address, resource and correlation context rather than assuming every action was suspicious.
The question changed from “who changed this setting?” to “what did this identity do around the same time?”
Pivot on the correlation ID
CorrelationId. Agent Foskett used it as another pivot while interpreting it in the context of the relevant Azure service.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
let TargetCorrelationId =
"00000000-0000-0000-0000-000000000000";
AzureActivity
| where TimeGenerated > ago(14d)
| where CorrelationId == TargetCorrelationId
| project TimeGenerated,
OperationNameValue,
ActivityStatusValue,
Caller,
CallerIpAddress,
ResourceGroup,
ResourceId,
Properties
| order by TimeGenerated ascThen investigate the sign-in context
SigninLogs.Was the account signing in from an expected location and device?
Was MFA involved?
Were there unusual applications or Conditional Access results?
The Azure operation identified the identity used. Sign-in evidence helped establish the authentication context around that identity.
Correlate with Microsoft Entra sign-ins
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
let TargetUser = "admin@contoso.com";
let StartTime = datetime(2026-10-05 00:00:00);
let EndTime = datetime(2026-10-05 08:00:00);
SigninLogs
| where TimeGenerated between (StartTime .. EndTime)
| where UserPrincipalName =~ TargetUser
| project TimeGenerated,
UserPrincipalName,
IPAddress,
AppDisplayName,
ResourceDisplayName,
ResultType,
AuthenticationRequirement,
ConditionalAccessStatus,
DeviceDetail,
Location,
CorrelationId
| order by TimeGenerated ascRemediation had solved only half the problem
But if the original change resulted from compromised credentials, unsafe automation, excessive privilege or an unauthorised action, restoring the setting would leave the underlying cause untouched.
Remediation fixes the state. Investigation explains the cause.
Build the configuration-change timeline
What Agent Foskett checked
What the evidence can and cannot prove
AzureActivity can provide control-plane evidence such as the operation, caller, source IP context, affected resource and correlation information for supported Azure administrative activity.A caller field identifies the identity associated with the operation; it does not independently prove human intent or credential ownership at that moment.
SigninLogs can add authentication context when applicable, but temporal or IP correlation should be interpreted carefully.Attribution is built from multiple pieces of evidence — not from a username alone.
The lesson
The unsafe setting was corrected quickly.
But restoring the configuration was only remediation.
Agent Foskett went back to the audit trail because the unanswered question still mattered.
Do not close a security configuration incident just because the setting has been fixed. Find out why it changed.
Related investigations
Final thought
It cannot tell you why it was unsafe yesterday.
That answer lives in the history.
Agent Foskett did not stop when the setting was repaired. He followed the change back to the identity that made it.
The Logs Already Knew! 🔎

