SQL Server 审计

审计(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)。

1,添加审计操作组

创建审计规范,选择审计对象,从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。

2,查看审计数据

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

或者通过TSQL 函数查看审计数据,

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 *from sys.fn_get_audit_file('E:\AuditFiles\*',default,default)

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

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

  • SELECT

  • UPDATE

  • INSERT

  • DELETE

  • EXECUTE

  • REFERENCES

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

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

四,维护审计

创建审计很简单,DBA需要更多关注的是审计数据的维护

略,后续补充

参考文档:

SQLSERVER2008新增的审核/审计功能

SQL Server Audit (Database Engine)

SQL Server Audit Action Groups and Actions

sys.fn_get_audit_file (Transact-SQL)

原文地址:http://www.cnblogs.com/ljhdo/p/5721668.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop入门(十九)Mapreduce的最大值程序

一、简介 最大值是统计中最常使用到的,现在使用Mapreduce在海量数据中统计数据的最大值。 二、例子 (1)实例描述 给出三个文件,每个文件中都存储了若干个数值,求所有数值中的最大值。 样例输入: …

jzoj3913-艰难的选择【差分,统计】

正题 题目大意 一个01串&#xff0c;求最长的子串使得0和1都相等。 解题思路 维护差分数组zzz&#xff0c;vixv_ixvi​x表示iii最早出现在差分数组的那个数字。枚举尾部&#xff0c;用viv_ivi​ codecodecode #include<cstdio> #include<algorithm> #include<…

ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与Session管理

本博文翻译自&#xff1a; https://dotnetcoretutorials.com/2017/10/16/owasp-top-10-asp-net-core-broken-authentication-session-management/ 在我们之前关于OWASP Top 10的文章中&#xff0c;我们讨论了SQL注入。SQL注入有一个非常明确的解释和例子&#xff0c;但这次我们…

Hadoop入门(二十)Mapreduce的最小值程序

一、简介 最小值是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的最小值。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的最小值。 样例输入&#xff1a; …

jzoj3914-人品问题【树形dp】

正题 题目大意 一棵树每个点有权值&#xff0c;选择kkk个点&#xff0c;要求选子节点之前必须要选父节点。求最大权值。 解题思路 树形背包限制一下必须选kkk个就好了 codecodecode #include<cstdio> #include<algorithm> #include<cstring> #define N 11…

Docker部署运行微服务

1、环境准备&#xff1a; 主机&#xff1a; X-shell X-ftp jar包 这里只说下jar包&#xff0c;另外两个到官网下载即可 Idea打包jar包流程 先按这四步走 先点击左下的框框&#xff0c;再点击maven&#xff0c;出现右边的窗口&#xff0c;点击clean&#xff0c;再点击package&…

Hadoop入门(二十一)Mapreduce的求和程序

一、简介 求和是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求和。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求和。 样例输入&#xff1a; …

欢乐纪中某B组赛【2019.1.24】

前言 划水AKAKAK 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself3003003001001001001001001001001001001112017xjq2017xjq2017xjq3003003001001001001001001001001001009992017zyc2017zyc2017zyc26…

.net ef core 领域设计代码转换(上篇)

一、前言 .net core 2.0正式版已经发布几个月了&#xff0c;经过研究&#xff0c;决定把项目转移过来&#xff0c;新手的话可以先看一些官方介绍 传送门&#xff1a;https://docs.microsoft.com/zh-cn/dotnet/core/ 由于在领域设计模型上遇到了一些坑&#xff0c;故给大家分享出…

NAT是什么?它有什么功能?值不值得我们去学习?我们该如何去学习呢?

NAT是网络地址转换&#xff08;Network Address Translation&#xff09;的缩写&#xff0c;是一种用于将私有网络内部IP地址转换为公共网络IP地址的技术。NAT最初被设计用于解决IPv4地址短缺的问题&#xff0c;但现在也被广泛用于在家庭和企业网络中共享单个公共IP地址。 NAT…

Hadoop入门(二十二)Mapreduce的求平均值程序

一、简介 求平均值是统计中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求平均值。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求平均值。 样例输入&#xff1a; …

mysql添加新用户

新建用户 create user ‘kejin’‘localhost’ identified by ‘123456’; 删除用户 DROP USER ‘kejin’‘localhost’; 为所有数据库/表赋予 CREATE 和 INSERT 权限&#xff1a; GRANT CREATE, INSERT ON . TO ‘myuser’‘localhost’; 验证给用户赋予的全权限&#xff…

jzoj1610(初中)-导弹【最大匹配,最短路,二分答案】

正题 题目大意 有KKK个点&#xff0c;NNN个点a∈Aa\in Aa∈A&#xff0c;MMM个点b∈Bb\in Bb∈B。 给x∈Bx\in Bx∈B点集匹配一个y∈Ay\in Ay∈A点集的点&#xff0c;使他之间的最长最短路径最短。 解题思路 FlodyFlodyFlody暴力预处理最短路&#xff0c;然后二分答案midmidmi…

Debug ASP.NET Core 2.0源代码

首先你的VS必须为VS 2017 15.3或以上版本。 打开你的Startup类&#xff0c;在ConfigureServices方法上设置个断点&#xff0c;按F5 Debug应用。 在Call Stack&#xff08;调用堆栈&#xff09;窗口&#xff0c;我们只能看到自己的代码。打开VS tools&#xff08;工具&#xff…

Hadoop入门(二十三)Mapreduce的求数量最大程序

一、简介 在文件中统计出现最多个数的单词&#xff0c;将其输出到hdfs文件上。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都若干个单词以空白符分隔&#xff0c;需要统计出现最多的单词 …

解决微服务在docker上部署后无法连接数据库的问题

在利用docker部署完应用程序后&#xff0c;就接着考虑如何将程序连接到数据库。 但是过程中发现一些问题&#xff1a; 本地程序在打包后连接的是本地的数据库&#xff0c;在服务器上部署之后必须提供相同的环境才能部署成功。 这里博主用的是宝塔安装的mysql&#xff0c;并尝…

P3365,jzoj3894-改造二叉树【LIS,BST】

正题 题目大意 一棵二叉树&#xff0c;有点权。求修改最少的点使得这是一个BSTBSTBST。 解题思路 二叉查找树满足点权的中序单调递增。 所以跑一遍中序遍历&#xff0c;就变为了求修改多少遍使一个序列单调递增。 求最长上升就好了。可是要求修改的是整数&#xff0c;所以需…

我心中的ASP.NET Core 新核心对象WebHost(一)

以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬。&#xff08;虽然不知道前辈现在在干什么&#xff09;。一晃就6年过去了&#xff0c;那首 郝云 的《回到那一天》怎么唱来着&#xff1f; 时光一晃&#xff0c;你就三十了。 而我们都变成了老了的程序员 ASP.NET …

Hadoop入门(二十四)Mapreduce的求TopK程序

一、简介 求TopK是算法中最常使用到的&#xff0c;现在使用Mapreduce在海量数据中统计数据的求TopK。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都存储了若干个数值&#xff0c;求所有数值中的求Top 5。 样例输入&#xff1a; …

DML、DDl、DQL实战

表的创建与删除 create table 学生成绩( id int primary key, name char(10) not null, sex char(10) not null, 物理 int not null, 语文 int not null, 英语 int not null, 数学 int )DEFAULT CHARSETutf8mb4; drop table 学生成绩; DML 数据操纵语言DML主要有三种形式&a…