如何在Azure SQL Database中通过Log Analytics获取用户登录信息
Azure SQL Database通过Log Analytics采集用户登录信息方案
可行性结论
需求可正常实现,无需调用Azure SQL Database内部的Sys schema相关对象,通过你已列出的诊断日志类别中的InstanceAndAppAdvanced类别即可完成用户登录信息的采集。
具体实现操作步骤
- 配置诊断日志上报规则
进入目标Azure SQL Database的「诊断设置」管理页面,新增诊断配置项:- 日志类别仅需勾选
InstanceAndAppAdvanced即可满足登录信息采集需求 - 日志导出目标选择「发送到Log Analytics工作区」,绑定你用于存储日志的目标工作区
- 保存配置后,等待5~10分钟即可完成日志流初始化,开始上报登录相关事件
- 日志类别仅需勾选
- 从Log Analytics中提取登录记录
进入绑定的Log Analytics工作区,打开「日志」查询界面,执行以下Kusto查询语句,即可过滤出完整的用户登录记录:
AzureDiagnostics // 过滤指定日志类别 | where Category == "InstanceAndAppAdvanced" // 过滤登录类型事件 | where operation_name_s == "LOGIN" // 输出需要的核心字段,可根据需求增删 | project 登录发生时间 = TimeGenerated, 登录用户名 = server_principal_name_s, 客户端IP地址 = client_ip_s, 目标数据库名称 = database_name_s, 客户端应用名称 = application_name_s, 登录操作结果 = action_name_s, 错误详情(仅失败时有值) = message_s
如果你只需要查询登录失败的记录,可以在查询语句中额外添加过滤条件:| where action_name_s == "LOGIN FAILED"。
- 可选拓展配置
如果你需要对登录日志做长期留存或者对接第三方审计系统,可以在诊断设置中额外配置将日志同步到Azure存储账户、事件中心,全程不需要修改Azure SQL Database的内部配置。
注意事项
InstanceAndAppAdvanced类别除登录事件外,还包含权限变更、角色调整等安全类操作事件,你可以通过operation_name_s字段过滤你需要的事件类型即可- 日志从Azure SQL Database上报到Log Analytics存在最多15分钟的延迟,属于平台正常传输逻辑
- 整个采集流程完全基于Azure平台层面的日志能力实现,不会占用Azure SQL Database的运行资源,也不需要访问任何数据库内部的系统视图对象。
内容的提问来源于stack exchange,提问作者Brahmaiah Takkellapati
相关产品推荐
相关产品推荐

