审计(Audit)用于追踪和记录SQL Server实例或数据库中发生的事件,审计主要包括审计对象(Audit)和审计规范(Audit Specification),创建审计首先需要创建一个SQL Server 实例级的审计对象,然后,创建从属于它的“服务器审计规范”或“数据库审计规范”。审计数据可以输出到审计文件(File)、安全日志(Security Log)和应用程序日志(Application Log)。

启用审计的目的一般是为了监控SQL Server执行的操作,例如,记录什么人在什么时候查询数据、修改数据,登陆SQL Server实例等,由于审计记录的数据有可能很丰富,因此,启用审计可能产生大量的日志数据,占用磁盘的大量空间。审计使用一句话来概括就是:记录谁在什么时候做了什么事,审计对象(Audit)定义:配置数据存在何处,而审计规范(Audit Specification)定义:记录什么事,一旦特定的事件触发,SQL Server引擎就使用审计记录事件发生的现场信息。

创建和使用审计的一般步骤是:

  • step1:创建服务器级别的审计对象,并启用审计对象;
  • step2:创建审计规范,并映射到审计对象审核,启用审计规范,审计对象开始追踪和记录数据;
  • step3:查看审计数据,可以通过使用SSMS的”Log Files Viewer“或函数sys.fn_get_audit_file 查看记录的日志数据。

一,创建审计对象

首先创建服务器级别的审计对象,展开"Security",右击Audits,通过“New Audit”,打开“Create Audit”窗体开始创建审计对象,审计输出的数据保存到“Audit destination”中,本文选择File,把数据存储到审计文件中,其他类型是:Security Log和Application Log。Queue delay是指数据写入到审计文件的延迟,默认是1s。审计对象的作用是指定审计数据保存的路径,以及写入数据的延迟和数据文件的大小,审计对象主要是存储审计规范的数据。

根据硬盘空间的限制,设置审计对象的属性 Audit File maximum Limit、Maximum File size、以及Reserve disk space,控制审计文件的大小,管理硬盘空间的使用,避免硬盘爆掉。

创建的审计对象默认是禁用(Disable)的,在使用审计对象之前,必须启用,选中新建的审计对象,右击,选中“Enable Audit”。

二,创建服务器级别的审计规范

展开服务器级别的Security,选中“Server Audit Specifications”,右击弹出快捷菜单,选择“New Server Audit Specifications”,打开“Create Server Audit Specifications”的窗体,通过UI创建审计规范:

审计规范指定审计对象记录的事件类型,在审计规范中指定的事件类型,SQL Server 一旦检测到事件发生,就会把跟该事件相关的信息写入到审计对象指定的文件中,保存起来,以便于后续的检查(review)。

使用向导来创建服务器级别的审计规范,从列表中选择审计对象,从Audit Action Type列表中选择审计操作组,创建的审计规范默认是禁用的,选中新建的审计规范,右击弹出快捷菜单,选中”Enable Server Audit Specifications “启用:

从审核操作类型列表中选择审计操作组,审计操作组是审计记录的事件操作类型,常用的审计操作组是:

  • DATABASE_OBJECT_ACCESS_GROUP:访问数据库对象时将引发此事件;
  • DATABASE_OBJECT_CHANGE_GROUP:针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。 创建、更改或删除任何数据库对象时均将引发此事件。
  • DATABASE_OPERATION_GROUP:数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。 对于任何数据库的任何操作都将引发此事件。
  • FAILED_DATABASE_AUTHENTICATION_GROUP:指示某个主体尝试登录到数据库并且失败。
  • FAILED_LOGIN_GROUP:指示主体尝试登录到 SQL Server ,但是失败。
  • SUCCESSFUL_LOGIN_GROUP:指示主体已成功登录到 SQL Server。

三,创建数据库级别的审计规范

在数据库的Security中右击“Database Audit Specifications”,数据库级别的审计操作组,大部分和服务器级别的审计操作组很相似,除了数据库级别的审计动作(Database-Level Audit Actions),在数据库对象上发生以下操作(Action)时,记录事件的信息:

  • SELECT
  • UPDATE
  • INSERT
  • DELETE
  • EXECUTE
  • REFERENCES

1,使用Wizard创建数据库审计规范

数据库级别的审计操作追踪和记录的是数据库对象(schema,objects)上发生的事件,因此必须配置Object Class、Object Schema,Object Name 和 Principal Name字段:

查看审计数据,选中Server级别的审计对象,通过”View Audit Logs“查看记录的日志数据。

2,使用TSQL命令创建数据库级别的审计规范

在审计规范中,如何设置Principal为public,表示对所有database principals进行审计。

CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-20191118-091731]
FOR SERVER AUDIT [Audit-20191118-090843]
ADD (DELETE ON Schema::schema_name BY public)
WITH (STATE = ON) ;

四,查看审计数据

