SQLServer审计功能配置

一. SQL Server审计功能介绍

SQL Server审计功能(Audit)是SQL Server 2008之后才有的功能,审计(Audit)用于追踪和记录SQL Server实例,或者单个数据库中发生的事件(Event),审计运作的机制是通过捕获事件(Event),把事件包含的信息写入到事件日志(Event Log)或审计文件(Audit File)中,为review提供最真实详细的数据。

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

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

  1. 创建审核并启用。

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

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

官方手册参考:https://learn.microsoft.com/zh-cn/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions?view=sql-server-ver16

二. 启用审核功能

下面以SQL Server2019为例,启用审核功能,具体配置过程如下:

1.创建审核并启用

“SQL Server 审核” 对象收集单个服务器实例或数据库级操作和操作组以进行监视。 这种审核处于 SQL Server 实例级别。 每个 SQL Server 实例可以具有多个审核。

定义审核时,将指定结果的输出位置,这是审核的目标位置。目标位置支持三种,分别是文件、windows安全事件日志、windows应用程序事件日志。 审核是在 禁用 状态下创建的,因此不会自动审核任何操作。 启用审核后,审核目标将从审核接收数据。

创建审核可以通过SSMS界面化配置,也可通过执行SQL语句实现。

(1)创建一个审核,名为 Audit-logfile,目标位置为文件(审核结果文件存放在c:\dbaudit路径中),通过SSMS界面化配置方法如下:
用管理员账号登录SQL Server管理工具(SQL Server Management Studio),在“安全性”-“审核”菜单上,右键-“新建审核”,如下图:
在这里插入图片描述
新建审核界面如下图:
在这里插入图片描述
点击“确定”即可创建一个审核,创建后在“安全性”-“审核”下面多了一个名为“Audit-logfile”的审核配置,默认是未启用状态(红色的叉号表示未启用,若想启用审核,可右键点击,选择启用审核即可),如下图:
在这里插入图片描述

对应的通过SQL语句方式创建审核的语句如下:

USE [master]
GOCREATE SERVER AUDIT [Audit-logfile]
TO FILE 
(	FILEPATH = N'C:\dbaudit\',MAXSIZE = 1024 MB,MAX_FILES = 100,RESERVE_DISK_SPACE = ON
) 
WITH 
(	QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE
)ALTER SERVER AUDIT [Audit-logfile] WITH (STATE = OFF)
GO

如下图,执行sql语句后,会在左侧“安全性”-“审核”下面生成一个名为“Audit-logfile”的配置:
在这里插入图片描述
SQL语句中相关参数说明如下:

  • TO FILE:指定输出到审核文件,也可以指定为SECURITY_LOG和APPLICATION_LOG。

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

  • MAXSIZE:单个审核文件的大容量。

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

  • RESERVE_DISK_SPACE:预先分配审核文件到MAXSIZE,推荐启用。

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

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

  • ALTER SERVER AUDIT [Audit-logfile] WITH (STATE = OFF) # 该语句是是否启用审核,默认是创建时未启用(STATE = OFF),也可以创建的时候直接启用(STATE = ON)

启用审核后,在服务器 C:\dbaudit 路径下会生成一个 审计日志文件(Audit-logfile),如下图:
在这里插入图片描述
文件为sqlaudit类型(不可读,后面需要通过sql语句进行查询:select * from sys.fn_get_audit_file(‘C:\dbaudit*’,default,default))

(2)创建一个审核,名为 Audit-log,目标位置为windows应用程序日志(审核结果写在windows应用程序事件中),通过SSMS界面化配置方法如下:
在这里插入图片描述
通过sql语句创建如下:

USE [master]
GOCREATE SERVER AUDIT [Audit-log]
TO APPLICATION_LOG 
WITH (
QUEUE_DELAY = 1000, 
ON_FAILURE = CONTINUE
)
ALTER SERVER AUDIT [Audit-log] WITH (STATE = ON)  --创建时启用
GO

上面创建了两个审核,Audit-logfile 和 Audit-log(审核目标位置不同),介绍了目标位置为不同方式的两种创建方法,实际运用中可选择其中一种即可。

2. 创建审核规范并启用

审核规范可以是服务器级别的审核规范,也可以是数据库级别的审核规范,二者创建一种即可。

如果是服务器级别的审核规范,则审核规范对所有数据库都生效,如果是数据库级别的审核规范,则需要对每一个具体的数据库定义审核规范。

下面分别介绍两种审核规范的创建方式。

2.1 创建服务器审核规范

