SQL Server Audit 功能体验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Benjayming/article/details/82832350


SQL Server 的Audit功能可以用来对数据库进行某种审计。下面用一个简单的例子来说明一下它的用法和效果。更多详细用法还请自行翻阅联机丛书。

业务场景

对用户dbo对某个表的Delete操作进行审计

创建数据库审计(Audit)步骤

  1. 创建Server Audit
  2. 创建Database Audit Specification
  3. 分别启用Server Audit 和 Database Audit Specification
图形界面
  1. 创建Server Audit
    在这里插入图片描述

说明:上图设置的审计日志输出到文件(File),也可以选择到系统的应用程序/安全日志(Application Log/Security Log)。

  1. Database Audit Specification
    在这里插入图片描述
  2. 分别启用
    分别右键选择启动即可(图略)
对应 T-SQL 命令
-- 1、创建 Server Audit 
USE [master]
GO
CREATE SERVER AUDIT [TestAudit_Temp_Bank]
TO FILE 
(	FILEPATH = N'D:\DB-File'
	,MAXSIZE = 1 GB
	,MAX_ROLLOVER_FILES = 10
	,RESERVE_DISK_SPACE = OFF
)
WITH
(	QUEUE_DELAY = 1000
	,ON_FAILURE = CONTINUE
)
GO
-- 2、创建 Database Audit Specification
USE [MyDB]
GO
CREATE DATABASE AUDIT SPECIFICATION [TestAudit_Temp_Bank_MyDB]
FOR SERVER AUDIT [TestAudit_Temp_Bank]
ADD (DELETE ON OBJECT::[dbo].[temp_bank] BY [dbo])
-- 3、分别启用
ALTER SERVER AUDIT [TestAudit_Temp_Bank] WITH (STATUS = ON)
GO
ALTER DATABASE AUDIT SPECIFICATION [TestAudit_Temp_Bank_MyDB] WITH (STATUS = ON)
GO

效果

用数据库拥有者账号(会映射到用户dbo)运行对表temp_bank的Delete语句之后,用sys.fn_get_audit_file函数查看审计日志:

SELECT DATEADD(mi,DATEDIFF(mi,GETUTCDATE(),GETDATE()),event_time) AS RealEventTime,* 
FROM sys.fn_get_audit_file ('D:\DB-File\TestAudit_Temp_Bank_AC916F20-A23F-4244-8509-5E3B3ED51445_0_131822638146730000.sqlaudit'
,default,default);

结果:
在这里插入图片描述
在这里插入图片描述

1.日志中的EventTime实际是UTC时间,查询SQL中转换为了本地时间
2.不管运行的Delete语句是否真的删除了数据(可能Where条件不满足),均会被记录。
3. 如果Delete语句在存储过程中,审计也会被记录,在Additional Informaiton一列中会有调用栈信息。

猜你喜欢

转载自blog.csdn.net/Benjayming/article/details/82832350