如何查询Azure存储账户ACL变更记录、操作人及操作时间?
问题结论
存储账户的ACL变更操作无法在Azure活动日志中查询到,你之前的查询路径有误,和你所持有的Resource Group Admin、Resource Group User角色权限无关。
为什么活动日志里看不到ACL变更记录
Azure活动日志默认只收录Azure Resource Manager控制平面的操作,你看到的Create role assignment类RBAC权限变更就属于控制平面操作。
存储ACL分为两类,日志归属完全不同:
- 存储账户网络防火墙、公共访问开关这类账户级访问控制配置属于控制平面,操作会进活动日志
- 容器、目录、Blob级别的访问ACL(包括你提到的给Tom授予的访问权限,以及通过Azure门户、Storage Explorer执行的POSIX ACL/对象级ACL修改)属于存储数据平面操作,不会同步到活动日志,哪怕是你自己执行的操作也不会出现在活动日志列表里。
ACL变更日志的正确查询路径
- 首先确认目标存储账户已经开启Azure Monitor资源日志(原Storage Analytics日志):如果之前未开启该功能,无法追溯开启前的历史操作记录。开启时需要确保勾选记录「写入」类操作,ACL修改属于写入类操作。
- 日志会投递到你配置的目标位置,对应查询方式如下:
- 如果投递到Log Analytics工作区,直接执行如下KQL查询即可定位针对Tom的授权记录:
查询结果里的StorageBlobLogs | where OperationName in ("SetAccessControl", "SetAcl") | extend ParsedAcl = parse_json(ResponseBody) | where tostring(ParsedAcl) has "Tom" | project OperationTime = TimeGenerated, OperatorAccount = RequesterUpn, OperatorObjectId = RequesterObjectId, OperatorIP = CallerIpAddress, TargetPath = Uri, OperationResult = ResponseCode | sort by OperationTime descOperatorAccount就是执行授权操作的账号,OperationTime就是授权时间,不管操作是通过Azure门户、Storage Explorer还是其他工具调用存储API执行,都会被完整记录。- 如果日志投递到存储账户自带的
$logs系统容器,可以按日期目录下载对应时段的日志文本,搜索操作名为SetAccessControl/SetAcl的条目,字段含义和上述Log Analytics查询结果一致。
补充排查点
如果你查的是存储账户网络层面的ACL规则变更,不需要查数据平面日志,直接在活动日志里筛选操作名Microsoft.Storage/storageAccounts/write,展开操作详情的properties字段,找到networkAcls配置段的变更记录即可,操作人、操作时间都会在该条记录里标注。
你当前持有的资源组级角色默认具备查看存储资源日志的权限,只要你有日志投递目标(Log Analytics工作区、$logs容器)的读取权限,就能完成核查,不需要额外提升权限。
内容的提问来源于stack exchange,提问作者justacoincidence
相关产品推荐
相关产品推荐

