随着IT技术的发展,安全与审计变的越来越重要。通过审计功能我们可以:
1.发现数据库滥用情况并且给予纠正
2.对于使用者进行审计(比如DBA是否访问不该访问的数据)
3.根据审计内容对数据进行还原
为了满足用户的审计需要,SQL Server提供了很多的审计功能,包括SQL Server defaulttrace,SQL Server Trigger, Server audit,Database aduit,C2 audit等等。在这几种工具里边C2 Audit使用的比较少,但是通过C2 Audit可以捕获非常详细的操作信息,这篇文章主要介绍一下C2 Audit.
SQL Server C2 Audit 是为了满足美国国防部针对计算机的安全访问的安全评级要求而引入的。 SQL C2Audit 可以记录shutdown,restart,成功和失败的Login,成功或者失败访问数据库对象,所欲数据定义的执行,数据访问的控制,数据操作的语句等的。Audit的内容包括操作时间,操作账户,事件,目标服务器名称,HOSTNAME,应用程序名,服务器Process ID,数据库名称等。
可以使用命令脚本或者SSMS UI启动C2 Audit:
sp_configure 'show advanced options', 1 ;
GO
RECONFIGURE ;
GO
sp_configure 'c2 audit mode', 1 ;
GO
RECONFIGURE ;
GO
注意:在启用C2 Audit之后需要重启SQL Server servcie生效。
重启之后可以查看Sys.trace,可以看到C2 Audit的记录.Trace文件默认保存在数据文件目录,大小为200MB。当Trace文件达到200MB以后会产生一个新的Trace文件。
需要注意的是如果SQL Server因为空间问题无法写入Trace Log时,SQL Server会停止。这种情况一下你可以使用-f 启动参数启动SQL Server从而放弃C2 Audit的设定。
查看C2 Audit的信息可以使用SQL Profiler或者::fn_trace_gettable函数
使用C2 Audit需要注意:
1. C2 Audit需要记录SQL Server的每一个操作,所以会降低数据库性能
2. C2 Audit会产生大量的文件可能导致磁盘空间不足。如果空间不足的话可能导致SQL Server服务停止。
综上如果你像要记录SQL Server详细的操作,C2 Audit是一个不错的选择。在启用的同时要考虑其他性能或者磁盘问题。