“服务器审核规范” 对象属于审核。 您可以为每个审核创建一个服务器审核规范,因为它们都是在 SQL Server 实例范围内创建的。

服务器审核规范可收集许多由扩展事件功能引发的服务器级操作组。 您可以在服务器审核规范中包括“审核操作组” 。 审核操作组是预定义的操作组,它们是 数据库引擎中发生的原子事件。 这些操作将发送到审核,审核将它们记录到目标中。

如为上一步创建的审核(Audit-logfile) 创建一个服务器审核规范,下面分别介绍两种方式:通过SSMS界面配置和通过SQL语句创建。

(1)通过SSMS界面创建服务器审核规范
右键“安全性”-“服务器审核规范”:
在这里插入图片描述
点击“新建服务器审核规范”:
在这里插入图片描述
如上图:名称自定义,如Server-audit,审核对象选择 Audit-logfile,审核操作类型可选择需要审计的类型:
在这里插入图片描述
部分审计类型含义如下:

  • AUDIT_CHANGE_GROUP:当Audit被创建、修改和删除时,触发该事件
  • BATCH_COMPLETED_GROUP:当任何batch、sp或事务完成执行时,触发该事件,并记录下执行的命令的文本。
  • BATCH_STARTED_GROUP:当任何batch、sp或事务开始执行时,触发该事件,并记录下执行的命令的文本。
  • DATABASE_OBJECT_CHANGE_GROUP:当任何数据库中的对象执行create、alter或drop命令时,触发该事件,可能会产生巨大的审计日志
  • FAILED_LOGIN_GROUP:当一个principal尝试登录SQL Server,并失败时,触发该事件
  • FAILED_DATABASE_AUTHENTICATION_GROUP:当一个Principal尝试登录数据库,并失败时,触发该事件
  • SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP:当一个principal成功登录SQL Server中的数据库时,触发该事件
  • SUCCESSFUL_LOGIN_GROUP:当一个principal成功登录SQL Server时,触发该事件

(2)通过SQL语句创建,执行sql语句如下:

USE [master]
GOCREATE SERVER AUDIT SPECIFICATION [Server-audit]
FOR SERVER AUDIT [Audit-logfile]
ADD (FAILED_LOGIN_GROUP),
ADD (FAILED_DATABASE_AUTHENTICATION_GROUP),
ADD (SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (SCHEMA_OBJECT_CHANGE_GROUP),
ADD (SCHEMA_OBJECT_ACCESS_GROUP),
ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP)
WITH (STATE = ON)
GO

执行成功后,会在左侧“安全性”-“服务器审核规范”下面生成一条配置,名为 Server-audit,如下图
在这里插入图片描述

2.2 创建数据库审核规范

“数据库审核规范” 对象也属于 SQL Server 审核。 针对每个审核,您可以为每个 SQL Server 数据库创建一个数据库审核规范。

数据库审核规范可收集由扩展事件功能引发的数据库级审核操作。 你可以向数据库审核规范添加审核操作组或审核事件。 审核事件 是可以由 SQL Server 引擎审核的原子操作。 “审核操作组”是预定义的操作组。 它们都位于 SQL Server 数据库作用域。 这些操作将发送到审核,审核将它们记录到目标中。

下面分别介绍两种方式:通过SSMS界面创建和通过执行SQL语句创建数据库审核规范,针对测试环境数据库mydb创建数据库审核规范。

(1)通过SSMS界面创建数据库审核规范
选择“数据库”-mydb-“安全性”-“数据库审核规范”,右键如下图:
在这里插入图片描述
点击“新建数据库审核规范”,如下图:
在这里插入图片描述
如上图:名称自定义,如Db-Audit,审核对象选择 Audit-logfile,审核操作类型可选择需要审计的事件操作类型等:
在这里插入图片描述
(2)通过执行SQL语句创建数据库审核规范

use [mydb]
GOCREATE DATABASE AUDIT SPECIFICATION [Db-Audit]
FOR SERVER AUDIT [Audit-logfile]
ADD (DELETE,UPDATE,SELECT,INSERT ON DATABASE::[mydb] BY [public])
WITH (STATE = ON)
GO

执行如下图:
在这里插入图片描述
执行成功后,会在左侧 “数据库”-mydb-“安全性”-“数据库审核规范” 下面生成一个名为 Db-Audit 的配置项。

