CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
SQL Server Audit 機能を使用して、データベース監査仕様オブジェクトを作成します。 詳細については、「SQL Server Audit (データベース エンジン)」を参照してください。
構文
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
のユーザーによるINSERT
、UPDATE
、および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
関連タスク
サーバー監査の仕様:
- 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)