SQL Server 审核操作组和操作

适用范围:SQL Server

使用 SQL Server 审核功能,可以对服务器级别和数据库级别事件组以及各个事件进行审核。 有关详细信息,请参阅 SQL Server 审核(数据库引擎)

SQL Server 审核包括零个或多个审核操作项目。 这些审核行动项可以是一组行动,例如 SERVER_OBJECT_CHANGE_GROUP,或者是单个行动,例如 SELECT 对表的操作。

注意

SERVER_OBJECT_CHANGE_GROUP 包括 CREATEALTER以及 DROP 用于任何服务器对象(数据库或终结点)。

审核可以有以下类别的操作:

  • 服务器级别。 这些操作包括服务器操作,例如管理更改以及登录和注销操作。

  • 数据库级别。 这些操作包括数据操作语言 (DML) 和数据定义语言 (DDL) 操作。

  • 审核级别。 这些操作包括审核过程中的操作。

针对 SQL Server 审核组件执行的某些操作本质上是在特定审核中进行审核的,在这些情况下,由于事件发生在父对象上,因此将自动发生审核事件。

本质上将对下列操作进行审核:

  • 服务器审核状态更改(将状态设置为 ONOFF

本质上将不对下列事件进行审核:

  • 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 Event Class Reference

下表介绍了服务器级审核操作组,并提供了适用的等效 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 发出备份或还原命令时,将引发此事件。 等效于 审核备份和还原事件类
BATCH_COMPLETED_GROUP 每当任何批处理文本、存储过程或事务管理操作执行完成时,都会引发此事件。 在整个批处理或存储过程文本(包括结果)从客户端发送后,再在批处理完成时进行审核。 等效于SQL:BatchCompleted 事件类

适用于:SQL Server 2022 (16.x) 及更高版本。
BATCH_STARTED_GROUP 每当任何批处理文本、存储过程或事务管理操作开始执行时,都会引发此事件。 在执行之前,系统会触发并审核从客户端发送的整个批处理或存储过程文本。 等效于 SQL:BatchStarting 事件类

适用于:SQL Server 2022 (16.x) 及更高版本。
BROKER_LOGIN_GROUP 引发此事件的目的是为了报告与 Service Broker 传输安全性相关的审核消息。 等效于 Audit Broker Login Event Class
DATABASE_CHANGE_GROUP 创建、更改或删除数据库时将引发此事件。 创建、更改或删除任何数据库时均将引发此事件。 等效于 Audit Database Management Event Class
DATABASE_LOGOUT_GROUP 在包含的数据库用户注销某一数据库时,会引发此事件。 等效于 Audit Logout Event Class
DATABASE_MIRRORING_LOGIN_GROUP 引发此事件的目的是为了报告与数据库镜像传输安全性相关的审核消息。 等效于 Audit Database Mirroring Login Event Class
DATABASE_OBJECT_ACCESS_GROUP 访问数据库对象(如消息类型、程序集和协定)时将引发此事件。 此事件由对任何数据库的任何访问而引发。 注意:这可能导致生成大量审核记录。

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

等效于 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 中的任何主体发出 GRANTREVOKEDENY 等语句权限时,就会引发此事件(这适用于仅限数据库的事件,例如授予数据库权限)。

服务器上任意数据库的任意数据库权限发生更改 (GDR) 时,均将引发此事件。 等效于 Audit Database Scope GDR Event Class
DATABASE_PRINCIPAL_CHANGE_GROUP 在数据库中创建、更改或删除主体(如用户)时,将引发此事件。 等效于 Audit Database Principal Management Event Class。 也等效于审计添加数据库主体事件类,该事件类发生在已弃用的 sp_grantdbaccess,sp_revokedbaccess,sp_addPrincipal, 以及 sp_dropPrincipal 存储过程。

每当使用 sp_addrole,sp_droprole 存储过程添加或删除数据库角色时,都会引发此事件。 创建、更改或删除任何数据库的任何主体时均将引发此事件。 等效于 Audit Add Role 事件类
DATABASE_PRINCIPAL_IMPERSONATION_GROUP 当数据库范围内存在模拟操作(例如 EXECUTE AS <principal>SETPRINCIPAL)时,将引发此事件。 此事件针对任何数据库中完成的模拟引发。 等效于 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
EXTGOV_OPERATION_GROUP 外部治理功能启用、外部治理功能禁用、外部治理策略同步和基于外部治理策略的权限实施都将引发此事件。
FAILED_DATABASE_AUTHENTICATION_GROUP 指示某个主体尝试登录到包含数据库并且失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed Event Class
FAILED_LOGIN_GROUP 指示主体尝试登录到 SQL Server,但登录失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed Event Class。 此审核不适用于 Azure SQL 数据库。
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 当在架构上执行CREATEALTERDROP操作时,将引发此事件。 等效于 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
SENSITIVE_BATCH_COMPLETED_GROUP 每当任何批处理文本、存储过程或事务管理作都使用 SQL 数据发现和分类对敏感数据完成执行时,将引发此事件。 在批处理完成并审核从客户端发送的整个批处理或存储过程文本(包括结果)后引发该事件。

从 SQL Server 2022 (16.x) 开始可用
SERVER_OBJECT_CHANGE_GROUP 针对服务器对象的CREATEALTERDROP操作会引发此事件。 等效于 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 中的任何主体对服务器对象权限发出 GRANTREVOKEDENY 时,都会引发此事件。 等效于 Audit Server Object GDR Event Class
SERVER_OPERATION_GROUP 如果使用安全审核作(例如更改设置、资源、外部访问或授权),或者运行需要权限的 VIEW SERVER STATE 语句,则会引发此事件。 等效于 Audit Server Operation Event Class
SERVER_PERMISSION_CHANGE_GROUP 当在服务器范围内发布GRANTREVOKEDENY权限时,将引发此事件。 等效于 Audit Server Scope GDR Event Class
SERVER_PRINCIPAL_CHANGE_GROUP 创建、更改或删除服务器主体时将引发此事件。 等效于 Audit Server Principal Management Event Class

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

此事件在sp_addloginsp_droplogin存储过程上引发。 还等效于 Audit Login Change Property Event Class

此事件是为sp_grantloginsp_revokelogin存储过程引发的。 等效于 Audit Login GDR Event Class
SERVER_PRINCIPAL_IMPERSONATION_GROUP 当在服务器范围内发生模拟时,将引发此事件,例如 EXECUTE AS <login>。 等效于 Audit Server Principal Impersonation Event Class
SERVER_ROLE_MEMBER_CHANGE_GROUP 向固定服务器角色添加登录名或从中删除登录名时将引发此事件。 为 sp_addsrvrolemember 存储过程和 sp_dropsrvrolemember 存储过程引发此事件。 等效于 Audit Add Login to Server Role 事件类
SERVER_STATE_CHANGE_GROUP 修改 SQL Server 服务状态时将引发此事件。 等效于 Audit Server Starts and Stops Event Class
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 指示主体已成功登录到包含数据库。
SUCCESSFUL_LOGIN_GROUP 指示主体已成功登录到 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Event Class
TRACE_CHANGE_GROUP 此事件会在对 ALTER TRACE 权限进行检查的所有语句中引发。 等效于 Audit Server Alter Trace Event Class
TRANSACTION_GROUP 对于BEGIN TRANSACTIONROLLBACK TRANSACTIONCOMMIT TRANSACTION操作的显式调用及隐式事务操作,此事件将被引发。 对于事务回滚导致的单个语句,也会引发 UNDO 此事件。
USER_CHANGE_PASSWORD_GROUP 每当使用 ALTER USER 语句更改包含的数据库用户密码时,都会触发该事件。
USER_DEFINED_AUDIT_GROUP 此组使用 sp_audit_write 监视触发的事件。 触发器或存储过程通常包括调用sp_audit_write以启用重要事件的审核。
LEDGER_OPERATION_GROUP 对于以下动作,将触发此事件:

GENERATE LEDGER DIGEST - 生成账本摘要时

VERIFY LEDGER - 当您验证账本摘要时。

适用于: Azure SQL 数据库

注意事项

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

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

注意

由于启用事务级审核所涉及的开销,从 SQL Server 2016 (13.x) SP 2 CU 3 和 SQL Server 2017 (14.x) CU 4 开始,除非已启用通用条件符合性,否则默认禁用事务级审核。 如果禁用了“通用准则符合性”,你仍然可以从 TRANSACTION_GROUP 添加一个操作到审核规范,但实际上不会收集任何事务操作。 如果您打算配置TRANSACTION_GROUP中的任意审核操作,务必通过启用通用标准符合性来确保事务级审核基础结构。此操作需要 SQL Server 2016 (13.x) SP 2 CU 3 和 SQL Server 2017 (14.x) CU 4 及更高版本。 还可以在 SQL Server 2016(13.x)中使用跟踪标志 3427(SP 1 CU 2 和更高版本)禁用事务级审核。

数据库级审核操作组

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

下表介绍了数据库级别审核操作组,并提供了适用的等效 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 发出备份或还原命令时,将引发此事件。 等效于 审核备份和还原事件类
BATCH_COMPLETED_GROUP 每当任何批处理文本、存储过程或事务管理操作执行完成时,都会引发此事件。 在批处理完成后,并对从客户端发送的整个批处理或存储过程代码(包括结果)进行审计时,会触发相应的事件。

适用于:SQL Server 2019 (15.x) 及更高版本。
BATCH_STARTED_GROUP 每当任何批处理文本、存储过程或事务管理操作开始执行时,都会引发此事件。 在执行前会启动该过程,并审核从客户端发送的批处理或存储过程的完整文本。

适用于:SQL Server 2019 (15.x) 及更高版本。
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 当在数据库对象(例如架构)上执行CREATEALTERDROP语句时,将引发此事件。 等效于 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 中的任何用户针对GRANTREVOKEDENY发出语句权限时,将引发此事件。这些事件仅限于数据库,例如授予对数据库的权限。 等效于 Audit Database Scope GDR Event Class
DATABASE_PRINCIPAL_CHANGE_GROUP 在数据库中创建、更改或删除主体(如用户)时,将引发此事件。 等效于 Audit Database Principal Management Event Class。 除此之外,还等效于审计 添加 DB 用户事件类,该事件类会在已弃用的 sp_grantdbaccess,sp_revokedbaccess,sp_adduser,sp_dropuser 存储过程中触发。

每当使用已弃用 sp_addrolesp_droprole 存储过程添加或删除数据库角色时,都会引发此事件。 等效于 Audit Add Role 事件类
DATABASE_PRINCIPAL_IMPERSONATION_GROUP 当数据库范围内存在模拟(例如 EXECUTE AS <user>) 时,将引发此事件。 等效于 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 当对架构执行CREATEALTERDROP操作时,将引发此事件。 等效于 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
SENSITIVE_BATCH_COMPLETED_GROUP 每当任何批处理文本、存储过程或事务管理作都使用 SQL 数据发现和分类对敏感数据完成执行时,将引发此事件。 在批处理完成并审核从客户端发送的整个批处理或存储过程文本(包括结果)后引发该事件。

从 SQL Server 2022 (16.x) 开始可用
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP 指示主体已成功登录到包含数据库。
USER_CHANGE_PASSWORD_GROUP 每当使用 ALTER USER 语句更改包含数据库用户的密码时,都会引发此事件。
USER_DEFINED_AUDIT_GROUP 此组监视使用 sp_audit_write 引发的事件。
LEDGER_OPERATION_GROUP 对于以下操作,将触发该事件:

ENABLE LEDGER - 创建新账本表时

ALTER LEDGER - 删除账本表时

ALTER LEDGER CONFIGURATION

适用于: Azure SQL 数据库。

数据库级别审核操作

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

操作 说明
SELECT 每当发出 SELECT 时,便会引发此事件。
UPDATE 每当发出UPDATE时,将引发此事件。
INSERT 每当发出事件 INSERT 时,将引发此事件。
DELETE 每当发出 DELETE 时,此事件将被触发。
EXECUTE 每当发出 EXECUTE 时,将引发此事件。
RECEIVE 每当发出 RECEIVE 时,都会触发此事件。
REFERENCES 每当检查 REFERENCES 权限时,将引发此事件。

注意事项

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

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

审计级审核操作组

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

操作组名称 说明
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