CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

適用対象: SQL Server Azure 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 ]
}

引数

audit_specification_name

監査仕様の名前。

audit_name

この仕様が適用される監査の名前。

audit_action_specification

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

action

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

audit_action_group_name

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

クラス

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

securable

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

principal

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

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 テーブルの public データベース ロールのメンバーによってSELECTステートメントとINSERTステートメントを監査するPayroll_Security_Auditと呼ばれるデータベース監査仕様を作成します。 すべてのユーザーが常に public ロールのメンバーであるため、すべてのユーザーが監査されます。

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と呼ばれるサーバー監査を作成し、Sales スキーマ内のすべてのオブジェクトについて、新しいデータベース ロール SalesUKのユーザーによるINSERTUPDATE、およびDELETEステートメントを監査するAudit_Data_Modification_On_All_Sales_Tablesと呼ばれるデータベース監査仕様を作成します。

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

サーバー監査の仕様:

データベース監査の仕様:

カタログ ビューと DMV: