Azure审计日志功能咨询及完整活动日志导出方法求助
Azure审计日志配置与完整导出方案
关于Azure审计日志功能
Azure自带的**活动日志(Activity Log)**就是你需要的审计日志工具:
- 默认自动启用,无需额外配置,会记录订阅内所有资源的配置变更操作(如创建、修改、删除资源,角色分配变更等)。
- 支持在Azure门户直接查看,也可通过CLI、PowerShell或API导出为JSON、CSV等格式。
解决CLI导出日志的两个问题
1. 获取完整字段
默认az monitor activity-log list仅返回精简字段,要获取所有日志属性,需通过--query参数指定返回全部内容:
# 返回所有字段并输出为JSON az monitor activity-log list --output json --query "*"
如果需要自定义关键字段,可按需指定:
az monitor activity-log list --output json --query "[].{时间:eventTimestamp, 操作:operationName, 资源ID:resourceId, 执行者:caller, 状态:status, 详情:properties}"
2. 导出过去3个月的完整数据
Azure活动日志默认保留90天(刚好3个月),但CLI默认时间范围较短,需手动指定--start-time和--end-time:
手动指定时间(示例)
# 替换为实际的3个月前起始时间和当前结束时间 az monitor activity-log list --start-time 2024-02-20T00:00:00Z --end-time 2024-05-20T23:59:59Z --output json --query "*" > full-activity-logs.json
动态生成时间(Linux/macOS)
无需手动计算时间,用date命令自动生成3个月前的起始时间:
start_time=$(date -d "-3 months" +"%Y-%m-%dT00:00:00Z") end_time=$(date +"%Y-%m-%dT23:59:59Z") az monitor activity-log list --start-time $start_time --end-time $end_time --output json --query "*" > full-activity-logs.json
3. 仅筛选变更类操作
如果只需要资源变更相关日志,可通过--filter参数过滤操作类型,比如筛选所有写入、删除类操作:
az monitor activity-log list --start-time $start_time --end-time $end_time --filter "category eq 'Administrative' and (operationName contains 'write' or operationName contains 'delete' or operationName contains 'action')" --output json --query "*" > change-only-logs.json
4. 处理大日志量的分页问题
如果3个月日志量过大,CLI单次请求会触发分页,需用--max-items和--next-token遍历所有结果:
# 第一页,max-items可根据实际调整 az monitor activity-log list --start-time $start_time --end-time $end_time --output json --query "*" --max-items 1000 --next-token "" > activity-logs-part1.json
执行后会返回一个nextToken值,将其替换到下一次命令的--next-token参数中,重复执行直到没有更多数据。
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

