CREATE SERVER AUDIT (Transact-SQL)CREATE SERVER AUDIT (Transact-SQL)

適用対象: yesSQL Server yesAzure SQL Database (Managed Instance のみ) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server Audit を使用してサーバーの監査オブジェクトを作成します。Creates a server audit object using SQL ServerSQL Server Audit. 詳しくは、「SQL Server Audit (データベース エンジン)」を参照してください。For more information, see SQL Server Audit (Database Engine).

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

CREATE SERVER AUDIT audit_name  
{  
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR }  
    [ WITH ( <audit_options> [ , ...n ] ) ]   
    [ WHERE <predicate_expression> ]  
}  
[ ; ]  
  
<file_options>::=  
{  
        FILEPATH = 'os_file_path'  
    [ , MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]  
    [ , { MAX_ROLLOVER_FILES = { integer | UNLIMITED } } | { MAX_FILES = integer } ]  
    [ , RESERVE_DISK_SPACE = { ON | OFF } ]   
}  
  
<audit_options>::=  
{  
    [   QUEUE_DELAY = integer ]  
    [ , ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } ]  
    [ , AUDIT_GUID = uniqueidentifier ]  
}  
  
<predicate_expression>::=  
{  
    [NOT ] <predicate_factor>   
    [ { AND | OR } [NOT ] { <predicate_factor> } ]   
    [,...n ]  
}  
  
<predicate_factor>::=   
    event_field_name { = | < > | ! = | > | > = | < | < = | LIKE } { number | ' string ' }  

引数Arguments

TO { FILE | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR } 監査ターゲットの場所を決定します。TO { FILE | APPLICATION_LOG | SECURITY_LOG | URL | EXTERNAL_MONITOR } Determines the location of the audit target. オプションは、バイナリ ファイル、Windows アプリケーション ログ、または Windows セキュリティ ログです。The options are a binary file, The Windows Application log, or the Windows Security log. SQL ServerSQL Server は、Windows で追加の設定を行わないと Windows セキュリティ ログに書き込むことができません。cannot write to the Windows Security log without configuring additional settings in Windows. 詳細については、「 セキュリティ ログへの SQL サーバー監査イベントの書き込み」を参照してください。For more information, see Write SQL Server Audit Events to the Security Log.

重要

Azure SQL Database マネージド インスタンスでは SQL 監査はサーバー レベルで動作します。In Azure SQL Database managed instance, SQL Audit works at the server level. 場所は URL または EXTERNAL_MONITOR にのみすることができます。Locations can only be URL or EXTERNAL_MONITOR.

FILEPATH ='os_file_path'FILEPATH ='os_file_path'
監査ログのパス。The path of the audit log. ファイル名は、監査名と監査 GUID に基づいて生成されます。The file name is generated based on the audit name and audit GUID.

MAXSIZE = { max_size }MAXSIZE = { max_size }
監査ファイルのサイズの上限を指定します。Specifies the maximum size to which the audit file can grow. max_size の値は、整数の後に MB、GB、TB を付けて指定するか、または UNLIMITED を指定します。The max_size value must be an integer followed by MB, GB, TB, or UNLIMITED. max_size に指定できる最小サイズは 2 MB、最大サイズは 2,147,483,647 TB です。The minimum size that you can specify for max_size is 2 MB and the maximum is 2,147,483,647 TB. UNLIMITED を指定した場合、ファイルはディスクがいっぱいになるまで拡張されます。When UNLIMITED is specified, the file grows until the disk is full. 0 も UNLIMITED を示します。2 MB 未満の値を指定すると、エラー MSG_MAXSIZE_TOO_SMALL が発生します。(0 also indicates UNLIMITED.) Specifying a value lower than 2 MB raises the error MSG_MAXSIZE_TOO_SMALL. 既定値は UNLIMITED です。The default value is UNLIMITED.

