概述

对于一般的数据库系统审计可能不太会被重视,但是对于金融系统就不一样的。金融系统对审计要求会很高,除了了记录数据库各种操作记录还可能会需要开发报表来呈现这些行为数据。使用SQL Server Audit 功能,您可以对服务器级别和数据库级别事件组以及单个事件进行审核。

“审核”SQL Server 的实例或 SQL Server 数据库涉及到跟踪和记录系统中发生的事件,您可以记录每个实例的服务器审核操作组,或记录每个数据库的数据库审核操作组或数据库审核操作。在每次遇到可审核操作时,都将发生审核事件。

SQL Server 审核包括零个或多个审核操作项目。这些审核操作项目可以是一组操作,例如 Server_Object_Change_Group,也可以是单个操作,例如对表的 SELECT 操作。

注意:Server_Object_Change_Group 包括对任何服务器对象(数据库或端点)的 CREATE、ALTER 和 DROP 操作。

审核可以有以下类别的操作:

  • 服务器级别。这些操作包括服务器操作,例如管理更改以及登录和注销操作。
  • 数据库级别。这些操作包括数据操作语言 (DML) 和数据定义语言 (DDL) 操作。
  • 审核级别。这些操作包括审核过程中的操作。

针对 SQL Server 审核组件执行的某些操作本质上是在特定审核中进行审核的,在这些情况下,由于事件发生在父对象上,因此将自动发生审核事件。

本质上将对下列操作进行审核:

  • 服务器审核状态更改(将状态设置为 ON 或 OFF)

本质上将不对下列事件进行审核:

  • CREATE SERVER AUDIT SPECIFICATION
  • ALTER SERVER AUDIT SPECIFICATION
  • DROP SERVER AUDIT SPECIFICATION
  • CREATE DATABASE AUDIT SPECIFICATION
  • ALTER DATABASE AUDIT SPECIFICATION
  • DROP DATABASE AUDIT SPECIFICATION

最初创建时会禁用所有审核。

服务器级别审核操作组

服务器级别审核操作组是类似于 SQL Server 安全审核事件类的操作。有关详细信息,请参阅 SQL Server
事件类参考。

下表介绍了服务器级审核操作组,并提供了适用的等效 SQL Server 事件类。

Audit Login
事件类。

LOGOUT_GROUP

指示主体已注销 SQL Server。此类中的事件由新连接引发或由连接池中重用的连接引发。等效于 Audit Logout
事件类。

FAILED_LOGIN_GROUP

指示主体尝试登录到 SQL Server,但是失败。此类中的事件由新连接引发或由连接池中重用的连接引发。等效于 Audit Login Failed
事件类。

LOGIN_CHANGE_PASSWORD_GROUP

通过 ALTER LOGIN 语句或 sp_password 存储过程更改登录密码时,将引发此事件。等效于 Audit Login Change Password
事件类。

APPLICATION_ROLE_CHANGE_PASSWORD_GROUP

更改应用程序角色的密码时将引发此事件。等效于 Audit App Role Change Password
事件类。

SERVER_ROLE_MEMBER_CHANGE_GROUP

向固定服务器角色添加登录名或从中删除登录名时将引发此事件。此事件由 sp_addsrvrolemember 和 sp_dropsrvrolemember
存储过程引发。等效于 Audit Add Login to Server Role
事件类。

DATABASE_ROLE_MEMBER_CHANGE_GROUP

向数据库角色添加登录名或从中删除登录名时将引发此事件。此事件类由 sp_addrolemember、sp_changegroup 和
sp_droprolemember 存储过程引发。任何数据库的任何数据库角色成员发生更改时,均将引发此事件。等效于 Audit Add Member to DB Role
事件类。

BACKUP_RESTORE_GROUP

发出备份或还原命令时,将引发此事件。等效于 Audit Backup/Restore
事件类。

DBCC_GROUP

主体发出任何 DBCC 命令时,将引发此事件。等效于 Audit DBCC
事件类。

SERVER_OPERATION_GROUP

使用安全审核操作(如使更改设置、资源、外部访问或授权)时将引发此事件。等效于 Audit Server Operation
事件类。

DATABASE_OPERATION_GROUP

