本文主要向大家介绍了SQLServer数据库审计功能入门之SQL Server审核,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。

介绍

Audit是SQL Server 2008之后才有的功能,它能告诉你“谁什么时候做了什么事情”。具体是指审核SQL Server 数据库引擎实例或单独的数据库涉及到跟踪和记录数据库引擎中发生的事件。它的底层是基于扩展事件(Extented Event),所以其性能和灵活性相对较好。审核数据可以输出到审核文件、Windows安全日志和应用程序日志。

Audit都需要创建一个实例级的“SQL Server审核”,然后可以创建从属于它“服务器审核规范”和“数据库审核规范”。可以理解“SQL Server审核”是审核的顶级容器,这两个“规范”是定义要审核的具体内容。

创建和使用审核的一般过程:

1. 创建审核并定义目标。

2. 创建映射到审核的服务器审核规范或数据库审核规范,并启用审核规范。

3. 启用审核。

4. 通过使用 Windows“事件查看器”、“日志文件查看器”或 fn_get_audit_file 函数来读取审核事件。

实现

创建测试数据库和数据:

use master

go

create database AuditTest

go

use AuditTest

go

create table tb(ID int primary key ,name varchar(20),weight decimal(10,2));

insert into tb values(1,'John',70.2),(2,'Ted',80.8),(3,'Clark',75.1)

go

1. 创建审核和定义目标。

创建审核可以用SSMS或者语句实现。所谓目标,就是审核输出存到哪里,与扩展事件的Target差不多。

对应的语句创建:

--create Server Audit

USE [master]

GO

CREATE SERVER AUDIT [Audit-AuditTest]

TO FILE

( FILEPATH = N'D:\share'

,MAXSIZE = 50 MB

,MAX_FILES = 10

,RESERVE_DISK_SPACE = ON

)

WITH

( QUEUE_DELAY = 1000

,ON_FAILURE = CONTINUE

--AUDIT_GUID=uniqueidentifier

)

--WHERE object_name='tb'

GO

--Enable Server Audit

alter server audit [Audit-AuditTest] with (state=on)

简单说明一下相关参数:

TO FILE:指定输出到审核文件,也可以指定为Security Log和Application Log。

FILEPATH:审核文件的目录地址。

MaxSize:单个审核文件的最大容量。

MAXSIZE:类似于Trace,指定Rollover允许最多文件数。

RESERVE_DISK_SPACE:预先分配审核文件到MaxSize。个人推荐启用。

QUEUE_DELAY:指定事件发生到被强制审核的毫秒间隔。指定为0则为同步审核。

ON_FAILURE :当审核向上档写入数据失败时,接下来会采取的行为:CONTINUE | SHUTDOWN | FAIL_OPERATION。

AUDIT_GUID:用于数据库镜像。类似Login的SID作用,镜像会话的主库如果有审核,则在镜像库创建对应的审核需要指定同样GUID。

WHERE:相当于扩展事件中Predicate,用于指定过滤条件。

2. 创建数据库审核规范并启用之

指定从属于哪个SQL Server审核和定义出要审核的内容。可以通过SSM或者语句创建之。下面针对测试表tb创建审核规范:任何人对tb表的DML和表结构修改操作都被审核。

对应的语句:

--Create and enable Database Audit Specification

USE [AuditTest]

GO

CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-AuditTest]

FOR SERVER AUDIT [Audit-AuditTest]

ADD (SCHEMA_OBJECT_CHANGE_GROUP),

ADD (SELECT,DELETE,INSERT,UPDATE ON OBJECT::[dbo].[tb] BY [public])

WITH (STATE=ON)

GO

对照SSMS,参数的意义就很明白了。更详细内容参考:CREATE DATABASE AUDIT SPECIFICATION

审核活动类型(Audit Action Type)参考:SQL Server 审核操作组和操作

3. 启用审核

SQL Server在创建审核和审核规范时,默认是不启用,需要显式启用。在前面两步,我已经显式启用了。

4. 测试和查看审核数据

use AuditTest

go

select * from dbo.tb

where ID=1;

update dbo.tb

set name='Ted_New'

where ID=2;

alter table dbo.tb alter column name varchar(30);

alter table dbo.tb add newCol varchar(20);

go

在前面目标定义的文件中会生成一个审核文件,文件名:[SQL Server审核名称]_[审核的GUID]_*.sqlaudit。

这个文件也可以用其它文字编辑器打,但是不便阅读。通常使用系统函数sys.fn_get_audit_file读取它。

SELECT event_time

, action_id

, succeeded

, session_id

, session_server_principal_name

, object_name

, statement

, file_name

, audit_file_offset

from sys.fn_get_audit_file('d:\share\*',default,default)

从结果可以得到:谁在什么时候做了什么。Select和Alter语句只有一条记录。Update有两条记录,一条Select和一条Update。将audit_file_offset的值传递给fn_get_audit_file作为第三个参数值,可以实现从指定的offset读取审核文件。注意:event_time输出为UTC时间了。

当然也可以直接查看:

5. 尝试服务器审核规范

审核创建和删除登录,并将审核内容记录到应用程序日志。

USE [master]GOCREATE SERVER AUDIT [Audit-AuditTest]TO APPLICATION_LOGWITH

( QUEUE_DELAY = 1000

,ON_FAILURE = CONTINUE

)GOAlter SERVER AUDIT [Audit-AuditTest] With(State=On)goCreate Server Audit Specification SAS_CreateDropLoginFor Server Audit [Audit-AuditTest]Add (SERVER_PRINCIPAL_CHANGE_GROUP)With (State=On)gocreate login xx with password='P@ssW0rd';drop login xx ;