MAX_ROLLOVER_FILES = { integer | UNLIMITED }MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
現在のファイルに加えてファイル システム内に保持するファイルの最大数を指定します。Specifies the maximum number of files to retain in the file system in addition to the current file. MAX_ROLLOVER_FILES 値には整数値または UNLIMITED を指定してください。The MAX_ROLLOVER_FILES value must be an integer or UNLIMITED. 既定値は UNLIMITED です。The default value is UNLIMITED. 監査が再開されるたび (データベース エンジンDatabase Engine のインスタンスの再起動時や、監査をオフにして再度オンにしたとき)、または MAXSIZE に達して新しいファイルが必要になった場合に、このパラメーターが評価されます。This parameter is evaluated whenever the audit restarts (which can happen when the instance of the データベース エンジンDatabase Engine restarts or when the audit is turned off and then on again) or when a new file is needed because the MAXSIZE has been reached. MAX_ROLLOVER_FILES の評価時にファイル数が MAX_ROLLOVER_FILES の設定を超えている場合、最も古いファイルが削除されます。When MAX_ROLLOVER_FILES is evaluated, if the number of files exceeds the MAX_ROLLOVER_FILES setting, the oldest file is deleted. そのため、MAX_ROLLOVER_FILES の設定が 0 の場合、MAX_ROLLOVER_FILES 設定が評価されるたびに新しいファイルが作成されます。As a result, when the setting of MAX_ROLLOVER_FILES is 0 a new file is created each time the MAX_ROLLOVER_FILES setting is evaluated. MAX_ROLLOVER_FILES 設定の評価時に自動的に削除されるファイルは 1 つだけです。したがって、MAX_ROLLOVER_FILES の値を下げても、古いファイルを手動で削除しない限り、ファイル数は少なくなりません。Only one file is automatically deleted when MAX_ROLLOVER_FILES setting is evaluated, so when the value of MAX_ROLLOVER_FILES is decreased, the number of files does not shrink unless old files are manually deleted. 指定できるファイルの最大数は 2,147,483,647 です。The maximum number of files that can be specified is 2,147,483,647.

MAX_FILES =integerMAX_FILES =integer
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

作成できる監査ファイルの最大数を指定します。Specifies the maximum number of audit files that can be created. 制限に達しても、最初のファイルへのロールオーバーは行われません。Does not rollover to the first file when the limit is reached. MAX_FILES の制限に達すると、追加の監査イベントを生成させるアクションは失敗し、エラーが発生します。When the MAX_FILES limit is reached, any action that causes additional audit events to be generated, fails with an error.

RESERVE_DISK_SPACE = { ON | OFF }RESERVE_DISK_SPACE = { ON | OFF }
このオプションは、ディスク上のファイルを MAXSIZE 値に事前に割り当てます。This option pre-allocates the file on the disk to the MAXSIZE value. MAXSIZE が UNLIMITED でない場合にのみ適用されます。It applies only if MAXSIZE is not equal to UNLIMITED. 既定値は OFF です。The default value is OFF.

QUEUE_DELAY =integerQUEUE_DELAY =integer
監査アクションの処理が強制されるまでの経過時間 (ミリ秒) を指定します。Determines the time, in milliseconds, that can elapse before audit actions are forced to be processed. 値 0 は同期配信を表します。A value of 0 indicates synchronous delivery. クエリ遅延に設定可能な最小値は 1000 (1 秒) で、これが既定値です。The minimum settable query delay value is 1000 (1 second), which is the default. 最大値は 2,147,483,647 (2,147,483.647 秒、つまり 24 日、20 時間、31 分、23.647 秒) です。The maximum is 2,147,483,647 (2,147,483.647 seconds or 24 days, 20 hours, 31 minutes, 23.647 seconds). 無効な数値を指定すると、MSG_INVALID_QUEUE_DELAY エラーが発生します。Specifying an invalid number, raises the MSG_INVALID_QUEUE_DELAY error.

ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
ターゲットで監査ログへの書き込みができない場合に、ターゲットへのインスタンスの書き込みをエラーにするか、続行するか、SQL ServerSQL Server を停止するかを示します。Indicates whether the instance writing to the target should fail, continue, or stop SQL ServerSQL Server if the target cannot write to the audit log. 既定値は CONTINUE です。The default value is CONTINUE.

CONTINUECONTINUE
SQL ServerSQL Server 操作を続行します。operations continue. 監査レコードは保持されません。Audit records are not retained. 監査はイベントのログ記録を試行し続け、エラー状態が解決されると、記録を再開します。The audit continues to attempt to log events and resumes if the failure condition is resolved. 続行オプションを選択すると、セキュリティ ポリシーに違反する可能性がある、監査されない活動を許可する場合があります。Selecting the continue option can allow unaudited activity, which could violate your security policies. 完全な監査を維持することより、データベース エンジンDatabase Engineの操作を続行することの方が重要である場合に、このオプションを使用します。Use this option, when continuing operation of the データベース エンジンDatabase Engine is more important than maintaining a complete audit.