数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。对于任何数据库的任何操作都将引发此事件。等效于 Audit Database Operation
事件类。

AUDIT_ CHANGE_GROUP

创建、修改或删除任何审核时,均将引发此事件。创建、修改或删除任何审核规范时,均将引发此事件。任何针对某审核的更改均将在该审核中审核。

SERVER_STATE_CHANGE_GROUP

修改 SQL Server 服务状态时将引发此事件。等效于 Audit Server Starts and Stops
事件类。

SERVER_OBJECT_CHANGE_GROUP

针对服务器对象执行 CREATE、ALTER 或 DROP 操作时将引发此事件。等效于 Audit Server Object Management
事件类。

SERVER_PRINCIPAL_CHANGE_GROUP

创建、更改或删除服务器主体时将引发此事件。等效于 Audit Server Principal
Management 事件类。

主体发出 sp_defaultdb 或 sp_defaultlanguage 存储过程或 ALTER LOGIN 语句时,将引发此事件。等效于
Audit Addlogin
事件类。

调用 sp_addlogin 和 sp_droplogin 存储过程时会引发此事件。还等效于 Audit Login Change Property
事件类。

此事件由 sp_grantlogin、sp_revokelogin 或 sp_denylogin 存储过程引发。等效于 Audit Login GDR
事件类。

DATABASE_CHANGE_GROUP

创建、更改或删除数据库时将引发此事件。创建、更改或删除任何数据库时均将引发此事件。等效于 Audit Database Management
事件类。

DATABASE_OBJECT_CHANGE_GROUP

针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。创建、更改或删除任何数据库对象时均将引发此事件。

注意:
这可能会导致生成大量审核记录。

等效于 Audit Database Object Management
事件类。

DATABASE_PRINCIPAL_CHANGE_GROUP

在数据库中创建、更改或删除主体(如用户)时,将引发此事件。等效于 Audit Database Principal
Management 事件类。(还等效于 Audit Add DB Principal 事件类,该事件类针对不推荐使用的
sp_grantdbaccess、sp_revokedbaccess、sp_addPrincipal 和 sp_dropPrincipal
存储过程时发生。)

使用 sp_addrole 或 sp_droprole
存储过程添加或删除数据库角色时,将引发此事件。创建、更改或删除数据库的任何主体时均将引发此事件。等效于 Audit Add Role
事件类。

SCHEMA_OBJECT_CHANGE_GROUP

针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。等效于 Audit Schema Object Management
事件类。

此事件针对架构对象引发。等效于 Audit Object Derived Permission
事件类。

任何数据库的任何架构发生更改时,均将引发此事件。等效于 Audit Statement Permission
事件类。

SERVER_PRINCIPAL_IMPERSONATION_GROUP

服务器范围中发生模拟(如 EXECUTE AS <登录名>)时将引发此事件。等效于 Audit Server Principal
Impersonation 事件类。

DATABASE_PRINCIPAL_IMPERSONATION_GROUP

数据库范围内存在模拟操作(如 EXECUTE AS <主体> 或
SETPRINCIPAL)时将引发此事件。此事件针对任何数据库中完成的模拟引发。等效于 Audit Database Principal
Impersonation 事件类。

SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP

服务器范围中的对象的所有者发生更改时将引发此事件。等效于 Audit Server Object Take
Ownership 事件类。

DATABASE_OWNERSHIP_CHANGE_GROUP

使用 ALTER AUTHORIZATION
语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。服务器上任意数据库的任意数据库所有权发生更改时,均将引发此事件。等效于
Audit Change Database Owner
事件类。

DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP

在数据库范围内更改对象所有者时,将引发此事件。服务器上任意数据库的任意对象所有权发生更改时,均将引发此事件。等效于 Audit Database Object Take
Ownership 事件类。

SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP

检查更改架构对象(例如表、过程或函数)的所有者的权限时,会引发此事件。使用 ALTER AUTHORIZATION
语句指定对象所有者时会引发此事件。服务器上任意数据库的任意架构所有权发生更改时,均将引发此事件。等效于 Audit Schema Object Take
Ownership 事件类。

SERVER_PERMISSION_CHANGE_GROUP