通过Windows的事件查看器,可以查看到33205事件。个人觉得在查看数据详细事件时,使用XML格式更好理解一些。

总结

1. SQL Server审核相对而言性能影响较少,审核粒度也非常灵活。

2. 审核是针对“事件“,回答”谁什么时候干了什么“,但对数据本身变化的跟踪力度较弱。

3. 审核的目标结果,无论是审核文件或者应用程序日志,都需要另外处理和分析才能得想要的内容。

本文由职坐标整理并发布,希望对同学们学习SQL Server有所帮助,更多内容请关注职坐标数据库SQL Server数据库频道!

mssql 数据库审计账户_SQLServer数据库审计功能入门之SQL Server审核 (SQL Server Audit)...相关推荐

  1. mssql 数据库审计账户_mssql 数据库所有者

    [求助]测试XCode v8.0的正向反向功能 目的:测试XCode v8.0的正常反向功能. 正向工程:从数据库读取架构信息,生成实体类. 反向工程:根据实体类的特性构造架构信息,反向生成数据库或者 ...

  2. mysql数据库单用户_SQLServer数据库之SqlServer数据库单用户模式无法删除的处理

    本文主要向大家介绍了SQLServer数据库之SqlServer数据库单用户模式无法删除的处理,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 今天在删除一个数据库时,一直 ...

  3. mssql 数据库审计账户_金融行业数据库安全审计

    数据库安全审计 行业要求: 审计内容是否至少包括:用户的添加和删除.审计功能的启动和关闭.审计策略的调整.权限变更.系统资源的异常使用.重要的系统操作(如用户登录.退出)等. 数据库开启情况: 需开启 ...

  4. oracle数据库审计用什么数据库审计软件好?可以用什么方式部署?

    oracle数据库是一种高效率的.可靠性好的.适应高吞吐量的数据库方案,是很多企业的不二选择.最近选择oracle数据库的很多企业在问,oracle数据库审计用什么数据库审计软件好?可以用什么方式部署 ...

  5. mysql访问跨网御_网御网络审计系统(数据库审计型)

    完善的数据库审计 网御网络审计系统(数据库审计型)全面支持对各种常见商业数据库.开源数据库及国产 数据库系统的审计,例如 Oracle.DB2.Sybase.Informix.SQL Server.T ...

  6. 绿盟数据库审计系统hive_数据库审计系统

    产品简介: 中安威士数据库审计系统(简称VS-AD),是由中安威士(北京)科技有限公司开发的具有完全自主知识产权的数据安全防护产品.该系统通过监控数据库的多重状态和通信内容,不仅能准确评估数据库所面临 ...

  7. snmp获取交换机日志_日志审计系统和数据库审计系统的区别

    今天就易混淆的日志审计系统与数据库审计系统进行辨析.从日志审计系统和数据库审计系统的技术特点和原理来切入,来分析日志审计系统与数据库审计系统的异同. 01.日志审计系统 系统日志 系统日志是记录系统中 ...

  8. oracle数据库审计要素,启明星辰-数据库审计.doc

    4.2.7 功能描述 招标参数 应答 投标参数 产品性能规格 接口数量 1000BASE-T (RJ-45)≥2 完全满足 投标方提供的产品审计引擎默认监听端口为两个1000BASE-T口,最多可扩展 ...

  9. sqlserver审计 —— 服务器与数据库审核规范

    4.2 服务器审核 4.2.1 服务器审核 SQL Server 2008 引入了服务器审核功能,可以对服务器级别和数据库级别事件组和事件进行审核. SQL Server 的审核级别有若干种,具体取决 ...

最新文章

  1. Redis实战之限制操作频率
  2. js模块化:require、import和export
  3. 九度OJ 1051:数字阶梯求和
  4. 值不值得入手_看好三阳的小拉力,但不知道值不值得入手?
  5. Ubuntu 16.04 安装 VMware Tools(解决windows和Ubuntu之间不能互相复制粘贴文件的问题)
  6. nginx logrotate 日志切割
  7. 极速火箭网络助手怎么用_在检测火箭队方面,神经网络比灰烬更好吗? 如果是这样,如何?...
  8. Oracle高级教程
  9. Unity 自动化构建方案:一键实现版本管理与打包、压缩
  10. 第1章 Dev C++的使用
  11. MOSFET, MOS管, 开关管笔记
  12. 这20种PS技术让你的照片美不胜收
  13. Spring Boot 容器镜像分层构建
  14. 微软ipv6服务器,IPv6用户危险了!Win10出现严重安全漏洞
  15. 分布式之数据库和缓存双写一致性方案解析
  16. Python笔试练习题
  17. winrar CRC校验失败,文件被破坏的解决办法
  18. LVS+Keepalived 实现高可用负载均衡
  19. 使用SharePoint管理中心管理服务
  20. 【经历分享 工作体会 推荐】那些“资质平平”的计算机系学生,现在怎么样了?

热门文章

  1. 国家自然科学基金2020年预算减少22亿元
  2. 丘成桐:年轻学者要敢于“无法无天”
  3. 大学排名居然是一家快倒闭的二流杂志搞出来的自救项目?
  4. 老铁,邀请你来免费学习人工智能!!!
  5. c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点
  6. 【java机器学习】词向量在贝叶斯中的概念
  7. Apache Hudi 在 B 站构建实时数据湖的实践
  8. PostgreSQL数据目录深度揭秘
  9. 持续定义Saas模式云数据仓库+BI
  10. 物联网与万物互联有什么区别?