SHUTDOWNSHUTDOWN
SQL ServerSQL Server がなんらかの理由で監査ターゲットへのデータの書き込みに失敗した場合は、SQL ServerSQL Server のインスタンスを強制的にシャットダウンします。Forces the instance of SQL ServerSQL Server to shut down, if SQL ServerSQL Server fails to write data to the audit target for any reason. CREATE SERVER AUDIT ステートメントを実行しているログインには、SQL ServerSQL Server 内での SHUTDOWN 権限が必要です。The login executing the CREATE SERVER AUDIT statement must have the SHUTDOWN permission within SQL ServerSQL Server. 実行中のログインから SHUTDOWN アクセス許可が後で取り消された場合でも、シャットダウンの動作は継続します。The shutdown behavior persists even if the SHUTDOWN permission is later revoked from the executing login. ユーザーがこのアクセス許可を持っていない場合は、ステートメントが失敗し、監査は作成されません。If the user does not have this permission, then the statement fails and the audit is not be created. 監査エラーによってシステムのセキュリティまたは整合性が阻害される可能性がある場合に、このオプションを使用します。Use the option when an audit failure could compromise the security or integrity of the system. 詳細については、「SHUTDOWN」を参照してください。For more information, see SHUTDOWN.

FAIL_OPERATIONFAIL_OPERATION
監査イベントを発生させるデータベース アクションを失敗させます。Database actions fail if they cause audited events. 監査イベントを発生させないアクションは続行できますが、監査イベントを発生させることはできません。Actions, which do not cause audited events can continue, but no audited events can occur. 監査はイベントのログ記録を試行し続け、エラー状態が解決されると、記録を再開します。The audit continues to attempt to log events and resumes if the failure condition is resolved. データベース エンジンDatabase Engineへのフル アクセスより、完全な監査の維持の方が重要である場合に、このオプションを使用します。Use this option when maintaining a complete audit is more important than full access to the データベース エンジンDatabase Engine.
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

AUDIT_GUID =uniqueidentifierAUDIT_GUID =uniqueidentifier
監査には、データベース ミラーリングなどのシナリオをサポートするために、ミラーリングされたデータベースで見つかった GUID と照合する特定の GUID が必要です。To support scenarios such as database mirroring, an audit needs a specific GUID that matches the GUID found in the mirrored database. この GUID は、監査が作成されると変更できなくなります。The GUID cannot be modified after the audit has been created.

predicate_expressionpredicate_expression
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

イベントを処理する必要があるかどうかを判定するために使用する述語式を指定します。Specifies the predicate expression used to determine if an event should be processed or not. 述語式は 3,000 文字に制限され、これにより文字列引数が制限されます。Predicate expressions are limited to 3000 characters, which limits string arguments.

event_field_nameevent_field_name
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

述語ソースを識別するイベント フィールドの名前を指定します。Is the name of the event field that identifies the predicate source. 監査フィールドについては、「sys.fn_get_audit_file (Transact-SQL)」で説明されています。Audit fields are described in sys.fn_get_audit_file (Transact-SQL). file_nameaudit_file_offsetevent_time 以外のすべてのフィールドは監査できます。All fields can be filtered except file_name, audit_file_offset, and event_time.

注意

action_id および class_type フィールドは、型が sys.fn_get_audit_file に示されている varchar で、フィルター対象の述語ソースである場合にのみ、数値と共に使用できます。While the action_id and class_type fields are of type varchar in sys.fn_get_audit_file, they can only be used with numbers when they are a predicate source for filtering. class_type で使用する値のリストを取得するには、次のクエリを実行します。To get the list of values to be used with class_type, execute the following query:

SELECT spt.[name], spt.[number]
FROM   [master].[dbo].[spt_values] spt
WHERE  spt.[type] = N'EOD'
ORDER BY spt.[name];

numbernumber
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

decimal を含む任意の数値型です。Is any numeric type including decimal. 制限として、使用可能な物理メモリの不足、または 64 ビット整数として表すのに大きすぎる数字が挙げられます。Limitations are the lack of available physical memory or a number that is too large to be represented as a 64-bit integer.

' string '' string '
適用対象: SQL Server 2012 (11.x)SQL Server 2012 (11.x) から SQL ServerSQL ServerApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL ServerSQL Server.

述語の比較に必要な ANSI 文字列または Unicode 文字列です。Either an ANSI or Unicode string as required by the predicate compare. 述語比較関数に対しては、暗黙の文字列型変換は行われません。No implicit string type conversion is performed for the predicate compare functions. 無効な型を渡すとエラーになります。Passing the wrong type results in an error.

RemarksRemarks

作成されたサーバー監査は無効な状態です。When a server audit is created, it is in a disabled state.