为获取服务器范围内的权限(例如,创建登录名)而发出 GRANT、REVOKE 或 DENY 语句时,将引发此事件。等效于 Audit Server Scope GDR
事件类。

SERVER_OBJECT_PERMISSION_CHANGE_GROUP

SQL Server 中的任何主体针对某服务器对象权限发出 GRANT、REVOKE、或 DENY 语句时,将引发此事件。等效于 Audit Server Object GDR
事件类。

DATABASE_PERMISSION_CHANGE_GROUP

SQL Server 中的任何主体针对某语句权限发出 GRANT、REVOKE 或 DENY
语句时均将引发此事件(仅适用于数据库事件,例如授予对某数据库的权限)。

服务器上任意数据库的任意数据库权限发生更改 (GDR) 时,均将引发此事件。等效于 Audit Database Scope GDR
事件类。

DATABASE_OBJECT_PERMISSION_CHANGE_GROUP

针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY
语句时将引发此事件。服务器上任意数据库的任意对象权限发生更改时,均将引发此事件。等效于 Audit Database Object GDR
事件类。

SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP

对架构对象执行 GRANT、DENY 或 REVOKE 语句时将引发此事件。等效于 Audit Schema Object GDR
事件类。

DATABASE_OBJECT_ACCESS_GROUP

访问数据库对象(如消息类型、程序集和协定)时将引发此事件。

此事件由对任何数据库的任何访问而引发。

注意:
这可能导致生成大量审核记录。

等效于 Audit Database Object Access
事件类。

SCHEMA_OBJECT_ACCESS_GROUP

每次在架构中使用对象权限时,都将引发此事件。等效于 Audit Schema Object Access
事件类。

BROKER_LOGIN_GROUP

引发此事件的目的是为了报告与 Service Broker 传输安全性相关的审核消息。等效于 Audit Broker Login
事件类。

DATABASE_MIRRORING_LOGIN_GROUP

引发此事件的目的是为了报告与数据库镜像传输安全性相关的审核消息。等效于 Audit Database Mirroring Login
事件类。

TRACE_CHANGE_GROUP

对于检查 ALTER TRACE 权限的所有语句,都会引发此事件。等效于 Audit Server Alter Trace
事件类。

注意事项

服务器级别操作组涵盖了整个 SQL Server
实例中的操作。例如,如果将相应操作组添加到服务器审核规范中,则将记录任何数据库中的任何架构对象访问检查。在数据库审核规范中,仅记录该数据库中的架构对象访问。

服务器级别的操作不允许对数据库级别的操作进行详细筛选。实现详细操作筛选需要数据库级别的审核,例如,对 Employee 组中登录名的
Customers 表执行的 SELECT
操作进行的审核。在用户数据库审核规范中不要包括服务器范围的对象,例如系统视图。

数据库级别审核操作组

数据库级别审核操作组是类似于 SQL Server 安全审核事件类的操作。有关事件类的详细信息,请参阅 SQL Server
事件类参考。

下表介绍了数据库级别审核操作组,并提供了适用的等效 SQL Server 事件类。

Audit Add Member to DB Role
事件类。

DATABASE_OPERATION_GROUP

数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。等效于 Audit Database Operation
事件类。

DATABASE_CHANGE_GROUP

创建、更改或删除数据库时将引发此事件。等效于 Audit Database Management
事件类。

DATABASE_OBJECT_CHANGE_GROUP

针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。等效于 Audit Database Object Management
事件类。

DATABASE_PRINCIPAL_CHANGE_GROUP

在数据库中创建、更改或删除主体(如用户)时,将引发此事件。等效于 Audit Database Principal
Management 事件类。还等效于 Audit Add DB User
事件类,该事件类针对不推荐使用的 sp_grantdbaccess、sp_revokedbaccess、sp_adduser 和
sp_dropuser 存储过程发生。

使用不推荐使用的 sp_addrole 和 sp_droprole 存储过程添加或删除数据库角色时,将引发此事件。等效于 Audit Add Role
事件类。

SCHEMA_OBJECT_CHANGE_GROUP

针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。等效于 Audit Schema Object Management
事件类。

