SQL Server 审计操作概念

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
2018-01-10 14:58 by pursuer.chen, 360 阅读, 7 评论, 收藏, 编辑

概述  

对于一般的数据库系统审计可能不太会被重视,但是对于金融系统就不一样的。金融系统对审计要求会很高,除了了记录数据库各种操作记录还可能会需要开发报表来呈现这些行为数据。使用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 事件类。

操作组名称 说明
APPLICATION_ROLE_CHANGE_PASSWORD_GROUP 更改应用程序角色的密码时将引发此事件。 等效于 Audit App Role Change Password Event Class。
AUDIT_CHANGE_GROUP 创建、修改或删除任何审核时,均将引发此事件。 创建、修改或删除任何审核规范时,均将引发此事件。 任何针对某审核的更改均将在该审核中审核。 等效于 Audit Change Audit Event Class。
BACKUP_RESTORE_GROUP 发出备份或还原命令时,将引发此事件。 等效于 审核备份和还原事件类。
BROKER_LOGIN_GROUP 引发此事件的目的是为了报告与 Service Broker 传输安全性相关的审核消息。 等效于 Audit Broker Login Event Class。
DATABASE_CHANGE_GROUP 创建、更改或删除数据库时将引发此事件。 创建、更改或删除任何数据库时均将引发此事件。 等效于 Audit Database Management Event Class。
DATABASE_LOGOUT_GROUP 在包含数据库用户注销某一数据库时,会引发此事件。 等效于 Audit Database Logout 事件类。
DATABASE_MIRRORING_LOGIN_GROUP 引发此事件的目的是为了报告与数据库镜像传输安全性相关的审核消息。 等效于 Audit Database Mirroring Login Event Class。
DATABASE_OBJECT_ACCESS_GROUP 访问数据库对象(如消息类型、程序集和协定)时将引发此事件。 此事件由对任何数据库的任何访问而引发。 注意:这可能导致生成大量审核记录。

等效于 Audit Database Object Access Event Class。
DATABASE_OBJECT_CHANGE_GROUP 针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。 创建、更改或删除任何数据库对象时均将引发此事件。 注意:这可能会导致生成大量审核记录。

等效于 Audit Database Object Management Event Class。
DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP 在数据库范围内更改对象所有者时,将引发此事件。 服务器上任意数据库的任意对象所有权发生更改时,均将引发此事件。 等效于 Audit Database Object Take Ownership Event Class。
DATABASE_OBJECT_PERMISSION_CHANGE_GROUP 针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY 语句时将引发此事件。 服务器上任意数据库的任意对象权限发生更改时,均将引发此事件。 等效于 Audit Database Object GDR Event Class。
DATABASE_OPERATION_GROUP 数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。 对于任何数据库的任何操作都将引发此事件。 等效于 Audit Database Operation Event Class。
DATABASE_OWNERSHIP_CHANGE_GROUP 使用 ALTER AUTHORIZATION 语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。 服务器上任意数据库的任意数据库所有权发生更改时,均将引发此事件。 等效于 Audit Change Database Owner Event Class。
DATABASE_PERMISSION_CHANGE_GROUP SQL Server 中的任何主体针对某语句权限发出 GRANT、REVOKE 或 DENY 语句时均将引发此事件(仅适用于数据库事件,例如授予对某数据库的权限)。

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

使用 sp_addrole 或 sp_droprole 存储过程添加或删除数据库角色时,将引发此事件。 创建、更改或删除任何数据库的任何主体时均将引发此事件。 等效于 Audit Add Role Event Class。
DATABASE_PRINCIPAL_IMPERSONATION_GROUP 数据库范围内存在模拟操作(如 EXECUTE AS <主体> 或 SETPRINCIPAL)时将引发此事件。 此事件针对任何数据库中完成的模拟引发。 等效于 Audit Database Principal Impersonation Event Class。
DATABASE_ROLE_MEMBER_CHANGE_GROUP 向数据库角色添加登录名或从中删除登录名时将引发此事件。 此事件类由 sp_addrolemember、sp_changegroup 和 sp_droprolemember 存储过程引发。 任何数据库的任何数据库角色成员发生更改时,均将引发此事件。 等效于 Audit Add Member to DB Role Event Class。
DBCC_GROUP 主体发出任何 DBCC 命令时,将引发此事件。 等效于 Audit DBCC Event Class。
FAILED_DATABASE_AUTHENTICATION_GROUP 指示某个主体尝试登录到包含数据库并且失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed Event Class。
FAILED_LOGIN_GROUP 指示主体尝试登录到 SQL Server ,但是失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed Event Class。
FULLTEXT_GROUP 指示发生了全文事件。 等效于 Audit Fulltext Event Class。
LOGIN_CHANGE_PASSWORD_GROUP 通过 ALTER LOGIN 语句或 sp_password 存储过程更改登录密码时,将引发此事件。 等效于 Audit Login Change Password Event Class。
LOGOUT_GROUP 指示主体已注销 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Logout Event Class。
SCHEMA_OBJECT_ACCESS_GROUP 每次在架构中使用对象权限时,都将引发此事件。 等效于 Audit Schema Object Access Event Class。
SCHEMA_OBJECT_CHANGE_GROUP 针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Schema Object Management Event Class。

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

