如何通过Log Analytics查询容器与Blob的创建/删除操作人
Azure存储容器/Blob操作及操作人查询方案
为什么看不到容器创建者?
当操作是通过存储账户密钥或共享访问签名(SAS)执行时,StorageBlobLogs中的Identity字段不会填充具体操作人信息,只有通过Azure AD身份验证(比如用户账户、服务主体)执行的操作,才会在该字段记录操作人的身份标识。
容器与Blob增删操作查询语句
以下语句可筛选目标存储账户的容器创建/删除、Blob创建/删除操作,并尽可能提取操作人信息:
StorageBlobLogs where AccountName =~ 'tester1234567' and OperationName in~ ('CreateContainer', 'DeleteContainer', 'PutBlob', 'DeleteBlob') project 操作时间 = TimeGenerated, 存储账户名 = AccountName, 操作类型 = OperationName, 容器名 = ContainerName, Blob名称 = iff(OperationName in~ ('PutBlob', 'DeleteBlob'), ObjectKey, ''), 操作人 = case( isnotempty(Identity), Identity, isnotempty(CallerIpAddress), strcat('IP地址: ', CallerIpAddress), '未知(使用账户密钥/SAS执行)' ), 请求状态码 = StatusCode, 请求ID = RequestId
语句说明
OperationName筛选了核心操作:容器创建(CreateContainer)、容器删除(DeleteContainer)、Blob创建(PutBlob)、Blob删除(DeleteBlob)Blob名称仅在Blob操作时从ObjectKey字段提取,容器操作时留空操作人字段分三种情况展示:- Azure AD身份操作:直接显示
Identity字段中的用户/服务主体标识 - 密钥/SAS操作:显示调用者的IP地址,并标注操作方式
- 其他未知情况:显示通用提示
- Azure AD身份操作:直接显示
额外提示
如果需要获取更详细的Azure AD操作人信息(比如用户名),需确保存储账户的Azure AD身份验证日志也已同步到Log Analytics。若要确保每次操作都能记录明确操作人,建议禁用存储账户密钥和SAS,强制所有操作通过Azure AD身份验证执行。
内容的提问来源于stack exchange,提问作者sysadmincrispy
相关产品推荐
相关产品推荐

