SQLServer审计功能配置

news2024/10/7 14:27:03

一. 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]
GO

CREATE 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]
GO

CREATE 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]
GO

CREATE 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]
GO

CREATE 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.coloradmin.cn/o/951889.html

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

相关文章

Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…

3分钟上手Python的命令行参数解析

1 简介 处理命令行参数对许多程序来说都是必不可少的功能。今天为大家介绍 Python 中的 argparse 模块&#xff0c;它是 Python 标准库中的一个模块&#xff0c;它可以让开发者非常简单地为程序添加命令行参数接口&#xff0c;包括位置参数、可选参数、标志等&#xff0c;并自…

测试左移——代码审计SonarQube 平台搭建

一、sonarqube代码分析技术体系 1、代码分析工具 IDE 辅助功能 xcode、android studio阿里巴巴 java 开发手册 ide 插件支持 独立的静态分析工具 spotbugs、findbugs、androidlint、scan-build、Checkstyle、FindSecBugspmd 阿里巴巴 java 开发手册 pmd 插件 综合性的代码…

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

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

DWA算法学习

一、DWA概念  DWA(动态窗口法)属于局部路径规划方法&#xff0c;为ROS中主要采用的方法。其原理主要是在速度空间&#xff08;v,w&#xff09;中采样多组速度&#xff0c;并模拟这些速度在一定时间内的运动轨迹&#xff0c;再通过一个评价函数对这些轨迹打分&#xff0c;最优的…

2023年全国职业院校技能大赛网络系统管理赛项 模块B:服务部署 卷II

2023年全国职业院校技能大赛 GZ073网络系统管理赛项 模块B&#xff1a;服务部署 卷II 目 录 一、Windows项目任务描述 1 &#xff08;一&#xff09;拓扑图 1 &#xff08;二&#xff09;网络地址规划 1 二、Windows项目任务清单 2 &#xff08;一&#xff09;服务器IspSrver…

数据库(一) 基础知识

概述 数据库是按照数据结构来组织,存储和管理数据的仓库 数据模型 数据库系统的核心和基础是数据模型&#xff0c;数据模型是严格定义的一组概念的集合。因此数据模型一般由数据结构、数据操作和完整性约束三部分组成。数据模型主要分为三种:层次模型&#xff0c;网状模型和关…

【云原生】Ansible自动化批量操作工具playbook剧本

目录 1.playbook相关知识 1.1 playbook 的简介 1.2 playbook的 各部分组成 2. 基础的playbook剧本编写实例 2.1 playbook编写Apache安装剧本&#xff08;yum方式安装&#xff09; 报错集&#xff1a; 实例2&#xff1a;playbook编写nginx 的yum安装并且能修改其监听端口的…

QT基础教程之四QMainWindow

QT基础教程之四QMainWindow QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08;menu bar&#xff09;、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)&#xff0c;是许多应用程序…

13、监测数据采集物联网应用开发步骤(9.2)

监测数据采集物联网应用开发步骤(9.1) TCP/IP Server开发 新建TCP/IP Server线程类com.zxy.tcp.ServerThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import socket,threading,time from com.zxy.tcp.TcpServer import …

业务流程与逻辑编排的低代码平台,一文全方位了解它的轻应用信息

JVS低代码开发平台提供了大量的可配置组件和预先集成的功能&#xff0c;开发人员可以通过拖拽和设置属性的方式&#xff0c;快速搭建应用程序的前端界面和交互逻辑。同时&#xff0c;低代码平台也提供了丰富的后端服务和集成能力&#xff0c;可以轻松地与现有的系统和第三方服务…

vulnhub靶机02-Breakout

主机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.143 扫描端口信息 nmap -sV -sT -O -p80,139,445,10000,20000 192.168.21.143 漏洞扫描 nmap --scriptvuln -p80,139,445,10000,20000 192.168.21.143 先看网站 什么都没有看看f12 找到点好东西 解码…

被遗弃的多重继承

问题 C 是否允许一个类继承自多个父类&#xff1f; C 支持编写多重继承的代码 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用 多重继承的语法规则 多重继承的本质与单继承相同&#xff01; 通过多重…

ChatRWKV 学习笔记和使用指南

0x0. 前言 Receptance Weighted Key Value&#xff08;RWKV&#xff09;是pengbo提出的一个新的语言模型架构&#xff0c;它使用了线性的注意力机制&#xff0c;把Transformer的高效并行训练与RNN的高效推理相结合&#xff0c;使得模型在训练期间可以并行&#xff0c;并在推理…

基于Java的代驾管理系统 springboot+vue,mysql数据库,前台用户、商户+后台管理员,有一万五千字报告,完美运行

基于Java的代驾管理系统 springbootvue&#xff0c;mysql数据库&#xff0c;前台用户、商户后台管理员&#xff0c;有一万五千字报告&#xff0c;完美运行。 系统完美实现用户下单叫车、商户接单、管理员管理系统&#xff0c;页面良好&#xff0c;系统流畅。 各角色功能&#x…

GPT能否辅助数学学习

GPT4.0的数学能力怎么样&#xff1f;我们使用镜像站进行实验&#xff0c;通过不同水平的数学看看GPT4.0的数学能力得到进步没有。镜像站的地址我们放在了最后&#xff0c;各位读者也可以自行去测试。 笔者在ChatGPT镜像站进行测试&#xff0c;我们的实验是让GPT4.0自行出数学题…

记本地新建一个gradle方式springboot项目过程

打算使用gradle在idea新建个springboot项目&#xff0c;然后坑很多&#xff0c;记录一下 原来我的idea应该是社区版&#xff0c;新建项目时候没有可以选择spring相关配置&#xff0c;然后卸载了重装&#xff0c;之前问题是启动是启动起来了&#xff0c;但是状态栏那边一直显示…

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部…

TCP连接分析:探寻TCP的三次握手

文章目录 一、实验背景与目的二、实验需求三、实验解法1. 预先抓包监测使用Wireshark工具2.进行TCP三次握手&#xff0c;访问www.baidu.com3.分析Wireshark捕获的TCP包 摘要&#xff1a; 本实验使用Wireshark工具&#xff0c;通过抓包监测和分析&#xff0c;深入研究了与百度服…

Richtek立锜EPS助力转向系统方案

Richtek立锜EPS助力转向系统方案包含一个集成的位置控制模块&#xff0c;用来接收一个外部系统&#xff08;泊车模块&#xff09;的角度请求以实现控制EPS系统自动转向的功能。外部交互接口用作与外部泊车模块进行CAN通讯&#xff0c;以支持泊车模块的控制状态的切换和输入角度…