CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

SQL Server Audit 機能を使用して、データベース監査仕様オブジェクトを作成します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。

Transact-SQL 構文表記規則

構文

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 ]  
}  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

audit_specification_name
監査仕様の名前を指定します。

audit_name
この仕様が適用される監査の名前を指定します。

audit_action_specification
監査で記録する、セキュリティ保護可能なリソースに対するプリンシパルによるアクションの仕様を指定します。

action
データベース レベルの 1 つまたは複数の監査可能なアクションの名前を指定します。 監査アクションの一覧については、「SQL Server 監査のアクション グループとアクション」をご覧ください。

audit_action_group_name
データベース レベルの 1 つ以上の監査可能なアクション グループの名前を指定します。 監査アクション グループの一覧については、「SQL Server 監査のアクション グループとアクション」をご覧ください。

class
セキュリティ保護可能なリソースのクラス名 (該当する場合) です。

securable
監査アクションまたは監査アクション グループを適用するデータベース内のテーブル、ビュー、またはその他のセキュリティ保護可能なオブジェクトを指定します。 詳細については、「 セキュリティ保護可能」を参照してください。

principal
監査アクションまたは監査アクション グループを適用するデータベース プリンシパルの名前を指定します。 データベース プリンシパルをすべて監査するには、データベース プリンシパル public を使用します。 詳しくは、「プリンシパル (データベース エンジン)」をご覧ください。

WITH ( STATE = { ON | OFF } )
監査による、この監査仕様についてのレコードの収集を有効または無効にします。

解説

データベース監査仕様は、セキュリティ保護できないオブジェクトであり、特定のデータベースに保存されます。 作成されたデータベース監査仕様は無効な状態です。

アクセス許可

ALTER ANY DATABASE AUDIT 権限を持つユーザーは、データベース監査の仕様を作成し、任意の監査にバインドできます。

データベース監査仕様の作成後は、CONTROL SERVER 権限を持つユーザー、または sysadmin アカウントがその仕様を表示できます。

A. 任意のデータベース プリンシパルについてテーブルで SELECT と INSERT を監査する

次の例では、Payrole_Security_Audit というサーバー監査を作成した後、AdventureWorks2022 データベースの HumanResources.EmployeePayHistory テーブルで、public データベース ロールのすべてのメンバーによる SELECT ステートメントと INSERT ステートメントを監査する、Payrole_Security_Audit というデータベース監査仕様を作成します。 これにより、すべてのユーザーが監査されるようになります。すべてのユーザーは常に public ロールのメンバーであるからです。

USE master ;  
GO  
-- Create the server audit.  
CREATE SERVER AUDIT Payrole_Security_Audit  
    TO FILE ( FILEPATH =   
'D:\SQLAudit\' ) ;  -- make sure this path exists
GO  
-- Enable the server audit.  
ALTER SERVER AUDIT Payrole_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 Payrole_Security_Audit  
ADD (SELECT , INSERT  
     ON HumanResources.EmployeePayHistory BY public )  
WITH (STATE = ON) ;  
GO  

B. 特定のデータベース ロールについて sales スキーマのすべてのオブジェクトで任意の DML (INSERT、UPDATE、または DELETE) を監査する

次の例では、DataModification_Security_Audit というサーバー監査を作成した後、Audit_Data_Modification_On_All_Sales_Tables データベースでの INSERT スキーマのすべてのオブジェクトについて、新しいデータベース ロール UPDATE のユーザーによる DELETESalesUK および Sales ステートメントを監査する、AdventureWorks2022 というデータベース監査仕様を作成します。

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 (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
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)
ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL)
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)
sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL)
サーバー監査およびサーバー監査の仕様を作成する