SQL Server 审核(Audit)-- 创建数据库级别的审核

任务1:创建审核


步骤1打开SSMS,登录到指定的实例,展开“Security”,“Audits”节点。

 

步骤2在“Audits”节点上,右键选择“New Audit…”选项。

 

步骤3在“Create Audit”窗口,输入以下的参数。

? 在“Audit name”输入Audit-AdventureWorks2012-Create/Alter/Drop。

? 在“Audit destination”选择“File”

? 在“File path”输入D:\MSSQL\DATA\Audit_logs。

 

步骤4单击“OK”完成设置。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

步骤5右键点击刚刚创建的审核“Audit-AdventureWorks2012-Create/Alter/Drop”,选择“Enable Audit”选项。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

 

任务2:创建数据库级别的审核规范 – 监控数据库对象的创建、删除与修改。


步骤1在“Object Explorer”窗口,展开“Databases”,“AdventureWorks2012”,“Security”,“Database Audit Specifications”节点。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

步骤2在“Database Audit Specifications”节点,单击右键选择“Create Database Audit Specification”选项。

 

步骤3在“Create Database Audit Specification”窗口,输入以下参数。

l 在“Name”输入DatabaseAuditSpecification-Object-Create/Alter/Drop。

l 在“Audit”选择之前创建的审核对象“Audit-AdventureWorks2012-Create/Alter/Drop”。

l 在“Actions”区域中“Audit Action Type”下的第一行,选择“SCHEMA_OBJECT_CHANGE_GROUP”。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

“SCHEMA_OBJECT_CHANGE_GROUP”是属于数据库级别的审核操作组,在架构上执行CREATE、ALTER和DROP操作时,就会引发这个事件。

 

步骤4单击“OK”按钮,完成设置。

 

步骤5右键单击刚才创建的数据库审核规范“DatabaseAuditSpecification-Object-Create/Alter/Drop”,选择“Enable Database Audit Specification”选项。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

 

任务3:测试审核功能 – 创建、修改与删除数据库对象。


步骤1打开SSMS,单击“New Query”执行以下代码,在数据库AdventureWorks2012创建、修改与删除数据库的对象。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
USE AdventureWorks2012
GO
--Create Database Object
CREATE TABLE T1(Col1 int not null primary key)
GO
CREATE VIEW V1 AS SELECT FROM T1
GO
CREATE SYNONYM SYN1 FOR T1
GO
CREATE FUNCTION FUN1(@InParm intRETURNS int AS BEGIN RETURN @InParm END
GO
CREATE PROCEDURE PROC1(@InParm intAS BEGIN SET @InParm = 0 END
GO
CREATE TRIGGER TRIG1 ON T1 AFTER INSERT AS RAISERROR('This is a dummy table',16,10)
GO
--Alter Database Object
ALTER TABLE T1 ADD Col2 varchar(32)
GO
ALTER PROC PROC1 AS SELECT 1
GO
--Drop Database Object
DROP TRIGGER TRIG1
GO
DROP PROCEDURE PROC1
GO
DROP FUNCTION FUN1
GO
DROP SYNONYM SYN1
GO
DROP VIEW V1
GO
DROP TABLE T1
GO

 

 

任务4:使用日志文件查看器阅读审核日志。


步骤1展开“Security”,“Audits”节点。

 

步骤2在刚才创建的“Audit-AdventureWorks2012-Create/Alter/Drop”对象上,右键选择“View Audit Logs”。

 

步骤3在“Log File Viewer”窗口左上角的“Select logs”区域中,确认有勾选“Audit Collection”,“Audit-AdventureWorks2012-Create/Alter/Drop”。并用以下方式来阅读所记录的审核数据。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

 

l 在右边“Log file summary”区域内,在“Action ID”区域中,分别点击“CREATE”、“ALTER”、“DROP”等操作类型。

l 在“Class Type”显示所记录的各类对象“TABLE”、“VIEW”、“STORED PROCEDURE”等数据库对象。

l 在下面的“Statement”区域,可以看到所记录的程序代码。

l 取得发生事件的日期与时间,可能是利用的SQL Server 2008之后新提供的日期时间函数SYSUTCDATETIME()。回传的数据类型是datetime2,内容值包含执行SQL Server实例的服务器的日期和事件。而这个日期与时间是以国际标准时间(Coordinated Universal Time:UTC)时间格式回传,此函数将取回服务器上的格林威治时间(Greenwich Mean Time:GMT),也就是落后北京时间标准8小时。


备注:datetime2是SQL Server 2008之后新增的数据类型,包含了日期数据,并结合以24小时制为基础的时间。Datetime2可视为既有的datetime数据类型的扩展,它具有较大的日期范围、较精确的小数有效位数和选择性的用户指定有效位数。日期范围可以从公元1年1月1日到公元9999年12月31日,时间范围可以到00:00:00到23:59:59.9999999,精确度为100ns(1ns=10的负九次方秒)。

 

采用格林威治时间(GMT)来记录日期时间数据,对于DBA而言,若拥有位于不同时区的数据库服务器时,这是一个将日志的时间标准化的作法。但对于非格林威治时间(GMT)时区的用户而言,例如:北京时区是(GMT+08:00),可能是个困扰。在接下来的实践中,将使用T-SQL函数fn_get_audit_file来分析与查看审核日志的数据,就可以将格林威治时间(GMT)转为适合的时区的信息。

 

 

任务5:改用“Windows应用程序事件日志文件”来记录审核信息。


步骤1在“Security”,“Audits”节点上的“Audit-AdventureWorks2012-Create/Alter/Drop”对象上,右键禁用审核。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

若要调整“Audits”对象的属性,必须要先禁用此“Audits”之后才能进行调整,否则将产生错误信息,无法调整属性。

 

步骤2单击被禁用的审核对象,单击鼠标右键选择“Properties”选项。

 

步骤3在“Audit Properties”窗口中的“Audit destination”框,下拉选择“Application Log”。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

步骤4单击“OK”按钮,完成属性的调整。

 

步骤5单击被禁用的审核对象,右键再启用审核。

 

步骤6再次执行之前在数据库AdventureWorks2012创建、修改与删除数据库对象的T-SQL代码。

 

 

任务6:查看存放在“Windows应用程序事件日志文件”内的审核信息。


步骤1展开“Security”,“Audits”节点。

 

步骤2在刚才创建的“Audit-AdventureWorks2012-Create/Alter/Drop”对象上,右键选择“View Audit Logs”。

 

步骤3在“Log File Viewer”窗口左上角的“Select logs”区域中,确认有勾选“Windows NT”,“Application”。

 

步骤4在右边的“Log file summary”区域,即可查看所记录到数据。

 

SQL Server 审核(Audit)-- 创建数据库级别的审核

 

采用“Windows应用程序事件日志文件”方式来存放审核日志,具备以下特性。

l 审核内部所记录的日期时间部分,仍以格林威治时间(GMT)来记录。

l 在应用程序事件日志文件所记录的日志时间,已经转为数据库服务器所在时区的日期时间。

l 审核所记录到数据全部存放在消息区域内,其“statement”部分,有记录所执行的T-SQL程序代码。但这在阅读与后续分析上,势必会增加困扰。若与存放到二进制文件的审核目标比较起来,二进制文件存放的审核日志已经分类在各数据行中,如此一来,不但增加可读性,也容易进行筛选与分析。

 

若使用Windows的事件查看器来阅读所记录到的审核数据,可以在“Application”页查看所记录的信息。

 



SQL Server 审核(Audit)-- 创建数据库级别的审核














本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1596119 ,如需转载请自行联系原作者