如何通过CLI/查询/PowerShell查看Azure Policy近期变更?
查看Azure Policy近期变更的方法
使用Azure CLI
通过活动日志查询策略相关的创建/更新操作,执行以下命令:
az monitor activity-log list --resource-provider "Microsoft.Authorization" --operation-name "Microsoft.Authorization/policyAssignments/write" "Microsoft.Authorization/policyDefinitions/write" "Microsoft.Authorization/policySetDefinitions/write" --start-time [YYYY-MM-DDTHH:MM:SSZ] --end-time [YYYY-MM-DDTHH:MM:SSZ]
- 替换
[YYYY-MM-DDTHH:MM:SSZ]为目标时间范围,比如查询过去24小时可使用--start-time $(date -d '24 hours ago' --utc +%Y-%m-%dT%H:%M:%SZ) - 返回结果包含变更时间、操作人、目标资源ID及变更详情,覆盖策略分配、自定义策略定义、策略集定义的变更
使用PowerShell
利用Get-AzActivityLog筛选策略相关操作记录:
Get-AzActivityLog -StartTime (Get-Date).AddDays(-1) -EndTime (Get-Date) | Where-Object { $_.ResourceProviderName.Value -eq "Microsoft.Authorization" -and ($_.OperationName.Value -in "Microsoft.Authorization/policyAssignments/write", "Microsoft.Authorization/policyDefinitions/write", "Microsoft.Authorization/policySetDefinitions/write") } | Select-Object EventTimestamp, Caller, OperationName, ResourceId, Properties
- 默认查询过去1天的记录,可通过调整
AddDays(-1)修改时间范围 - 结果会精简展示关键变更信息,便于快速核查
使用Azure Monitor日志查询
若订阅已配置Log Analytics工作区并收集活动日志,可运行以下Kusto查询:
AzureActivity | where ResourceProviderValue == "Microsoft.Authorization" | where OperationNameValue in ("Microsoft.Authorization/policyAssignments/write", "Microsoft.Authorization/policyDefinitions/write", "Microsoft.Authorization/policySetDefinitions/write") | where TimeGenerated > ago(1d) | project TimeGenerated, Caller, OperationNameValue, ResourceId, Properties
ago(1d)表示查询过去1天的数据,可改为ago(12h)等调整时间范围- 该查询支持批量筛选和聚合变更记录,适合大规模环境排查
内容的提问来源于stack exchange,提问作者Sunil Sharma
相关产品推荐
相关产品推荐

