SQL server数据库审核

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
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值