37-SQLServer的审核/审计功能介绍
一、总结
1、SQLServer2008开始支持审计功能,审计规范分为服务器级别和数据库级别两种;
2、无论是服务器级别的审计还是数据库级别的审计,第一步创建审计对象的方式一样,最后创建完都是在实例下的安全性查看;
3、创建审计对象的时候,不能在创建脚本里直接启用审计(也就是添加state=on),在创建审计规范对象的时候的可以直接在创建脚本里直接添加state=on,直接启用审计规范;
4、SQLServer审核功能相对而言性能影响较小,审核粒度也非常灵活;
5、审核的日志文件是二进制的,不能使用文本编辑器直接打开;
6、在SQLServer中,一个审计对象只能绑定一个审核规范,而一个审核规范可以被多个审计对象使用;
7、不管是修改审计还是审计规范都得先禁用,再修改,再启用;
8、不能审核tempdb中的数据库操作;
二、创建审计对象
1、创建审计对象
create server audit MyFileAudit to file( filepath='D:\sqlaudits', maxsize=4gb, max_rollover_files=6) with( on_failure=continue, queue_delay=1000 );
参数详解:
maxsize:定义每个审核日志的最大大小是4GB;
max_rollover_files:定义滚动文件的数目,达到6个文件的时候,开始删除前面的历史记录,复用文件空间;
on_failure:指明当审核发生错误的时候,是否继续审计,如果指明shutdown,那么将会shutdown整改实例;
query_delay:指定审核数据写入的延迟时间,1000表示1秒,如果指定0表示实时写入,当然性能也有些影响;
2、开启审计
命令:alter server audit MyAudit with(state=on)
3、禁用审计
命令:alter server audit MyFileAudit with(state=off)
4、修改审计选项(修改之前要先禁用审计,修改完之后再启用审计)
命令:alter server audit MyAudit with(state=off)
alter server audit MyAudit with (queue_delay=1000)
alter server audit MyAudit with(state=on)
5、查看审计的状态(1表示启用,0表示禁用)
命令:select name,is_state_enabled from sys.server_file_audits
6、删除审计
命令:drop server audit MyFileAudit
三、创建服务器级别的审核规范
1、创建服务器级别的审核规范
create server audit specification CaptureLoginsToFile for server audit MyAudit add (failed_login_group), add (successful_login_group) with(state=on) go
2、修改审核规范
--(1)禁用审核规范 alter server audit specification CaptureLoginsToFile with (state=off) --(2)修改审核规范 alter server audit specification CaptureLoginsToFile add (login_change_password_group), --改变登录名的密码后,写入审计日志 drop (successful_login_group) --删除登录成功信息的审计 --(3)启用审核规范 alter server audit specification CaptureLoginsToFile with (state=on
3、查看审核规范状态
命令:select name,is_state_enabled from sys.server_audit_specifications
4、查看审核规范的详细信息
命令:select * from sys.server_audit_specification_details
5、删除审计规范
命令:drop server audit specification CaptureLoginsToFile
6、使用sys.[fn_get_audit_file]()函数查看审核日志
命令:select * from sys.[fn_get_audit_file]('D:\sqlaudits\MyAudit_C3C37587-2CFA-41C2-90B0-3F87F16135EA_0_132400485274590000.sqlaudit',default,default)
7、在SSMS里查看审核日志
四、创建数据库级别的审核规范
1、创建审计对象(服务器级别和数据库级别创建方式一致)
create server audit MyDBAudit to file( filepath='D:\sqlaudits\dbaudits', maxsize=4gb, max_rollover_files=6) with( on_failure=continue, queue_delay=1000 );
2、创建数据库级别的审核规范
use [test] go create database audit specification CaptureDBToFile for server audit MyDBAudit add (database_object_change_group), add (select,insert,update,delete on schema::dbo by public) with(state=on) go
3、修改数据库级别的审计规范
--(1)禁用审核规范 alter database audit specification CaptureDBToFile with (state=off) --(2)修改审核规范 alter database audit specification CaptureDBToFile drop (select on schema::dbo by public) --删除select的审计 --(3)启用审核规范 alter database audit specification CaptureDBToFile with (state=on)
4、查看审核规范状态
命令:select name,is_state_enabled from test.sys.database_audit_specifications
5、查看审计规范的详细信息
命令:select * from test.sys.database_audit_specification_details
6、删除审计规范
命令:drop database audit specification CaptureDBToFile
7、使用sys.[fn_get_audit_file]()函数查看审计结果
select * from sys.[fn_get_audit_file]('D:\sqlaudits\dbaudits\MyDBAudit_A5675035-43BB-4A19-B647-D6792E0120F9_0_132400509506420000.sqlaudit',default,default)
五、审核功能相关视图
1、查看审核对象信息 select * from sys.server_file_audits 2、查看服务器级别审核规范 select * from sys.server_audit_specifications select * from sys.server_audit_specification_details 3、查看数据库级别的审核规范 select * from sys.database_audit_specifications select * from sys.database_audit_specification_details 4、查看审核对象的状态 select * from sys.dm_server_audit_status 5、查看有所有的操作组 select * from sys.dm_audit_actions select * from sys.dm_audit_class_type_map
参考网址
https://www.cnblogs.com/lyhabc/p/4074003.html
***************************************************
如下是个人开发系统,欢迎大家体验,纯属个人爱好,想一块玩的,私信。
易本浪账:www.jialany.com
***************************************************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构