任何数据库的任何架构发生更改时,均将引发此事件。 等效于 Audit Statement Permission Event Class。
SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP 检查更改架构对象(例如表、过程或函数)的所有者的权限时,会引发此事件。 使用 ALTER AUTHORIZATION 语句指定对象所有者时会引发此事件。 服务器上任意数据库的任意架构所有权发生更改时,均将引发此事件。 等效于 Audit Schema Object Take Ownership Event Class。
SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP 对架构对象执行 GRANT、DENY 或 REVOKE 语句时将引发此事件。 等效于 Audit Schema Object GDR Event Class。
SERVER_OBJECT_CHANGE_GROUP 针对服务器对象执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Server Object Management Event Class。
SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP 服务器范围中的对象的所有者发生更改时将引发此事件。 等效于 Audit Server Object Take Ownership Event Class。
SERVER_OBJECT_PERMISSION_CHANGE_GROUP SQL Server中的任何主体针对某服务器对象权限发出 GRANT、REVOKE、或 DENY 语句时,将引发此事件。 等效于 Audit Server Object GDR Event Class。
SERVER_OPERATION_GROUP 使用安全审核操作(如使更改设置、资源、外部访问或授权)时将引发此事件。 等效于 Audit Server Operation Event Class。
SERVER_PERMISSION_CHANGE_GROUP 为获取服务器范围内的权限(例如,创建登录名)而发出 GRANT、REVOKE 或 DENY 语句时,将引发此事件。 等效于 Audit Server Scope GDR Event Class。
SERVER_PRINCIPAL_CHANGE_GROUP 创建、更改或删除服务器主体时将引发此事件。 等效于 Audit Server Principal Management Event Class。

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

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

此事件由 sp_grantlogin 或 sp_revokelogin 存储过程引发。 等效于 Audit Login GDR Event Class。
SERVER_PRINCIPAL_IMPERSONATION_GROUP 服务器范围内发生模拟(如 EXECUTE AS <登录名>)时将引发此事件。 等效于 Audit Server Principal Impersonation Event Class。
SERVER_ROLE_MEMBER_CHANGE_GROUP 向固定服务器角色添加登录名或从中删除登录名时将引发此事件。 此事件由 sp_addsrvrolemember 和 sp_dropsrvrolemember 存储过程引发。 等效于 Audit Add Login to Server Role Event Class。
SERVER_STATE_CHANGE_GROUP 修改 SQL Server 服务状态时将引发此事件。 等效于 Audit Server Starts and Stops Event Class。
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 指示主体已成功登录到包含数据库。 等效于 Audit Successful Database Authentication 事件类。
SUCCESSFUL_LOGIN_GROUP 指示主体已成功登录到 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Event Class。
TRACE_CHANGE_GROUP 对于检查 ALTER TRACE 权限的所有语句,都会引发此事件。 等效于 Audit Server Alter Trace Event Class。
TRANSACTION_GROUP 此事件由 BEGIN TRANSACTION、ROLLBACK TRANSACTION 和 COMMIT TRANSACTION 操作引发(无论是对这些语句的显式调用还是隐式事务操作)。 此外,因事务回退导致的各个事件的 UNDO 操作也会引发此事件。
USER_CHANGE_PASSWORD_GROUP 每当使用 ALTER USER 语句更改包含数据库用户的密码时,都会引发此事件。
USER_DEFINED_AUDIT_GROUP 此组监视器事件通过使用 sp_audit_write (Transact-SQL) 引发。 通常,触发器或存储过程包括对 sp_audit_write 的调用以便实现对重要事件的审核。

注意事项

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

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

数据库级别审核操作组

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

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