数据库级别的审核规范,审计动作组部分含义如下:

  • BATCH_COMPLETED_GROUP
  • BATCH_STARTED_GROUP
  • DATABASE_OBJECT_CHANGE_GROUP:当对数据库对象执行CREATE、ALTER、 或 DROP命令时,触发该事件
  • DATABASE_OBJECT_PERMISSION_CHANGE_GROUP:当数据库对象的权限(执行GRANT, REVOKE, or DENY)发生变化时,触发该事件
  • DATABASE_PRINCIPAL_CHANGE_GROUP:当数据库中的user,role等发生变化时,触发该事件
  • SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP:当一个Schema中的对象的权限(执行GRANT, REVOKE, or DENY)发生变化时,触发该事件
  • SCHEMA_OBJECT_CHANGE_GROUP:当对Schema中的对象执行CREATE、ALTER、 或 DROP命令时,触发该事件
  • SCHEMA_OBJECT_ACCESS_GROUP:当schema中的对象的权限发生变化时,触发该事件

数据库级别的审核规范,单个审计动作如下:
数据库级别的审计动作(Audit Action),分别在执行查询、修改、插入、删除、执行、等命令时触发

  • SELECT :发出 SELECT 语句时将引发此事件。
  • UPDATE: 发出 UPDATE 语句时将引发此事件。
  • INSERT: 发出 INSERT 语句时将引发此事件。
  • DELETE: 发出 DELETE 语句时将引发此事件。
  • EXECUTE: 发出 EXECUTE 语句时将引发此事件。
  • RECEIVE: 发出 RECEIVE 语句时将引发此事件。
  • REFERENCES: 检查 REFERENCES 权限时将引发此事件。

3. 查看审核事件日志

3.1 通过SSMS日志文件查看器查看

右键 “安全性”-“审核”-“Audit-logfile”, 选择 “查看审核日志”:
在这里插入图片描述
日志如下图所示:
在这里插入图片描述

3.2 针对目标位置为文件的审核日志

通过SQL查询:

select * from 
sys.fn_get_audit_file('C:\dbaudit\*',default,default)

如下图:
在这里插入图片描述

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

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

相关文章

RHCE——九、SELinux

SELinux 一、概念1、作用2、SELinux与传统的权限区别 二、SELinux工作原理1、名词解释主体(Subject)目标(Object)策略(Policy)安全上下文(Security Context) 2、文件安全上下文查看1…

springboot使用properties

一、方式1: 1.1.配置类: package cn.zyq.stater.config;import cn.zyq.stater.bean.User4; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework…

第 3 章 栈和队列(顺序栈,算法 3.3)

1. 背景说明: 若迷宫 maze 中存在从入口 start 到出口 end 的通道,则求得一条存放在栈中(从栈底到栈顶),并返回 TRUE;否则返回 FALSE,注意,该解并非最优解, 最优解需要求得最短路径且可能并非…

源码角度看待线程池的执行流程

文章目录 前言一、线程池的相关接口和实现类1.Executor接口2.ExecutorService接口3.AbstractExecutorService接口4.ThreadPoolExecutor 实现类 二、ThreadPoolExecutor源码解析1.Worker内部类2.execute()方法3.addWorker()方法 总结 前言 线程池内部维护了若干个线程&#xff…

C++笔记之静态成员函数可以在类外部访问私有构造函数吗?

C笔记之静态成员函数可以在类外部访问私有构造函数吗? 参考笔记: 1.C笔记之静态成员函数可以在类外部访问私有构造函数吗? 2.C笔记之设计模式:setter函数、依赖注入 3.C笔记之两个类的实例之间传递参数——通过构造函数传递类对象…

Springboot集成Docker并将镜像推送linux服务器

案例使用springboot项目,在IDEA 中集成Docker生成镜像,并将镜像发布到linux服务器 具体步骤如下: 1、Centos7安装Docker 更新系统的软件包列表 sudo yum update安装Docker所需的软件包和依赖项: sudo yum install docker完成…

说说FLINK细粒度滑动窗口如何处理

