《在SQL Server 2008中部署安全审计》由会员分享,可在线阅读,更多相关《在SQL Server 2008中部署安全审计(5页珍藏版)》请在金锄头文库上搜索。
1、在SQL Server 2008中部署安全审计【TechTarget中国原创】SQL Server 2008引入了新的审计功能,这对数据库管理员来说是非常有价值的,该功能可以通过跟踪数据库的使用情况从而生成详尽的审计记录。审计可以在服务器和数据库级别上或者针对个别数据库对象实现,并以不同的格式保存记录,如二进制文件或Windows应用程序日志。在SQL Server 2008中配置审计功能,请按照下列步骤:1、在SQL Server 2008的指定实例中创建一个SQL Server的审计。2、创建一个服务器审计规范、一个数据库审计规范或者两个都创建。3、启用SQL Server的审计功能。4、
2、查看审计记录。在本文中,我将复习每一个步骤并举例说明它们是如何工作。请注意:在大多数情况下,这些例子使用的是Transact-SQL语言。但是,这些例子也可以通过SQL Server Management Studio来执行使用。有关如何使用SQL Server Management Studio的详细信息,请参阅Microsoft SQL Server联机丛书。1.创建SQL Server审计第一步是建立一个SQL Server的审计,也就是对一个SQL Server 2008实例配置审计功能。一个审计就是指配置为一个特定的与数据库引擎相关的事件日志集合的安全对象。你可以为一个SQL Ser
3、ver 2008实例创建多个审计。当创建一个审计的时候,你必须指定审计的名称和事件输出的目标位置。目标位置可以是二进制文件、Windows安全日志或Windows应用程序日志。你还可以为审计对象指定一个或多个可选参数。使用CREATE SERVER AUDIT语句创建一个审计,如下所示: USEmaster GO CREATESERVERAUDITSrvAudit TOFILE(FILEPATH=C:Data,MAXSIZE=5MB) WITH(QUEUE_DELAY=3000)请注意,你必须在master数据库中创建审计。这是因为审计和SQL Server实例相关联的并且作为一个整体,所以你
4、不能在一个用户数据库中创建审计。CREATE SERVER AUDIT语句的第一行只是简单地提供了一个审计名称(本例是SrvAudit)。下一行是一个TO子句,用于指定事件输出的目标位置。在本例中,我把输出指定到一个文件,所以必须要指定TO FILE子句,然后提供FILEPATH(文件路径)值。请注意,这仅仅是一个路径名称。SQL Server会自动的以下面的名称格式命名输出文件:_.sqlaudit在上面的例子中,TO FILE子句还包括了MAXSIZE参数,该参数限制了输出文件的大小为5 MB。这一参数是TO FILE子句的几个可选参数之一。如果你需要输出审计数据到应用程序日志或安全日志,
5、那么你只需要指定日志选项参数,如下所示:CREATESERVERAUDITSrvAudit2 TOAPPLICATION_LOG WITH(QUEUE_DELAY=3000)正如你所看到的,TO FILE子句被TO APPLICATION_LOG子句所替代,且不需要提供额外的参数。CREATE SERVER AUDIT语句的最后一行是一个WITH子句。该子句支持几种参数选项用来控制审计是如何创建的。在本例中,我使用QUEUE_DELAY参数并将其值设置为3000。该参数指定一个单位为毫秒的值,用于控制在审计动作被强制执行之前可以等待的时间。默认情况下,该参数值为1000毫秒(1秒)。2.创建服
6、务器审计规范在创建完SQL Server的审计之后,你必须创建一个服务器审计规范或是一个数据库审计规范,或者是两个都创建。服务器审计规范是与一个特定的SQL Server审计相关的一个或多个服务器级别的审计活动组的集合。一个活动组是与数据库引擎所暴露出来的相关事件的一个集合。例如: SERVER_OPERATION_GROUP活动组当安全审计操作发生时才会被触发,比如当用户修改服务器设置时。你可以为每个审计只创建一个服务器审计规范。但是,你能为这个审计规范添加多个活动组。要创建一个服务器审计规范,需要从master数据库运行CREATE SERVER AUDIT SPECIFICATION语句
7、,如下所示:USEmaster GO CREATESERVERAUDITSPECIFICATIONSrvAuditSpec FORSERVERAUDITSrvAudit ADD(SUCCESSFUL_LOGIN_GROUP), ADD(FAILED_LOGIN_GROUP) WITH(STATE=ON)CREATE SERVER AUDIT SPECIFICATION语句的第一行指定了一个规范名称(SrvAuditSpec)。第二行,FOR SERVER AUDIT子句,指定了与规范相关联的审计名称(SrvAudit)。第三和第四行是ADD子句,表明将该规范加入到那个审计活动组。本例中,我将规
8、范加入到SUCCESSFUL_LOGIN_GROUP和FAILED_LOGIN_GROUP活动组,用于跟踪尝试登录到SQL Server实例的安全实体。CREATE SERVER AUDIT SPECIFICATION语句的最后一行是WITH子句。WITH子句的STATE参数指明当规范创建时就启用它。默认情况下,该规范是被禁用的(STATE=OFF)。如果你创建时不启用规范,就必须在活动组开始审计时启用它。在SQL Server 2008中部署安全审计(上)【TechTarget中国原创】不同于服务器审核规范,数据库审计规范是具体到一个数据库。然而,像一个服务器审核规范,您可以添加审计活动组
9、- 但它们是特定于数据库。此外,您可以为数据库审计规范添加单独审计活动。审计活动是发生在数据库里的一项具体活动,比如删除数据或运行一个存储过程。要创建一个数据库审计规范,需要从目标数据库运行CREATE DATABASE AUDIT SPECIFICATION语句,如下所示:USEAdventureWorks2008 GO CREATEDATABASEAUDITSPECIFICATIONDbAuditSpec FORSERVERAUDITSrvAudit ADD(DATABASE_OBJECT_CHANGE_GROUP), ADD(SELECT,INSERT,UPDATE,DELETE ONS
10、chema:HumanResourcesBYdbo) WITH(STATE=ON)CREATE DATABASE AUDIT SPECIFICATION语句的第一行,指定了一个规范名称(DbAuditSpec);并在第二行,FOR SERVER AUDIT子句,指定与该规范相关联的审计名称。接下来是添加一个审计活动组,本例中是DATABASE_OBJECT_CHANGE_GROUP。每当在AdventureWorks2008数据库上执行CREATE, ALTER or DROP语句就会触发这个活动组的事件。第二个ADD子句指定独立的审计活动,而不是一个活动组。本例中,审计活动是SELECT,I
11、NSERT ,UPDATE和DELETE操作。请注意,下一行中的ON子句指定HumanResources架构和dbo安全实体。所以,每当dbo查询HumanResources架构中的一个数据库对象或插入、更新、删除AdventureWorks2008数据库中的数据时,SQL Server将记录一个事件。最后,CREATE DATABASE AUDIT SPECIFICATION语句的最后一个子句是WITH子句。你可以在这里立即启用规范,或者在以后启用规范。3.启用SQL Server审计与此前复习的创建审计规范语句不同的是,CREATE SERVER AUDIT语句的WITH子句不支持STAT
12、E参数。这意味着你必须使用单独的步骤启用审计,如下所示:USEmaster GO ALTERSERVERAUDITSrvAudit WITH(STATE=ON)正如你可以看到,我使用ALTER SERVER AUDIT语句修改我在前面创建的SQL Server审计(SrvAudit)。ALTER SERVER AUDIT语句的WITH子句支持STATE参数,我已经设置为ON。在我执行这个语句后,SQL Server将开始审计指定的事件。4.查看审计数据你可以使用SQL Server Management Studio中的日志文件查看器(Log File Viewer)来查看审计数据。此外,如果
13、你设置SQL Server审计输出到应用程序日志或安全日志,你可以使用事件查看器来查看这些数据。我发现查看事件信息的最简单方法是将审计数据保存为二进制文件,然后使用日志文件查看器来查看这些数据。要访问日志文件查看器,在SQL Server Management Studio中打开对象资源管理器(Object Explorer),展开安全节点,然后展开审计节点。接下来,右键单击想要查看的审计,然后单击查看审计日志(View Audit Log),以启动日志文件查看器。下图显示了上面例子创建的SQL Server审计(SrvAudit)的事件样本。这就是如何实现审计和查看被审计的数据。SQL Server 2008比早期版本更容易实现这个过程。你只需创建SQL Server审计,关联到一个或两个审计规范,再启用它们。SQL Server会做剩下的事情。在SQL Server 2008中部署安全审计(下)在SQL Server 2008中部署安全审计在SQL Server 2008中部署安全审计(上)在SQL Server 2008中部署安全审计(下)【原创内容,版权所有,谢绝转载。TechTarget中国将保留追究其法律责任的权利。】