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

 

本文属于SQL Server安全专题系列


 接上文: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审核操作组的使用,可以进行用户自定义的事件审核。从而更丰富整个审核体系。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值