用户可以通过两种方式来查看审计数据,第一种是使用UI来查看,第二种是使用系统视图来查看。

1,使用UI查看审计数据

点击审计对象,右击弹出快捷菜单,点击”View Audit Logs“查看审计对象记录的数据:

2,通过TSQL 函数查看审计数据

查看审计数据通过sys.fn_get_audit_file()来查看:

sys.fn_get_audit_file ( file_pattern,
{ default | initial_file_name | NULL },
{ default | audit_record_offset | NULL } )

审计文件名由四部分组成:AuditName_GUID_n_m.sqlaudit,第一个参数是file_pattern,包括路径和文件名,对于文件名,可以通过特殊的匹配符指定:

  • *:表示所有的字符;
  • {}:指定GUID;
  • 如果文件名以扩展名( .sqlaudit)结尾,表示查看特定的文件;

例如,查看所有的审计文件中记录的数据:

select  f.event_time
,f.sequence_number
,f.action_id
,a.name as action_name
,f.succeeded
,f.session_server_principal_name
,f.server_principal_name
,f.database_name
,f.object_id
,f.schema_name
,f.object_name
,f.class_type
,m.class_type_desc
,f.statement
,f.application_name
from sys.fn_get_audit_file('G:\AuditFiles\*',default,default) f
inner join sys.dm_audit_actions a
on f.action_id=a.action_id
inner join sys.dm_audit_class_type_map m
on f.class_type=m.class_type

参考文档:

SQLSERVER2008新增的审核/审计功能

SQL Server Audit (Database Engine)

SQL Server Audit Action Groups and Actions

sys.fn_get_audit_file (Transact-SQL)

SQL Server 审计的更多相关文章

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

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

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

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

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

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

  4. SQL Server 审计操作概念

    概述 对于一般的数据库系统审计可能不太会被重视,但是对于金融系统就不一样的.金融系统对审计要求会很高,除了了记录数据库各种操作记录还可能会需要开发报表来呈现这些行为数据.使用SQL Server Au ...

  5. SQL Server 审计(Audit)

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

  6. SQL Server安全(2/11):身份验证(Authentication)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  7. 第二篇 SQL Server安全验证

    本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...

  8. 【译】第二篇 SQL Server安全验证

    本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...

  9. 第14周翻译:SQL Server的阶梯安全级别2

    SQL Server的阶梯安全级别2:身份验证 源自:http://www.sqlservercentral.com/articles/Stairway+Series/109975/ 作者:Don K ...

随机推荐

  1. 使用SQLite做本地数据缓存的思考

    前言 在一个分布式缓存遍地都是的环境下,还讲本地缓存,感觉有点out了啊!可能大家看到标题,就没有想继续看下去的欲望了吧.但是,本地缓存的重要性也是有的! 本地缓存相比分布式缓存确实是比较out和比较 ...

  2. 基于nginx的虚拟主机的配置

    安装pcre tar -xvf pcre-8.32.tar.gz cd pcre-8.32 ./configure make;make install 安装nginx 首先创建一个nginx用户,以n ...

  3. java程序调用存储过程和存储函数

    java程序调用存储过程 jdbcUtil.java文件 package cn.itcast.oracle.utils; import java.sql.Connection; import java ...

  4. RESTful API 架构解读

    RESTful API 架构解读 首先我们还是先介绍下 RESTful api 的来龙去脉. 首先, RESTful (下文都简称 RESTful api 为 RESTful ) 1.RESTful ...

  5. 使用Jquery.cookie.js操作cookie

    query.cookie.js是一个基于jquery的插件,点击下载! 创建一个会话cookie: $.cookie(‘cookieName’,'cookieValue’); 注:当没有指明cooki ...

  6. exp3.1实现顺序栈的各种操作

    #include<iostream>using namespace std;#include<malloc.h>typedef char Elem;typedef struct ...

  7. 在项目中集成jetty server

    为什么使用jetty 使用 tomcat 开发效率并不是太高,并且在eclipse有时两秒做更新,有时候又得手动去部署显得非常麻烦.折算我们可以使用 jetty server 由于 eclipse开发 ...

  8. Java IO(IO流)-1

    IO流 第一部分 (outputStream/InputStream Writer/Redaer) IO流对象中输入和输出是相辅相成的,输出什么,就可以输入什么. IO的命名方式为前半部分能干什么,后 ...

  9. PyCharm 2017 官网 下载 安装 设置 配置 (主题 字体 字号) 使用 入门 教程

    一.安装 Python 3.6 首先,要安装好 Python 3.6.如果你还没有安装,可以参考咪博士之前的教程 Python 3.6.3 官网 下载 安装 测试 入门教程 (windows) 二.官 ...

  10. Single Number2

    题目链接:http://oj.leetcode.com/problems/single-number-ii/ Given an array of integers, every element app ...