操作组名称 说明
APPLICATION_ROLE_CHANGE_PASSWORD_GROUP 更改应用程序角色的密码时将引发此事件。 等效于 Audit App Role Change Password Event Class。
AUDIT_CHANGE_GROUP 创建、修改或删除任何审核时,均将引发此事件。 创建、修改或删除任何审核规范时,均将引发此事件。 任何针对某审核的更改均将在该审核中审核。 等效于 Audit Change Audit Event Class。
BACKUP_RESTORE_GROUP 发出备份或还原命令时,将引发此事件。 等效于 审核备份和还原事件类。
DATABASE_CHANGE_GROUP 创建、更改或删除数据库时将引发此事件。 等效于 Audit Database Management Event Class。
DATABASE_LOGOUT_GROUP 在包含数据库用户注销某一数据库时,会引发此事件。 等效于 审核备份和还原事件类。
DATABASE_OBJECT_ACCESS_GROUP 访问数据库对象(如证书和非对称密钥)时将引发此事件。 等效于 Audit Database Object Access Event Class。
DATABASE_OBJECT_CHANGE_GROUP 针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。 等效于 Audit Database Object Management Event Class。
DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP 数据库范围中的对象的所有者发生更改时将引发此事件。 等效于 Audit Database Object Take Ownership Event Class。
DATABASE_OBJECT_PERMISSION_CHANGE_GROUP 针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY 语句时将引发此事件。 等效于 Audit Database Object GDR Event Class。
DATABASE_OPERATION_GROUP 数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。 等效于 Audit Database Operation Event Class。
DATABASE_OWNERSHIP_CHANGE_GROUP 使用 ALTER AUTHORIZATION 语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。 等效于 Audit Change Database Owner Event Class。
DATABASE_PERMISSION_CHANGE_GROUP SQL Server 中的任何用户针对某语句权限发出 GRANT、REVOKE 或 DENY 语句时均将引发此事件(仅适用于数据库事件,例如授予对数据库的权限)。 等效于 Audit Database Scope GDR Event Class。
DATABASE_PRINCIPAL_CHANGE_GROUP 在数据库中创建、更改或删除主体(如用户)时,将引发此事件。 等效于 Audit Database Principal Management Event Class。 还等效于 Audit Add DB User 事件类,该事件类针对不推荐使用的 sp_grantdbaccess、sp_revokedbaccess、sp_adduser 和 sp_dropuser 存储过程发生。

使用不推荐使用的 sp_addrole 和 sp_droprole 存储过程添加或删除数据库角色时,将引发此事件。 等效于 Audit Add Role Event Class。
DATABASE_PRINCIPAL_IMPERSONATION_GROUP 数据库范围内发生模拟(如 EXECUTE AS <用户>)时将引发此事件。 等效于 Audit Database Principal Impersonation Event Class。
DATABASE_ROLE_MEMBER_CHANGE_GROUP 向数据库角色添加登录名或从中删除登录名时将引发此事件。 此事件类与 sp_addrolemember、sp_changegroup 和 sp_droprolemember 存储过程一起使用。等效于 Audit Add Member to DB Role 事件类
DBCC_GROUP 主体发出任何 DBCC 命令时,将引发此事件。 等效于 Audit DBCC Event Class。
FAILED_DATABASE_AUTHENTICATION_GROUP 指示某个主体尝试登录到包含数据库并且失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 引发此事件。
SCHEMA_OBJECT_ACCESS_GROUP 每次在架构中使用对象权限时,都将引发此事件。 等效于 Audit Schema Object Access Event Class。
SCHEMA_OBJECT_CHANGE_GROUP 针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Schema Object Management Event Class。

此事件针对架构对象引发。 等效于 Audit Object Derived Permission Event Class。 还等效于 Audit Statement Permission Event Class。
SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP 检查更改架构对象(例如表、过程或函数)的所有者的权限时,将引发此事件。 使用 ALTER AUTHORIZATION 语句指定对象所有者时会引发此事件。 等效于 Audit Schema Object Take Ownership Event Class。
SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP 每次对架构对象发出 GRANT、DENY 或 REVOKE 时,均会引发此事件。 等效于 Audit Schema Object GDR Event Class。
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 指示主体已成功登录到包含数据库。 等效于 Audit Successful Database Authentication 事件类。
USER_CHANGE_PASSWORD_GROUP 每当使用 ALTER USER 语句更改包含数据库用户的密码时,都会引发此事件。
USER_DEFINED_AUDIT_GROUP 此组监视器事件通过使用 sp_audit_write (Transact-SQL) 引发。

数据库级别审核操作

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

操作 说明

SELECT

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

UPDATE

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

INSERT

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

DELETE

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

EXECUTE

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

RECEIVE

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

REFERENCES

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

注意事项

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

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

  • 不会记录 RPC 语句。

审核级别的审核操作组

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

操作组名称 说明

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/p/8258594.html,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 存储 安全
SQL查询数据库:基础概念与操作指南
在数字化时代,数据库已成为信息管理的重要工具之一。作为管理和操作数据库的核心语言,SQL(结构化查询语言)已成为数据管理和查询的关键技能。本文将全面介绍SQL查询数据库的基本概念、语句和操作指南,以帮助初学者快速上手,同时为进阶用户提供有价值的参考。一、数据库与SQL简介数据库是一种存储、管理和检索
36 3
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
87 4
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
102 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
59 6
|
4月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
441 0
|
4月前
|
SQL 分布式计算 监控
ODPS SQL问题之在ODPS SQL中,Shuffle的概念是什么
ODPS SQL问题之在ODPS SQL中,Shuffle的概念是什么
|
4月前
|
SQL 监控 数据库
SQL Server 查询超时问题排查
【7月更文挑战第8天】排查 SQL Server 查询超时涉及五个主要方面:检查复杂查询、评估服务器性能、审视配置参数、更新统计信息和分析执行计划。关注点包括查询的结构(如连接、子查询和索引),服务器资源(CPU、内存、网络延迟),连接和内存设置,以及统计信息的时效性。通过这些步骤可定位并解决性能瓶颈。
114 0
下一篇
无影云桌面