此事件针对架构对象引发。等效于 Audit Object Derived Permission
事件类。还等效于 Audit Statement Permission
事件类。

DATABASE_PRINCIPAL_IMPERSONATION_GROUP

数据库范围中发生模拟(如 EXECUTE AS <用户> 或 SETUSER)时将引发此事件。等效于 Audit Database Principal
Impersonation 事件类。

DATABASE_OWNERSHIP_CHANGE_GROUP

使用 ALTER AUTHORIZATION 语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。等效于 Audit Change Database Owner
事件类。

DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP

数据库范围中的对象的所有者发生更改时将引发此事件。等效于 Audit Database Object Take
Ownership 事件类。

SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP

等效于 Audit Schema Object Take Ownership
事件类。检查更改架构对象(例如表、过程或函数)的所有者的权限时,将引发此事件。使用 ALTER AUTHORIZATION
语句指定对象所有者时会引发此事件。

DATABASE_PERMISSION_CHANGE_GROUP

SQL Server 中的任何用户针对某语句权限发出 GRANT、REVOKE 或 DENY
语句时均将引发此事件(仅适用于数据库事件,例如授予对数据库的权限)。等效于 Audit Database Scope GDR
事件类。

DATABASE_OBJECT_PERMISSION_CHANGE_GROUP

针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY 语句时将引发此事件。等效于 Audit Database Object GDR
事件类。

SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP

每次对架构对象发出 GRANT、DENY 或 REVOKE 时,均会引发此事件。等效于 Audit Schema Object GDR
事件类。

DATABASE_OBJECT_ACCESS_GROUP

访问数据库对象(如证书和非对称密钥)时将引发此事件。等效于 Audit Database Object Access
事件类。

SCHEMA_OBJECT_ACCESS_GROUP

每次在架构中使用对象权限时,都将引发此事件。等效于 Audit Schema Object Access
事件类。

数据库级别审核操作

数据库级别的操作支持直接对数据库架构以及架构对象(例如表、视图、存储过程、函数、扩展存储过程、队列、同义词)进行的特定操作进行审核。不审核类型、XML
架构集合、数据库和架构。架构对象的审核可以在架构和数据库上配置,这意味着指定架构或数据库包含的所有架构对象上的事件都将被审核。下表介绍了数据库级别的审核操作。

操作 说明

SELECT

发出 SELECT 语句时将引发此事件。

UPDATE

发出 UPDATE 语句时将引发此事件。

INSERT

发出 INSERT 语句时将引发此事件。

DELETE

发出 DELETE 语句时将引发此事件。

EXECUTE

发出 EXECUTE 语句时将引发此事件。

RECEIVE

发出 RECEIVE 语句时将引发此事件。

REFERENCES

检查 REFERENCES 权限时将引发此事件。

注意事项

数据库级别的审核操作不适用于列。

当查询处理器对查询进行参数化时,审核事件日志中会出现参数而不是查询的列值。

审核级别的审核操作组

您也可以对审核过程中的操作进行审核。这些操作可以是服务器范围或数据库范围的操作。如果在数据库范围内,则仅针对数据库审核规范而进行。下表介绍了审核级别的审核操作组。

操作组名称 说明

AUDIT_ CHANGE_GROUP

发出以下命令之一时将引发此事件:

  • CREATE SERVER AUDIT
  • ALTER SERVER AUDIT
  • DROP SERVER AUDIT
  • CREATE SERVER AUDIT SPECIFICATION
  • ALTER SERVER AUDIT SPECIFICATION
  • DROP SERVER AUDIT SPECIFICATION
  • CREATE DATABASE AUDIT SPECIFICATION
  • ALTER DATABASE AUDIT SPECIFICATION
  • DROP DATABASE AUDIT SPECIFICATION

 备注:文章内容来着SQLServer官方在线文档

总结

本篇文章主要是对审计概念有一个了解,下一篇文章会详细介绍如何收集审计信息。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

