CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
使用 SQL Server 审核功能创建数据库审核规范对象。 有关详细信息,请参阅 SQL Server 审核(数据库引擎)。
语法
CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
FOR SERVER AUDIT audit_name
[ ADD (
{ <audit_action_specification> | audit_action_group_name }
[ , ...n ] )
]
[ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
action [ , ...n ] ON [class::]securable BY principal [ , ...n ]
}
参数
audit_specification_name
审核规范的名称。
audit_name
应用此规范的审核的名称。
audit_action_specification
应记录在审核中的主体对安全对象的操作规范。
action
一个或多个数据库级可审核操作的名称。 要获取审核操作列表,请参阅 SQL Server 审核操作组和操作。
audit_action_group_name
一个或多个数据库级可审核操作组的名称。 要获取审核操作组列表,请参阅 SQL Server 审核操作组和操作。
class
安全对象的类名称(如果适用)。
securable
要对其应用审核操作或审核操作组的数据库中的表、视图或其他安全对象。 有关详细信息,请参阅 Securables。
principal
要对其应用审核操作或审核操作组的数据库主体的名称。 若要审核所有数据库主体,请使用 公共 数据库主体。 有关详细信息,请参阅主体(数据库引擎)。
WITH ( STATE = { ON | OFF } )
允许或禁止审核收集此审核规范的记录。
备注
数据库审核规范是驻留在给定数据库中的非安全对象。 数据库审核规范在创建之后处于禁用状态。
权限
拥有 ALTER ANY DATABASE AUDIT
权限的用户可以创建数据库审核规范并将其绑定到任何审核。
创建数据库审核规范后,具有 CONTROL SERVER
权限或 sysadmin
帐户的用户可以查看该规范。
示例
本文中的 Transact-SQL 代码示例使用 AdventureWorks2022
或 AdventureWorksDW2022
示例数据库,可从 Microsoft SQL Server 示例和社区项目主页下载它。
A. 审核任何数据库主体的表上的 SELECT 和 INSERT
以下示例为表创建一个调用Payroll_Security_Audit
的服务器审核,然后创建一个数据库审核规范,HumanResources.EmployeePayHistory
该规范由Payroll_Security_Audit
公共数据库角色的任何成员进行审核SELECT
和INSERT
语句。 审核每个用户,因为每个用户始终是公共角色的成员。
USE master;
GO
-- Create the server audit.
CREATE SERVER AUDIT Payroll_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO
-- Enable the server audit.
ALTER SERVER AUDIT Payroll_Security_Audit
WITH (STATE = ON);
GO
-- Move to the target database.
USE AdventureWorks2022;
GO
-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Pay_Tables
FOR SERVER AUDIT Payroll_Security_Audit ADD (
SELECT, INSERT ON HumanResources.EmployeePayHistory BY PUBLIC
)
WITH (STATE = ON);
GO
B. 审核特定数据库角色架构中所有对象的任何数据修改
以下示例为架构中的所有对象创建一个调用DataModification_Security_Audit
的服务器审核,然后创建一个数据库Audit_Data_Modification_On_All_Sales_Tables
审核规范,该规范称为审核INSERT
、UPDATE
由DELETE
用户在新的数据库角色SalesUK
中的语句。Sales
USE master;
GO
-- Create the server audit.
-- Change the path to a path that the SQLServer Service has access to.
CREATE SERVER AUDIT DataModification_Security_Audit
TO FILE (FILEPATH = 'D:\SQLAudit\'); -- make sure this path exists
GO
-- Enable the server audit.
ALTER SERVER AUDIT DataModification_Security_Audit
WITH (STATE = ON);
GO
-- Move to the target database.
USE AdventureWorks2022;
GO
CREATE ROLE SalesUK
GO
-- Create the database audit specification.
CREATE DATABASE AUDIT SPECIFICATION Audit_Data_Modification_On_All_Sales_Tables
FOR SERVER AUDIT DataModification_Security_Audit ADD (
INSERT, UPDATE, DELETE ON SCHEMA::Sales BY SalesUK
)
WITH (STATE = ON);
GO
相关任务
服务器审核规范:
- CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
- ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
- DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
数据库审核规范:
- CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
- ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
- DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
目录视图和 DMV:
- sys.server_audits (Transact-SQL)
- sys.server_file_audits (Transact-SQL)
- sys.server_audit_specifications (Transact-SQL)
- sys.server_audit_specification_details (Transact-SQL)
- sys.database_audit_specifications (Transact-SQL)
- sys.database_audit_specification_details (Transact-SQL)