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 COUNT(*) FROM Inserted) > 5
BEGIN
EXEC sys.sp_audit_write 1, 1, 'More than 5 items order' ;
END
END ;

但是注意触发器会降低性能。


总结:

SQL Server审核可以提供复杂、轻量级的审核机制。用于记录特权用户对数据库的非授权操作。对审核的合理使用可以减轻很多不必要的工作量。通过对USER_DEFINED_AUDIT_GROUP审核操作组的使用,可以进行用户自定义的事件审核。从而更丰富整个审核体系。


相关文章

    无相关信息

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台