SQL server数据库审核范围
服务器级别。 这些操作包括服务器操作,例如管理更改以及登录和注销操作。
服务器级别审核操作组
操作组名称 | 说明 |
APPLICATION_ROLE_CHANGE_PASSWORD_GROUP | 更改应用程序角色的密码时将引发此事件。 等效于 Audit App Role Change Password 事件类。 |
AUDIT_CHANGE_GROUP | 创建、修改或删除任何审核时,均将引发此事件。 创建、修改或删除任何审核规范时,均将引发此事件。 任何针对某审核的更改均将在该审核中审核。 等效于 Audit Change Audit 事件类。 |
BACKUP_RESTORE_GROUP | 发出备份或还原命令时,将引发此事件。 等效于 Audit Backup/Restore 事件类。 |
BROKER_LOGIN_GROUP | 引发此事件的目的是为了报告与 Service Broker 传输安全性相关的审核消息。 等效于 Audit Broker Login 事件类。 |
DATABASE_CHANGE_GROUP | 创建、更改或删除数据库时将引发此事件。 创建、更改或删除任何数据库时均将引发此事件。 等效于 Audit Database Management 事件类。 |
DATABASE_LOGOUT_GROUP | 在包含数据库用户注销某一数据库时,会引发此事件。 等效于 Audit Database Logout 事件类。 |
DATABASE_MIRRORING_LOGIN_GROUP | 引发此事件的目的是为了报告与数据库镜像传输安全性相关的审核消息。 等效于 Audit Database Mirroring Login 事件类。 |
DATABASE_OBJECT_ACCESS_GROUP | 访问数据库对象(如消息类型、程序集和协定)时将引发此事件。 |
此事件由对任何数据库的任何访问而引发。 | |
注意注意 | |
这可能导致生成大量审核记录。 | |
等效于 Audit Database Object Access 事件类。 | |
DATABASE_OBJECT_CHANGE_GROUP | 针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。 创建、更改或删除任何数据库对象时均将引发此事件。 |
注意注意 | |
这可能会导致生成大量审核记录。 | |
等效于 Audit Database Object Management 事件类。 | |
DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP | 在数据库范围内更改对象所有者时,将引发此事件。 服务器上任意数据库的任意对象所有权发生更改时,均将引发此事件。 等效于 Audit Database Object Take Ownership 事件类。 |
DATABASE_OBJECT_PERMISSION_CHANGE_GROUP | 针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY 语句时将引发此事件。 服务器上任意数据库的任意对象权限发生更改时,均将引发此事件。 等效于 Audit Database Object GDR 事件类。 |
DATABASE_OPERATION_GROUP | 数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。 对于任何数据库的任何操作都将引发此事件。 等效于 Audit Database Operation 事件类。 |
DATABASE_OWNERSHIP_CHANGE_GROUP | 使用 ALTER AUTHORIZATION 语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。 服务器上任意数据库的任意数据库所有权发生更改时,均将引发此事件。 等效于 Audit Change Database Owner 事件类。 |
DATABASE_PERMISSION_CHANGE_GROUP | SQL Server 中的任何主体针对某语句权限发出 GRANT、REVOKE 或 DENY 语句时均将引发此事件(仅适用于数据库事件,例如授予对某数据库的权限)。 |
服务器上任意数据库的任意数据库权限发生更改 (GDR) 时,均将引发此事件。 等效于 Audit Database Scope GDR 事件类。 | |
DATABASE_PRINCIPAL_CHANGE_GROUP | 在数据库中创建、更改或删除主体(如用户)时,将引发此事件。 等效于 Audit Database Principal Management 事件类。 (还等效于 Audit Add DB Principal 事件类,该事件类针对不推荐使用的 sp_grantdbaccess、sp_revokedbaccess、sp_addPrincipal 和 sp_dropPrincipal 存储过程发生。) |
使用 sp_addrole 或 sp_droprole 存储过程添加或删除数据库角色时,将引发此事件。 创建、更改或删除任何数据库的任何主体时均将引发此事件。 等效于 Audit Add Role 事件类。 | |
DATABASE_PRINCIPAL_IMPERSONATION_GROUP | 数据库范围内存在模拟操作(如 EXECUTE AS <主体> 或 SETPRINCIPAL)时将引发此事件。 此事件针对任何数据库中完成的模拟引发。 等效于 Audit Database Principal Impersonation 事件类。 |
DATABASE_ROLE_MEMBER_CHANGE_GROUP | 向数据库角色添加登录名或从中删除登录名时将引发此事件。 此事件类由 sp_addrolemember、 sp_changegroup 和 sp_droprolemember 存储过程引发。 任何数据库的任何数据库角色成员发生更改时,均将引发此事件。 等效于 Audit Add Member to DB Role 事件类。 |
DBCC_GROUP | 主体发出任何 DBCC 命令时,将引发此事件。 等效于 Audit DBCC 事件类。 |
FAILED_DATABASE_AUTHENTICATION_GROUP | 指示某个主体尝试登录到包含数据库并且失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed 事件类。 |
FAILED_LOGIN_GROUP | 指示主体尝试登录到 SQL Server,但是失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login Failed 事件类。 |
FULLTEXT_GROUP | 指示发生了全文事件。 等效于 审核全文事件类。 |
LOGIN_CHANGE_PASSWORD_GROUP | 通过 ALTER LOGIN 语句或 sp_password 存储过程更改登录密码时,将引发此事件。 等效于 Audit Login Change Password 事件类。 |
LOGOUT_GROUP | 指示主体已注销 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Logout 事件类。 |
SCHEMA_OBJECT_ACCESS_GROUP | 每次在架构中使用对象权限时,都将引发此事件。 等效于 Audit Schema Object Access 事件类。 |
SCHEMA_OBJECT_CHANGE_GROUP | 针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Schema Object Management 事件类。 |
此事件针对架构对象引发。 等效于 Audit Object Derived Permission 事件类。 | |
任何数据库的任何架构发生更改时,均将引发此事件。 等效于 Audit Statement Permission 事件类。 | |
SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP | 检查更改架构对象(例如表、过程或函数)的所有者的权限时,会引发此事件。 使用 ALTER AUTHORIZATION 语句指定对象所有者时会引发此事件。 服务器上任意数据库的任意架构所有权发生更改时,均将引发此事件。 等效于 Audit Schema Object Take Ownership 事件类。 |
SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP | 对架构对象执行 GRANT、DENY 或 REVOKE 语句时将引发此事件。 等效于 Audit Schema Object GDR 事件类。 |
SERVER_OBJECT_CHANGE_GROUP | 针对服务器对象执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Server Object Management 事件类。 |
SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP | 服务器范围中的对象的所有者发生更改时将引发此事件。 等效于 Audit Server Object Take Ownership 事件类。 |
SERVER_OBJECT_PERMISSION_CHANGE_GROUP | SQL Server 中的任何主体针对某服务器对象权限发出 GRANT、REVOKE、或 DENY 语句时,将引发此事件。 等效于 Audit Server Object GDR 事件类。 |
SERVER_OPERATION_GROUP | 使用安全审核操作(如使更改设置、资源、外部访问或授权)时将引发此事件。 等效于 Audit Server Operation 事件类。 |
SERVER_PERMISSION_CHANGE_GROUP | 为获取服务器范围内的权限(例如,创建登录名)而发出 GRANT、REVOKE 或 DENY 语句时,将引发此事件。 等效于 Audit Server Scope GDR 事件类。 |
SERVER_PRINCIPAL_CHANGE_GROUP | 创建、更改或删除服务器主体时将引发此事件。 等效于 Audit Server Principal Management 事件类。 |
主体发出 sp_defaultdb 或 sp_defaultlanguage 存储过程或 ALTER LOGIN 语句时,将引发此事件。 等效于 Audit Addlogin 事件类。 | |
此事件对 sp_addlogin 和 sp_droplogin 存储过程引发。 还等效于 Audit Login Change Property 事件类。 | |
此事件由 sp_grantlogin、 sp_revokelogin 或 sp_denylogin 存储过程引发。 等效于 Audit Login GDR 事件类。 | |
SERVER_PRINCIPAL_IMPERSONATION_GROUP | 服务器范围中发生模拟(如 EXECUTE AS <登录名>)时将引发此事件。 等效于 Audit Server Principal Impersonation 事件类。 |
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 事件类。 |
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | 指示主体已成功登录到包含数据库。 等效于 Audit Successful Database Authentication 事件类。 |
SUCCESSFUL_LOGIN_GROUP | 指示主体已成功登录到 SQL Server。 此类中的事件由新连接引发或由连接池中重用的连接引发。 等效于 Audit Login 事件类。 |
TRACE_CHANGE_GROUP | 对于检查 ALTER TRACE 权限的所有语句,都会引发此事件。 等效于 Audit Server Alter Trace 事件类。 |
USER_CHANGE_PASSWORD_GROUP | 每当使用 ALTER USER 语句更改包含数据库用户的密码时,都会引发此事件。 |
USER_DEFINED_AUDIT_GROUP | 此组监视器事件通过使用 sp_audit_write (Transact-SQL) 引发。 通常,触发器或存储过程包括对 sp_audit_write 的调用以便实现对重要事件的审核。 |
注意事项
服务器级别操作组涵盖了整个 SQL Server 实例中的操作。 例如,如果将相应操作组添加到服务器审核规范中,则将记录任何数据库中的任何架构对象访问检查。 在数据库审核规范中,仅记录该数据库中的架构对象访问。
服务器级别的操作不允许对数据库级别的操作进行详细筛选。 实现详细操作筛选需要数据库级别的审核,例如,对 Employee 组中登录名的 Customers 表执行的 SELECT 操作进行的审核。 在用户数据库审核规范中不要包括服务器范围的对象,例如系统视图
数据库级别。 这些操作包括数据操作语言 (DML) 和数据定义语言 (DDL) 操作。
数据库级别审核操作组
操作组名称 | 说明 |
APPLICATION_ROLE_CHANGE_PASSWORD_GROUP | 更改应用程序角色的密码时将引发此事件。 等效于 Audit App Role Change Password 事件类。 |
AUDIT_CHANGE_GROUP | 创建、修改或删除任何审核时,均将引发此事件。 创建、修改或删除任何审核规范时,均将引发此事件。 任何针对某审核的更改均将在该审核中审核。 等效于 Audit Change Audit 事件类。 |
BACKUP_RESTORE_GROUP | 发出备份或还原命令时,将引发此事件。 等效于 Audit Backup/Restore 事件类。 |
DATABASE_CHANGE_GROUP | 创建、更改或删除数据库时将引发此事件。 等效于 Audit Database Management 事件类。 |
DATABASE_LOGOUT_GROUP | 在包含数据库用户注销某一数据库时,会引发此事件。 等效于 Audit Backup/Restore 事件类。 |
DATABASE_OBJECT_ACCESS_GROUP | 访问数据库对象(如证书和非对称密钥)时将引发此事件。 等效于 Audit Database Object Access 事件类。 |
DATABASE_OBJECT_CHANGE_GROUP | 针对数据库对象(如架构)执行 CREATE、ALTER 或 DROP 语句时将引发此事件。 等效于 Audit Database Object Management 事件类。 |
DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP | 数据库范围中的对象的所有者发生更改时将引发此事件。 等效于 Audit Database Object Take Ownership 事件类。 |
DATABASE_OBJECT_PERMISSION_CHANGE_GROUP | 针对数据库对象(例如,程序集和架构)发出 GRANT、REVOKE 或 DENY 语句时将引发此事件。 等效于 Audit Database Object GDR 事件类。 |
DATABASE_OPERATION_GROUP | 数据库中发生操作(如检查点或订阅查询通知)时将引发此事件。 等效于 Audit Database Operation 事件类。 |
DATABASE_OWNERSHIP_CHANGE_GROUP | 使用 ALTER AUTHORIZATION 语句更改数据库的所有者时,将引发此事件,并将检查执行该操作所需的权限。 等效于 Audit Change Database Owner 事件类。 |
DATABASE_PERMISSION_CHANGE_GROUP | SQL Server 中的任何用户针对某语句权限发出 GRANT、REVOKE 或 DENY 语句时均将引发此事件(仅适用于数据库事件,例如授予对数据库的权限)。 等效于 Audit Database Scope GDR 事件类。 |
DATABASE_PRINCIPAL_CHANGE_GROUP | 在数据库中创建、更改或删除主体(如用户)时,将引发此事件。 等效于 Audit Database Principal Management 事件类。 还等效于 Audit Add DB User 事件类,该事件类针对不推荐使用的 sp_grantdbaccess、 sp_revokedbaccess、 sp_adduser 和 sp_dropuser 存储过程发生。 |
使用不推荐使用的 sp_addrole 或 sp_droprole 存储过程添加或删除数据库角色时,将引发此事件。 等效于 Audit Add Role 事件类。 | |
DATABASE_PRINCIPAL_IMPERSONATION_GROUP | 数据库范围中发生模拟(如 EXECUTE AS <用户> 或 SETUSER)时将引发此事件。 等效于 Audit Database Principal Impersonation 事件类。 |
DATABASE_ROLE_MEMBER_CHANGE_GROUP | 向数据库角色添加登录名或从中删除登录名时将引发此事件。 此事件类与 sp_addrolemember、 sp_changegroup 和 sp_droprolemember 存储过程一起使用。等效于 Audit Add Member to DB Role 事件类。 |
DBCC_GROUP | 主体发出任何 DBCC 命令时,将引发此事件。 等效于 Audit DBCC 事件类。 |
FAILED_DATABASE_AUTHENTICATION_GROUP | 指示某个主体尝试登录到包含数据库并且失败。 此类中的事件由新连接引发或由连接池中重用的连接引发。 引发此事件。 |
SCHEMA_OBJECT_ACCESS_GROUP | 每次在架构中使用对象权限时,都将引发此事件。 等效于 Audit Schema Object Access 事件类。 |
SCHEMA_OBJECT_CHANGE_GROUP | 针对架构执行 CREATE、ALTER 或 DROP 操作时将引发此事件。 等效于 Audit Schema Object Management 事件类。 |
此事件针对架构对象引发。 等效于 Audit Object Derived Permission 事件类。 还等效于 Audit Statement Permission 事件类。 | |
SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP | 检查更改架构对象(例如表、过程或函数)的所有者的权限时,将引发此事件。 使用 ALTER AUTHORIZATION 语句指定对象所有者时会引发此事件。 等效于 Audit Schema Object Take Ownership 事件类。 |
SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP | 每次对架构对象发出 GRANT、DENY 或 REVOKE 时,均会引发此事件。 等效于 Audit Schema Object GDR 事件类。 |
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 权限时将引发此事件。 |
注意事项
数据库级别的审核操作不适用于列。
当查询处理器对查询进行参数化时,审核事件日志中会出现参数而不是查询的列值。
审核级别的审核操作组
操作组名称 | 说明 |
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 |
先创建审核文件
USE [master]
GO
/****** Object: Audit [MyFileAudit] Script Date: 2020/10/28 10:30:23 ******/
CREATE SERVER AUDIT [MyFileAudit]
TO FILE
( FILEPATH = N'\\TOOLSERVER01\DataBaseAudit\110\'
,MAXSIZE = 100 MB
,MAX_ROLLOVER_FILES = 100
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
,AUDIT_GUID = 'd15ce131-253e-4543-b0eb-e465c230c93a'
)
ALTER SERVER AUDIT [MyFileAudit] WITH (STATE = ON)
GO
再创建服务器审核规范
USE [master]
GO
CREATE SERVER AUDIT SPECIFICATION [ServerAuditSpecification-20200922-182200]
FOR SERVER AUDIT [MyFileAudit]
ADD (FAILED_LOGIN_GROUP)
WITH (STATE = ON)
GO
再创建数据库审核规范
USE [CapitalManagement]
GO
CREATE DATABASE AUDIT SPECIFICATION [DatabaseAuditSpecification-20200923]
FOR SERVER AUDIT [MyFileAudit]
ADD (UPDATE ON DATABASE::[CapitalManagement] BY [public]),
ADD (DELETE ON DATABASE::[CapitalManagement] BY [public])
WITH (STATE = ON)
GO
--查看可以使用哪些审核组
SELECT name, --审核操作或审核组的名称
class_desc, --应用审核操作对象的类的名称
covering_action_name, --包含此行中所述的审核操作的审核操作或审核组的名称
parent_class_desc,
covering_parent_action_name,
configuration_level,
containing_group_name
from sys.dm_audit_actions
WHERE class_desc = 'server' --审核操作的类
and configuration_level = 'group' --配置级别
ORDER BY name
--查看对象有哪些操作可以被审核
select name, --审核操作或审核组的名称
class_desc, --应用审核操作对象的类的名称
covering_action_name, --包含此行中所述的审核操作的审核操作或审核组的名称
parent_class_desc,
covering_parent_action_name,
configuration_level,
containing_group_name
from sys.dm_audit_actions
WHERE class_desc = 'object' --审核操作的类
and configuration_level = 'action' --配置级别
ORDER BY name
--查看数据库范围有哪些操作可以被审核
select name, --审核操作或审核组的名称
class_desc, --应用审核操作对象的类的名称
covering_action_name, --包含此行中所述的审核操作的审核操作或审核组的名称
parent_class_desc,
covering_parent_action_name,
configuration_level,
containing_group_name
from sys.dm_audit_actions
WHERE class_desc = 'database' --审核操作的类
and configuration_level = 'group' --配置级别
SELECT * from sys.server_audits --审核对象
select * from sys.dm_server_audit_status --审核的当前状态
select * from sys.server_audit_specifications --服务器审核规范对象
select * from sys.server_audit_specification_details --服务器审核规范对象的审核操作
select * from sys.database_audit_specifications --数据库审核规范对象
select * from sys.database_audit_specification_details --数据库审核规范对象的审核操作
select * from sys.dm_audit_actions --所有可用的操作组
select * from sys.dm_audit_class_type_map --审核日志中的字段映射
select * from sys.server_file_audits
--查看审核日志
select * from (SELECT DATEADD(mi,
DATEDIFF(mi, GETUTCDATE(), CURRENT_TIMESTAMP),
event_time
) AS '触发审核的日期和时间',
sequence_number AS '单个审核记录中的记录顺序',
action_id AS '操作的 ID',
session_id AS '会话ID',
succeeded AS '触发事件的操作是否成功',
permission_bitmask AS '权限掩码',
is_column_permission AS '是否为列级别权限',
session_id AS '发生该事件的会话的 ID',
server_principal_id AS '执行操作的登录上下文 ID',
database_principal_id AS '执行操作的数据库用户上下文 ID',
target_server_principal_id AS '执行 GRANT/DENY/REVOKE 操作的服务器主体',
target_database_principal_id AS '执行 GRANT/DENY/REVOKE 操作的数据库主体',
object_id AS '发生审核的实体的 ID(服务器对象,DB,数据库对象,架构对象)',
class_type AS '可审核实体的类型',
session_server_principal_name AS '会话的服务器主体',
server_principal_name AS '当前登录名',
server_principal_sid AS '当前登录名 SID',
database_principal_name AS '当前用户',
target_server_principal_name AS '操作的目标登录名',
target_server_principal_sid AS '目标登录名的 SID',
target_database_principal_name AS '操作的目标用户',
server_instance_name AS '审核的服务器实例的名称',
database_name AS '发生此操作的数据库上下文',
schema_name AS '此操作的架构上下文',
object_name AS '审核的实体的名称',
statement AS 'TSQL 语句(如果存在)',
additional_information AS '单个事件的唯一信息,以 XML 的形式返回',
file_name AS '记录来源的审核日志文件的路径和名称',
audit_file_offset AS '包含审核记录的文件中的缓冲区偏移量',
user_defined_event_id AS '作为 sp_audit_write 参数传递的用户定义事件 ID',
user_defined_information AS '于记录用户想要通过使用 sp_audit_write 存储过程记录在审核日志中的任何附加信息'
FROM sys.[fn_get_audit_file](
'\\TOOSERVER\DataBaseAudit\122\MyFileAudit_D15CE131-253E-4543-B0EB-E465C230C93A_0_132468339063160000.sqlaudit',
DEFAULT,
DEFAULT
)) a
--where [操作的 ID] in ('LGIF','AUSC')
--select * from sys.server_file_audits