SQL Server 2008 引进了一种新的审核性能,它能使DBA追踪数据库的使用并进行详细审核。我们能在服务器和数据库上安装审核,在单独的数据库对象上激活并用各种不同的格式保存,如二进制文件或Windows Application日志。
在SQL Server 2008 里安装审核,步骤如下:
在这一技巧中,我将举例说名这些操作是怎么进行的。注意大多数情况下这些例子是基于Transact-SQL语句的。但是,这些步骤也能够用 SQL Server Management Studio 界面来执行。如果想了解更多有关SQL Server Management Studio 用法的信息,请查看 Microsoft SQL Server联机丛书。
第一步你应该在SQL Server 2008的一个实例上创建审核,这样就能创建一个SQL Server审核。审核就是为与数据库引擎相关的具体事件集合配置的安全对象。你可以在SQL Server 2008里的一个实例上创建多个审核。
在创建审核时,你必须给它指定一个名称和事件输出的目标位置。目标文件可以是二进制的文件、Windows Security日志或Windows Application日志。你还可以给审核对象指定一个或更多个可选参数。
你可以用CREATE SERVER AUDIT语句,如下所示:(注:详细的语法格式请参见 Create Server Audit语句)
1 USE master 2 GO 3 CREATE SERVER AUDIT AuditSample
4 TO FILE (FILEPATH='C:\Data', MAXSIZE=5 MB) 5 WITH (QUEUE_DELAY = 3000)
注意,你必须在主数据库master中创建一个审核,如上面代码中的第一行用于将数据库master设置为当前数据库。由于审核是和SQL Server实例相联系的,因此你不能在用户数据库中创建。
第三行的CREATE SERVER AUDIT语句仅规定审核名称(如AuditSample)。第四行的TO 子句确定事件输出时的目标位置。例如:我想将输出结果保存在文件中,所以我必须指定TO FILE并规定FILEPATH 值。注意这只是一个路径名。SQL Server将自动命名输出文件,如下所示:
1 <audit_name>_<audit_GUID>_<partition_number>.sqlaudit
在上面的例子中,TO FILE语句还包括了MAXSIZE参数,MAXSIZE参数将文件大小限制为5MB。该参数是TO FILE子句可选参数之一。如果你将审核数据迁到Windows应用程序日志(Application日志)或Windows安全日志(Security日志),你就只需要指定日志名选项,示例如下:
1 CREATE SERVER AUDIT AuditSample2 2 TO APPLICATION_LOG 3 WITH (QUEUE_DELAY = 3000)
就像你看到的一样,TO FILE子句已经被TO APPLICATION_LOG子句所替代并且还没有另外规定其他的参数。
最后一行在CREATE SERVER AUDIT 语句中的就是一个 WITH子句。该子句支持很多个选项,限制了创建审核的方法。在这种情况下,我们使用的是QUEUE_DELAY参数并将它的值设为3000。这个参数指定了在创建审核之前要耗费的毫秒数并且。默认数字为 1000 毫秒(即1秒)。
要了解所有CREATE SERVER AUDIT 语句可选择项和本篇文章中的其他语句,请查看Microsoft SQL Server联机丛书。
你创建SQL Server审核之后,必须创建一个服务器审核规范或者是一个数据库审核规范。一个服务器审核规范就是和具体的SQL Server审核相关的一个或多个服务审核。活动组就数据库引擎暴露出来的一组相关的事件。例如:我们在进行安全审核操作时,SERVER_OPERATION_GROUP行动组就出现了,如当用户在改变服务器设置时,你可以在每个审核上只创建一个服务器审核。但是,你可以对审核规范增加多个活动组。创建一个服务器审核规范,你需要在主数据库master上运行CREATE SERVER AUDIT SPECIFICATION,如下所示:(注:详细的语法格式请参见 Create Server Audit Specification 语句)
1 USE master 2 GO 3 CREATE SERVER AUDIT SPECIFICATION AuditSampleSpec 4 FOR SERVER AUDIT AuditSample 5 ADD (SUCCESSFUL_LOGIN_GROUP), 6 ADD (FAILED_LOGIN_GROUP) 7 WITH (STATE=ON)
第三行CREATE SERVER AUDIT SPECIFICATION语句规定了审核规范名(AuditSampleSpec)。第四行FOR SERVER AUDIT子句指定了与审核规范相关的审核名(AuditSample)。第五行和第六行增加了规范活动组的ADD 子句。在这种情况下,我增加了SUCCESSFUL_LOGIN_GROUP和FAILED_LOGIN_GROUP活动组,跟踪试图登录到SQL Server实例的安全主管。详细的活动组请查看 SQL Server 服务器级别审核操作组。
最后一行 CREATE SERVER AUDIT SPECIFICATION语句为WITH 子句。WITH 子句包括激活规范的在STATE参数。默认值不能激活审核规范(STATE=OFF)。如果你在创建时不能激活审核规范,你就必须过段时间再激活,在你能够审核活动组之前进行激活。
和服务器的审核规范不一样,数据库审核规范是具体针对数据库的。但是它和服务器审核规范相同的是,你可以增加审核活动组,但是它们仅仅针对数据库。此外,你可以给规范增加单独的审核活动。审核活动就是数据库具体的活动,如删除数据或运行存储程序。
创建数据库审核规范,在目标数据库中运行CREATE DATABASE AUDIT SPECIFICATION语句,例如::(注:详细的语法格式请参见 Create Database AuditSpecification 语句)
1 USE AdventureWorks2008 2 GO 3 CREATE DATABASE AUDIT SPECIFICATION AuditAdventureWorks2008Spec 4 FOR SERVER AUDIT AuditSample 5 ADD (DATABASE_OBJECT_CHANGE_GROUP), 6 ADD (SELECT, INSERT, UPDATE, DELETE 7 ON Schema::HumanResources BY dbo) 8 WITH (STATE=ON)
第三行CREATE DATABASE AUDIT SPECIFICATION语句指定了规范(AuditAdventureWorks2008Spec),第四行为FOR SERVER AUDIT 子句,用它可以判断和规范相关的审核,如本例中的AuditSample。接下来,我增加了一个审核活动组,在这里就是 DATABASE_OBJECT_CHANGE_GROUP。在对AdventureWorks2008 数据库执行CREATE、ALTER 或DROP语句时就会按照这个活动组将事件记入日志。 详细的活动组请查看 SQL Server 数据库审核操作组。
第二个ADD 子句制定了单独审核活动,而不是一个活动组。这样,审核活动就是SELECT、INSERT、UPDATE和 DELETE。但是你要注意,下面一行包含一个ON子句指定的HumanResources schema和dbo安全主管。结果,只要dbo在HumanResources schema中查询一个对象或在 AdventureWorks2008数据库中插入、更新或删除,SQL Server就会将事件记入日志。详细的活动组请查看 SQL Server 数据库审核操作。
例如:如下语句即对架构dbo中的Test表进行审核,包括查询和插入操作。
1 ADD ( SELECT, INSERT 2 ON Test BY dbo )
最后,CREATE DATABASE AUDIT SPECIFICATION语句中的最后一个子句就是WITH子句。跟上次一样,你可以在操作完之后就激活审核规范或者过一段时间之后再进行激活。
和我们刚刚回顾的审核规范一样,CREATE SERVER AUDIT 语句中的WITH子句并不支持STATE参数。也就是说你必须在单独的一步中激活审核,如下面的语句中所示:(注:详细的语法格式请参见 Alter Server Audit语句)
1 USE master 2 GO 3 ALTER SERVER AUDIT AuditSample
4 WITH (STATE=ON)
这里,我们使用ALTER SERVER AUDIT 语句启动之前创建的SQL Server审核(AuditSample)。ALTER SERVER AUDIT语句中的WITH子句支持被我设置成ON的STATE参数,SQL Server会审核这些具体事件。
你可以在 SQL Server Management Studio中用Log File Viewer查看审核数据。另外如果你创建SQL Server审核将事件保存到Application日志或者Security日志,这样你就可以用Event Viewer查看这些数据。我认为回顾事件信息最简单的方法就是将审核数据保存到一个二进制文件中,然后用Log File Viewer回顾这些数据。
要访问Log File Viewer,就要打开SQL Server Management Studio,扩展Security节点。接下来选择你要复习的审核,然后点击View Audit Log发送Log File Viewer。图1表示以上的例题中SQL Server Audit (SrvAudit)事件实例。
图1:在Log File Viewer中查看审核数据
以上就是安装审核以及回顾审核数据的步骤。SQL Server 2008让这些步骤比以前版本执行更加简单。你只需要简单创建SQL Server审核,并附上一到两个审核规范,然后激活。其余的工作都由SQL Server完成。要了解更多有关审核方面的信息,请查看微软SQL Server联机丛书。