SQL Server 审计操作概念的更多相关文章

  1. SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)

    原文:SQL Server审计功能入门:SQL Server审核 (SQL Server Audit) 介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你"谁什么时候 ...

  2. SQL Server审计功能入门:CDC(Change Data Capture)

    原文:SQL Server审计功能入门:CDC(Change Data Capture) 介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. ...

  3. SQL Server审计功能入门:更改跟踪(Change Tracking)

    原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...

  4. (2.1)备份与还原--sql server文件的概念及操作

    概述:sql server是以文件形式存储数据与日志 1.数据文件 sql server数据文件分为2类 (1)主数据库文件 主数据库文件包含数据库的启动信息.系统对象,并指向数据库的其他文件(从数据 ...

  5. SQL Server 审计

    审计(Audit)用于追踪和记录SQL Server实例或数据库中发生的事件,审计主要包括审计对象(Audit)和审计规范(Audit Specification),创建审计首先需要创建一个SQL S ...

  6. SQL Server 审计(Audit)

    审计(Audit)用于追踪和记录SQL Server实例,或者单个数据库中发生的事件(Event),审计运作的机制是通过捕获事件(Event),把事件包含的信息写入到事件日志(Event Log)或审 ...

  7. Sql Server 常用操作2

    FOR XML PATH应用 stuID学生编号,sName代表学生姓名,hobby列存学生的爱好! SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as ho ...

  8. Sql Server 常用操作

    --DDL触发器CREATE   TRIGGER [TR_create_drop_alter_Table] ON DATABASE FOR CREATE_TABLE,DROP_table,ALTER_ ...

  9. C++对MS SQL Server的操作

    今天因为在做一份C++的期末作业,突然想用C++来链接数据库,实现数据的重复利用,所以就作死去百度搜了一下. 更巧的事情是,一搜居然还有很多搜索结果,然后就照着做了. 做的过程很艰辛,就不一一诉说了, ...

随机推荐

  1. Java爬虫_资源网站爬取实战

    对 http://bestcbooks.com/  这个网站的书籍进行爬取 (爬取资源分享在结尾) 下面是通过一个URL获得其对应网页源码的方法 传入一个 url  返回其源码 (获得源码后,对源码进 ...

  2. 【quickhybrid】H5和Native交互原理

    前言 Hybrid架构的核心就是JSBridge交互,而实现这个交互的前提是弄清楚H5和Native端的交互 本文主要介绍Native端(Android/iOS)和H5端(泛指前端)的交互原理 (之前 ...

  3. Jena将owl文件持久化到数据库中

    package cn.edu.shu.db; import java.io.File; import java.io.FileInputStream; import java.io.IOExcepti ...

  4. 【Jquery系列】JqGrid参数详解

    1   概述 本篇文章主要与大家分享JqGrid插件参数问题. 2   参数详解 2.1 初始化参数 2.2  ColModel参数 3   json数据 jqGrid可支持的数据类型:xml.jso ...

  5. Elasticsearch和MongoDB分片及高可用对比

    本文旨在对比Elasticsearch和MongoDB高可用和分片的实现机制. Elasticsearch ES天生就是分布式的,那她又是如何做到天生分布式的? 通过ES官方指南我们可以知道: 一个运 ...

  6. python中的subprocess.Popen()使用

    python中的subprocess.Popen()使用 从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返回 ...

  7. intellij idea 主题大全,看不惯idea 那2种主题的来这里了

    一直用默认的主题,但是白色的背景看久了会晃眼睛.所以打算换成黑色的. 不过Intellij只有两种主题,Default和Darcula. 现在只能自己手动安装一个了.新主题需要满足, 看久了不会太累. ...

  8. ligerUI---下拉框(Combobox)

    写在前面: 突然发现,从刚开始对ligerUI的抵触,觉得都没有接触过,也不会,到现在,感觉ligerUI的一些组件还是挺好用的,大概日久生情吧.嘻嘻~~~,下拉框是常用的一个组件,在之前的博客中也写 ...

  9. HTTP协议------->资源和URL

    1.前言 最近在研究http,希望结合书本,对网上资料进行整合,用“人话”聊聊这个玩意儿- 计划用近十篇文章,详尽的说清楚以下一些问题: URL和资源.HTTP报文是什么东西? HTTP是怎样进行链接 ...

  10. 设计模式之 - 代理模式(Proxy Pattern)

    代理模式:代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理.很多可以框架中都有用 ...