如何开启sqlserver2008数据库审计功能

如何开启sqlserver2008数据库审计功能,第1张

SQLSERVER2008新增的审核功能

在sqlserver2008新增了审核功能,可以对服务器级别和数据库级别的 *** 作进行审核/审计,事实上,事件通知、更改跟踪、变更数据捕获(CDC)

都不是用来做审计的,只是某些人乱用这些功能,也正因为乱用这些功能导致踩坑

事件通知:性能跟踪

更改跟踪:用Sync Services来构建偶尔连接的系统

变更数据捕获(CDC):数据仓库的ETL 中的数据抽取(背后使用logreader)

而审核是SQLSERVER专门针对数据库安全的进行的审核,记住,他是专门的!

我们看一下审核的使用方法

审核对象

步骤一:创建审核对象,审核对象是跟保存路径关联的,所以如果你需要把审核 *** 作日志保存到不同的路径就需要创建不同的审核对象

我们把审核 *** 作日志保存在文件系统里,在创建之前我们还要在相关路径先创建好保存的文件夹,我们在D盘先创建sqlaudits文件夹,然后执行下面语句

--创建审核对象之前需要切换到master数据库

USE [master]

GO

CREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits') --这里指定文件夹不能指定文件,生成文件都会保存在这个文件夹

GO

实际上,我们在创建审核对象的同时可以指定审核选项,下面是相关脚本

把日志放在磁盘的好处是可以使用新增的TVF:sys.[fn_get_audit_file] 来过滤和排序审核数据,如果把审核数据保存在Windows 事件日志里查询起来非常麻烦

USE [master]

GO

CREATE SERVER AUDIT MyFileAudit TO FILE(

FILEPATH='D:\sqlaudits',

MAXSIZE=4GB,

MAX_ROLLOVER_FILES=6)

WITH (

ON_FAILURE=CONTINUE,

QUEUE_DELAY=1000)

ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)

MAXSIZE:指明每个审核日志文件的最大大小是4GB

MAX_ROLLOVER_FILES:指明滚动文件数目,类似于SQL ERRORLOG,达到多少个文件之后删除前面的历史文件,这里是6个文件

ON_FAILURE:指明当审核数据发生错误时的 *** 作,这里是继续进行审核,如果指定shutdown,那么将会shutdown整个实例

queue_delay:指明审核数据写入的延迟时间,这里是1秒,最小值也是1秒,如果指定0表示是实时写入,当然性能也有一些影响

STATE:指明启动审核功能,STATE这个选项不能跟其他选项共用,所以只能单独一句

在修改审核选项的时候,需要先禁用审核,再开启审核

ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)

ALTER SERVER AUDIT MyFileAudit WITH(QUEUE_DELAY =1000)

ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)

审核规范

在SQLSERVER审核里面有审核规范的概念,一个审核对象只能绑定一个审核规范,而一个审核规范可以绑定到多个审核对象

我们来看一下脚本

CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile

FOR SERVER AUDIT MyFileAudit

ADD (failed_login_group),

ADD (successful_login_group)

WITH (STATE=ON)

GO

CREATE SERVER AUDIT MyAppAudit TO APPLICATION_LOG

GO

ALTER SERVER AUDIT MyAppAudit WITH(STATE =ON)

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)

GO

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile

FOR SERVER AUDIT MyAppAudit

ADD (failed_login_group),

ADD (successful_login_group)

WITH (STATE=ON)

GO

我们创建一个服务器级别的审核规范CaptureLoginsToFile,然后再创建多一个审核对象MyAppAudit ,这个审核对象会把审核日志保存到Windows事件日志的应用程序日志里

我们禁用审核规范CaptureLoginsToFile,修改审核规范CaptureLoginsToFile属于审核对象MyAppAudit ,修改成功

而如果要把多个审核规范绑定到同一个审核对象则会报错

CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileA

FOR SERVER AUDIT MyFileAudit