CREATE SERVER AUDIT ステートメントはトランザクションのスコープ内にあります。The CREATE SERVER AUDIT statement is in a transaction's scope. トランザクションがロールバックされると、ステートメントもロールバックされます。If the transaction is rolled back, the statement is also rolled back.

アクセス許可Permissions

サーバー監査を作成、変更、または削除する場合、プリンシパルには、ALTER ANY SERVER AUDIT または CONTROL SERVER の権限が必要です。To create, alter, or drop a server audit, principals require the ALTER ANY SERVER AUDIT or the CONTROL SERVER permission.

改ざんを防止するために監査情報をファイルに保存する場合は、そのファイルの場所へのアクセスを制限します。When you are saving audit information to a file, to help prevent tampering, restrict access to the file location.

使用例Examples

A.A. ファイル ターゲットを使用するサーバー監査を作成するCreating a server audit with a file target

次の例では、バイナリ ファイルをターゲットとする HIPAA_Audit というサーバー監査を、オプションなしで作成します。The following example creates a server audit called HIPAA_Audit with a binary file as the target and no options.

CREATE SERVER AUDIT HIPAA_Audit  
    TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );  

B.B. Windows アプリケーション ログ ターゲットを使用するサーバー監査をオプション付きで作成するCreating a server audit with a Windows Application log target with options

次の例では、Windows アプリケーション ログをターゲット セットとする HIPAA_Audit というサーバー監査を作成します。The following example creates a server audit called HIPAA_Audit with the target set for the Windows Application log. キューには 1 秒ごとに書き込みが行われ、失敗時はキューによって SQL ServerSQL Server エンジンがシャットダウンされます。The queue is written every second and shuts down the SQL ServerSQL Server engine on failure.

CREATE SERVER AUDIT HIPAA_Audit  
    TO APPLICATION_LOG  
    WITH ( QUEUE_DELAY = 1000,  ON_FAILURE = SHUTDOWN);  

C.C. WHERE 句を含むサーバー監査を作成するCreating a server audit containing a WHERE clause

次の例では、データベース、スキーマ、およびサンプルの 2 つのテーブルを作成します。The following example creates a database, schema, and two tables for the example. DataSchema.SensitiveData という名前のテーブルには機密データが含まれ、このテーブルへのアクセスは監査に記録する必要があります。The table named DataSchema.SensitiveData contains confidential data and access to the table must be recorded in the audit. DataSchema.GeneralData という名前のテーブルには、機密データは含まれません。The table named DataSchema.GeneralData does not contain confidential data. データベース監査の仕様によって、DataSchema スキーマのすべてのオブジェクトへのアクセスが監査されます。The database audit specification audits access to all objects in the DataSchema schema. サーバー監査の対象を SensitiveData テーブルのみに制限する WHERE 句付きで、サーバー監査が作成されます。The server audit is created with a WHERE clause that limits the server audit to only the SensitiveData table. サーバー監査は、監査フォルダーが C:\SQLAudit にあることを前提としています。The server audit presumes an audit folder exists at C:\SQLAudit.

CREATE DATABASE TestDB;  
GO  
USE TestDB;  
GO  
CREATE SCHEMA DataSchema;  
GO  
CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
-- Create the server audit in the master database  
USE master;  
GO  
CREATE SERVER AUDIT AuditDataAccess  
    TO FILE ( FILEPATH ='C:\SQLAudit\' )  
    WHERE object_name = 'SensitiveData' ;  
GO  
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);  
GO  
-- Create the database audit specification in the TestDB database  
USE TestDB;  
GO  
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]  
FOR SERVER AUDIT [AuditDataAccess]   
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])  
WITH (STATE = ON);  
GO  
-- Trigger the audit event by selecting from tables  
SELECT ID, DataField FROM DataSchema.GeneralData;  
SELECT ID, DataField FROM DataSchema.SensitiveData;  
GO  
-- Check the audit for the filtered content  
SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);  
GO  

参照See Also

ALTER SERVER AUDIT (Transact-SQL) ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL) DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL) CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL) ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL) DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL) ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL) DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL) ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL) sys.fn_get_audit_file (Transact-SQL)
sys.server_audits (Transact-SQL) sys.server_audits (Transact-SQL)
sys.server_file_audits (Transact-SQL) sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications (Transact-SQL) sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details (Transact-SQL) sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL) sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details (Transact-SQL) sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status (Transact-SQL) sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions (Transact-SQL) sys.dm_audit_actions (Transact-SQL)
sys.dm_audit_class_type_map (Transact-SQL) sys.dm_audit_class_type_map (Transact-SQL)
サーバー監査およびサーバー監査の仕様を作成するCreate a Server Audit and Server Audit Specification