如何配置Azure SQL DB仅存储登录登出事件至AZUREDIAGNOSTICS并查询
Azure SQL PaaS 登录/登出审计配置与查询方案
1. 配置仅捕获登录/登出事件到AZUREDIAGNOSTICS表
你之前未捕获到登录登出事件,核心原因是服务器级审计策略未勾选对应事件类别,按以下步骤调整:
- 登录Azure门户,找到目标Azure SQL Server
- 左侧导航栏进入「安全」→「审计」
- 确认已启用服务器级审计,且目标为Log Analytics工作区
- 点击「编辑设置」,在「审计事件」区域:
- 取消所有默认勾选的非必要事件类别
- 仅保留:成功的登录、失败的登录、登出(对应底层事件标识
SUCCESSFUL_LOGINS、FAILED_LOGINS、LOGOUTS)
- 保存配置,等待10-15分钟生效,之后只有这些指定事件会写入AZUREDIAGNOSTICS表
2. 从AZUREDIAGNOSTICS查询登录/登出日志的Kusto语句
查询所有登录事件(成功+失败)
AZUREDIAGNOSTICS | where ResourceType == "SQLSERVERS" | where Category == "SQLSecurityAuditEvents" | where operationName in ("SUCCESSFUL_LOGINS", "FAILED_LOGINS") | project 时间 = TimeGenerated, 事件类型 = OperationName, SQL服务器名 = resource_name, 数据库名 = tostring(parse_json(AdditionalProperties).database_name), 登录账号 = tostring(parse_json(AdditionalProperties).server_principal_name), 客户端IP = tostring(parse_json(AdditionalProperties).client_ip), 会话ID = tostring(parse_json(AdditionalProperties).session_id) | sort by 时间 desc
查询登出事件
AZUREDIAGNOSTICS | where ResourceType == "SQLSERVERS" | where Category == "SQLSecurityAuditEvents" | where operationName == "LOGOUTS" | project 时间 = TimeGenerated, 事件类型 = OperationName, SQL服务器名 = resource_name, 数据库名 = tostring(parse_json(AdditionalProperties).database_name), 登录账号 = tostring(parse_json(AdditionalProperties).server_principal_name), 会话ID = tostring(parse_json(AdditionalProperties).session_id) | sort by 时间 desc
说明:如果
AdditionalProperties解析失败,可先执行AZUREDIAGNOSTICS | where Category == "SQLSecurityAuditEvents" | take 10 | project AdditionalProperties查看原始字段结构,调整解析逻辑。
内容的提问来源于stack exchange,提问作者TATAS
相关产品推荐
相关产品推荐

