Azure Database审计未捕获登录失败,求助排查原因
Azure SQL数据库登录失败审计抓不到DBAF事件?先查这几点
先排查配置层面的问题
别搞混服务器级和数据库级审计
登录失败(DBAF)属于服务器级操作,如果你只配置了数据库级审计,大概率抓不到这个事件——数据库级审计只能捕获库内的操作,服务器端的登录尝试不在它的覆盖范围内。必须配置服务器级审计策略,才能捕获这类跨数据库的登录事件。确认审计事件类别真的勾选对了
别光看信息框提示,要实打实检查审计设置里的事件:不管是服务器还是数据库级审计,都要确保勾选了「登录失败」(Failed logins)这个类别。有些版本里,“登录事件”组需要单独勾选,别漏了。看你的登录失败场景是不是特殊情况
- 如果用的是Azure AD账号登录失败,要确认审计策略有没有包含Azure AD登录事件的捕获选项;
- 如果是本地SQL账号,要是因为没有数据库访问权限导致失败,触发的可能不是DBAF,而是数据库内的权限拒绝事件,这类事件的action_id不是DBAF,得换个过滤条件查。
验证方法
- 先建一个服务器级审计策略,勾选「登录失败」,等15分钟(Azure审计日志有延迟)再触发登录失败操作,看看能不能抓到DBAF;
- 用这个查询直接查审计日志(替换成你的存储路径):
SELECT action_id, succeeded, session_server_principal_name, event_time FROM sys.fn_get_audit_file('https://<你的存储账户>.blob.core.windows.net/<容器>/<审计文件路径>', DEFAULT, DEFAULT) WHERE action_id IN ('DBAS', 'DBAF') ORDER BY event_time DESC;
- 检查账号权限:如果你的目标账号只是数据库用户,没有服务器级登录名,那登录失败可能是服务器端直接拒绝,这时候得确认服务器级审计有没有覆盖这类情况。
是不是bug?
如果上面的排查都做了,服务器级审计还是抓不到DBAF,那可能是Azure SQL的服务问题。先去Azure状态页看看有没有相关故障,要是没有就提交支持工单,把审计配置截图、失败事件的时间戳和账号信息给微软工程师,让他们查。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