分析&回答 Flink的窗口机制是其底层核心之一,也是高效流处理的关键。Flink窗口分配的基类是WindowAssigner抽象类,下面的类图示出了Flink能够提供的所有窗口类型。 Flink窗口分为滚动(tumbling)、滑动(sliding&am…

postgresql-子查询

postgresql-子查询 简介派生表IN 操作符ALL 操作符ANY 操作符关联子查询横向子查询EXISTS 操作符 简介 子查询(Subquery)是指嵌套在其他 SELECT、INSERT、UPDATE 以及 DELETE 语句中的 查询语句。 子查询的作用与多表连接查询有点类似,也是为…

NTP时钟同步服务器

目录 一、什么是NTP? 二、计算机时间分类 三、NTP如何工作? 四、NTP时钟同步方式(linux) 五、时间同步实现软件(既是客户端软件也是服务端软件) 六、chrony时钟同步软件介绍 七、/etc/chrony.conf配置文件介…

JVM内存管理、内存分区:堆、方法区、虚拟机栈、本地方法栈、程序计数器

内存管理 内存分区 线程共享 堆 存放实例,字符串常量(直接引用),静态变量,线程分配缓冲区(TLAB线程私有)。垃圾收集器管理的区域 方法区 非堆,和堆相对的概念。存储已被虚拟机加载的…

uniapp的 picker 日期时间选择器

效果图&#xff1a; dateTimePicker.js function withData(param){return param < 10 ? 0 param : param; } function getLoopArray(start,end){var start start || 0;var end end || 1;var array [];for (var i start; i < end; i) {array.push(withData(i))…

【ACM出版】第四届人工智能与计算工程国际学术会议(ICAICE 2023)

ACM出版|第四届人工智能与计算工程国际学术会议 The 4th International Conference on Artificial Intelligence and Computer Engineering 为了在人工智能技术应用与计算工程领域进一步的探索&#xff0c;与国内外学界和业界相关人员交流新问题、新发现、新成果、新应用&…

__call__函数

一、定义 在Python中&#xff0c;__call__函数是一个特殊的方法&#xff0c;用于使一个对象可以像函数一样被调用。当一个对象定义了__call__方法时&#xff0c;它就成为了一个可调用对象。 二、使用 class Counter:def __init__(self):self.count 0def __call__(self):sel…

查局域网所有占用IP

查局域网所有占用IP 按&#xff1a;winr 出现下面界面&#xff0c;在文本框中输入 cmd 按确定即可出现cmd命令界面 在cmd命令窗口输入你想要ping的网段&#xff0c;下面192.168.20.%i即为你想要ping的网段&#xff0c;%i代表0-255 for /L %i IN (1,1,254) DO ping -w 1 -n 1…

优化物料编码规则,提升物料管理效率

导 读 ( 文/ 2358 ) 物料是生产过程的必需品。对物料进行身份的唯一标识&#xff0c;可以更好的管理物料库存、库位&#xff0c;更方便的对物料进行追溯。通过编码规则的设计&#xff0c;可以对物料按照不同的属性、类别或特征进行分类&#xff0c;从而更好地进行库存分析、计划…

业务需要咨询?开发遇到 bug 想反馈?开发者在线提单功能上线!

大家是否遇到过下列问题—— 在开发的时候&#xff0c;遇到 bug 需要反馈… 有合作意向的时候&#xff0c;想更多了解业务和相关产品… 在接入的时候&#xff0c;需要得到专业技术支持… 别急&#xff0c;荣耀开发者服务平台在线提单功能上线了~ 处理问题分类说明&#xff1…

ElasticSearch(一)数据类型

ElasticSearch&#xff08;一&#xff09;数据类型 1.简述 Es数据类型分为基础数据类型和复杂类型数据&#xff0c;掌握ES数据类型才能进一步使用ES检索数据内容。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

阿里云申请免费SSL证书的两种验证方式及配置服务器Tomcat升级HTTPS协议

通用教程&#xff0c;其他服务商的免费 SSL 证书也差不多是这个流程。&#xff08;至少腾讯云的操作步骤和本文是一致&#xff0c;嘻嘻&#xff01;&#xff09; 申请 SSL 证书 首先在阿里云上创建并申请 SSL 证书&#xff0c;之后选择 DNS 验证的方式&#xff0c;一种是手动配…

【Go 基础篇】Go语言结构体详解:打开自定义类型的大门

嗨&#xff0c;Go语言学习者们&#xff01;在编程的世界里&#xff0c;数据是核心&#xff0c;而结构体&#xff08;Struct&#xff09;是一种能够帮助我们更有组织地存储和操作数据的重要工具。在本篇博客中&#xff0c;我们将深入探讨Go语言中结构体的概念、定义、初始化、嵌…

PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化...

全文下载链接:http://tecdat.cn/?p29480 作者&#xff1a;Xingsheng Yang 1 利用 python 爬取链家网公开的租房数据&#xff1b; 2 对租房信息进行分析&#xff0c;主要对房租相关特征进行分析&#xff0c;并搭建模型用于预测房租&#xff08;点击文末“阅读原文”获取完整代码…