代码改变世界

SQLSserver审计用户登录成功或失败信息

2022-12-18 11:26  abce  阅读(1411)  评论(0编辑  收藏  举报

SQLServer可以审计登录成功和失败的信息,这取决于我们的需要,只要通过SQL Server Management Studio设置即可。
打开对象管理器,右击SQLServer,选中属性:

选中"安全性",可以看到登录审计提供了四个功能选项:
·不审计
·只审计失败的信息
·只审计成功的信息
·同时审计失败和成功的信息

登录审计的设置实际上是一个注册表项,根据SQL Server版本和SQL Server实例名的不同而有所不同。不过,sqlserver只是在启动的时候才会读取这些配置,所以要想设置生效,需要重启实例。

对于这些设置,你至少要在生产环境设置审计登录失败的情形。在某些情况下,可能需要审计成功的登录,但是要意识到,审计成功的登录可能会生成大量需要筛选的事件。在极其敏感的系统上,具有这种级别的控制是非常重要的。但是,在不太关键的系统上,最好只审计失败的登录,这样就不会被大量事件搞得不知所措。如果有日志管理解决方案,请务必对两者进行审计。

开启审计后,下一步就可以查看审计日志了。第一个可以查看的地方是sqlserver的日志。比如:

如果想通过使用T-SQL来查看,有一个没有提供文档,但是又众所周知的存储过程,xp_readerrorlog。
可以通过该存储过程,找出日志信息:

EXEC xp_readerrorlog;

可以通过增加参数来查看:0表示查看当前日志,数字表示之后的当前之后的日志。比如如果你想看第三个日志,就要写成:EXEC xp_readerrorlog 2

查看当前的日志,且只返回错误的记录:

EXEC sp_readerrorlog 0, 1, 'Login failed'

这里:0表示当前errorlog;1表示日志类型(1=SQL Error Log);第三个参数指定检索的消息。


另一个地方是查看操作系统的应用事件日志(Application event log)。这里就不做介绍了。