ADD (failed_login_group),

ADD (successful_login_group)

WITH (STATE=ON)

GO

CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileB

FOR SERVER AUDIT MyFileAudit

ADD (failed_login_group),

ADD (successful_login_group)

WITH (STATE=ON)

GO

--消息 33230,级别 16,状态 1,第 86 行

--审核 'MyFileAudit' 的审核规范已经存在。

这里要说一下 :审核对象和审核规范的修改 ,无论是审核对象还是审核规范,在修改他们的相关参数之前,他必须要先禁用,后修改,再启用

--禁用审核对象

ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)

--禁用服务器级审核规范

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)

GO

--禁用数据库级审核规范

ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=OFF)

GO

--相关修改选项 *** 作

--启用审核对象

ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)

--启用服务器级审核规范

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=ON)

GO

--启用数据库级审核规范

ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=ON)

GO

审核服务器级别事件

审核服务级别事件,我们一般用得最多的就是审核登录失败的事件,下面的脚本就是审核登录成功事件和登录失败事件

CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFile

FOR SERVER AUDIT MyFileAudit

ADD (failed_login_group),

ADD (successful_login_group)

WITH (STATE=ON)

GO

修改审核规范

--跟审核对象一样,更改审核规范时必须将其禁用

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =OFF)

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile

ADD (login_change_password_gourp),

DROP (successful_login_group)

ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =ON)

GO

审核 *** 作组

每个审核 *** 作组对应一种 *** 作,在SQLSERVER2008里一共有35个 *** 作组,包括备份和还原 *** 作,数据库所有权的更改,从服务器和数据库角色中添加或删除登录用户

添加审核 *** 作组的只需在审核规范里使用ADD,下面语句添加了登录用户修改密码 *** 作的 *** 作组

ADD (login_change_password_gourp)

这里说一下服务器审核的内部实际上使用的是SQL2008新增的扩展事件里面的其中一个package:SecAudit package,当然他内部也是使用扩展事件来收集服务器信息

审核数据库级别事件

数据库审核规范存在于他们的数据库中,不能审核tempdb中的数据库 *** 作

CREATE DATABASE AUDIT SPECIFICATION和ALTER DATABASE AUDIT SPECIFICATION

工作方式跟服务器审核规范一样

在SQLSERVER2008里一共有15个数据库级别的 *** 作组

7个数据库级别的审核 *** 作是:select ,insert,update,delete,execute,receive,references

相关脚本如下:

--创建审核对象

USE [master]

GO

CREATE SERVER AUDIT MyDBFileAudit TO FILE(FILEPATH='D:\sqldbaudits')

GO

ALTER SERVER AUDIT MyDBFileAudit WITH (STATE=ON)

GO

--创建数据库级别审核规范

USE [sss]

GO

CREATE DATABASE AUDIT SPECIFICATION CaptureDBActionToEventLog

FOR SERVER AUDIT MyDBFileAudit

ADD (database_object_change_group),

ADD (SELECT ,INSERT,UPDATE,DELETE ON schema::dbo BY PUBLIC)

WITH (STATE =ON)

我们先在D盘创建sqldbaudits文件夹

第一个 *** 作组对数据库中所有对象的DDL语句create,alter,drop等进行记录

第二个语句监视由任何public用户(也就是所有用户)对dbo架构的任何对象所做的DML *** 作

创建完毕之后可以在SSMS里看到相关的审核

1、熟悉该单位所使用的财务软件的数据库结构,例如:金蝶、用友等

2、本身具备强大的SQL语句功底,可以使用SQL语句对其财务表内的数据进行汇总统计

3、依据财务常识与审计中对各个财务科目的数据进行比对,发现其中问题,然后再追朔其具体帐目的单据

4、不同种类的企业,在其财务流中,均会不同程度存在违法违纪问题,只要在审计过程中仔细认真核对其数据即可,另外,也要对其数据与财务凭证做细致对比

愿你成功!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9713697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存