SQL Server 安全篇——SQL Server 审核(3)——自定义审核事件

2018-01-24 10:31:58来源:http://blog.csdn.net/dba_huangzj/article/details/79033980作者:黄钊吉的博客人点击

分享

接上文: SQL Server 安全篇——SQL Server 审核(2)——审核实操 ,很多时候,原生的审核功能并不能完全满足需求,这个时候,就可以使用服务器审核规范或者数据库审核规范来捕获USER_DEFINED_AUDIT_GROUP审核操作组,然后手动在应用程序中触发。


自定义服务器审核和数据库审核规范:

下面脚本获取USER_DEFINED_AUDIT_GROUP操作组,针对的是AdventureWorks2017中的Person.Person表。如果对脚本不熟悉,可以先回看前面两节。


USE Master
GO
CREATE SERVER AUDIT [Audit-Custom]
TO FILE
(
FILEPATH = 'E:/Audit'
,MAXSIZE = 256 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF
)
WITH
(QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
) ;
GO
CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-Custom]
FOR SERVER AUDIT [Audit-Custom]
ADD (USER_DEFINED_AUDIT_GROUP)
WITH (STATE = ON) ;
GO
ALTER SERVER AUDIT [Audit-Custom]
WITH (STATE = ON) ;
USE AdventureWorks2017
GO
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-Custom]
FOR SERVER AUDIT [Audit-Custom]
ADD (DELETE ON OBJECT::Person.Person BY public) ;
ALTER DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-Custom]
WITH (STATE = ON) ;

成功后的样子:



触发事件:

使用sp_audit_write系统存储过程来调起自定义事件。其参数说明如下:



sp_audit_write参数


参数
说明
@user_defined_event_id
指定用户自定义事件的ID
@succeeded
定义事件是否成功:0为失败,1为成功
@user_defined_information
定义事件的描述

这个sp可以在存储过程或这触发中调用,比如在触发器中触发事件:


CREATE TRIGGER FireCustomEvent
ON Person.Person
AFTER INSERT
AS
BEGIN
IF (SELECT COUN