SQL Server Audit機能の設定

この記事の内容

この記事では、SQL Server Auditの機能を有効にして、SQLデータベースを監査する方法について説明します。

前提条件

  • サーバー監査オブジェクトを作成、変更、削除、有効にするには、対象となるSQL Serverインスタンスに対する、ALTER ANY SERVER AUDIT権限またはCONTROL SERVER権限を持っている必要があります。
    1. ALTER ANY SERVER AUDIT権限の付与

      USE master;
      GO
      GRANT ALTER ANY SERVER AUDIT TO AuditConfigurationLogin

    2. CONTROL SERVER権限の付与

      USE master;
      GO
      GRANT CONTROL SERVER TO AuditConfigurationLogin

    上記のクエリの「master」は、SQL Serverシステムのすべてのシステムレベル情報を記録するマスターデータベースを表しています。「GO」コマンドは、Transact-SQLステートメントではなく、sqlcmdユーティリティ、osqlユーティリティ、SQL Server Management Studioのコードエディターによって認識されるコマンドです。

  • データベース監査仕様を構成するには、監査対象のデータベース(次の例では、WideWorldImporters)に対する、ALTER ANY DATABASE AUDIT権限、ALTER権限、またはCONTROL権限が必要です。
    1. ALTER ANY DATABASE AUDIT権限の付与

      USE WideWorldImporters;
      GO
      GRANT ALTER ANY DATABASE AUDIT TO AuditConfigurationLogin

    2. ALTER権限の付与

      USE WideWorldImporters;
      GO
      GRANT ALTER TO AuditConfiguration;

    3. CONTROL権限の付与

      USE WideWorldImporters;
      GO
      GRANT CONTROL TO AuditConfiguration;

SQL Server Management StudioでSQL Server Auditを構成する方法

SQL Server Audit機能は、T-SQLまたはSQL Server Management Studioで設定できます。SQL Server Management Studioを使用してSQL Server Auditを構成する手順は、以下のとおりです。

  1. SQL Server Auditオブジェクトを作成するために、[オブジェクト エクスプローラー]で[セキュリティ]フォルダーを展開します。
  2. [監査]フォルダーを右クリックします。
  3. [新しい監査]を選択します。
  4. [監査の作成]ダイアログボックスで、監査名、監査の出力先、ファイルパスを指定します。
    • 処理の遅延:監査情報を処理してターゲットファイルに格納するまでの遅延(ミリ秒単位)を設定します。値を「0」に設定すると、遅延なしで即座に処理が行われます。
    • ロールオーバーファイルの最大数:システム内に保持されるファイルの最大数です。最大数に達すると、新しいファイルが古いファイルを上書きされます。デフォルト値は[無制限]です。
    • 最大ファイル数:システム内に保持されるファイルの数です。最大数に達すると、古いファイルは上書きされず、新しい監査情報は保存されません。
    • ファイルの最大サイズ:ターゲットファイルのサイズ制限を設定します。指定したサイズに達すると、新しいファイルが作成されます。デフォルト値は[無制限]です。

    監査の出力先として、ファイル(*.sqlauditファイル)、セキュリティログ、アプリケーションログを選択できます。ファイルやアプリケーションログに書き込むために特別な権限は必要ありません。ただし、セキュリティログにイベントを記録するには「オブジェクト アクセスの監査」を構成しておく必要があり、この構成方法は使用しているOSによって異なります。

    • Windows VistaとWindows Server 2008では、監査ポリシーツール(auditpol.exe)を使用する必要があります。監査ポリシーツールでは、監査オブジェクトアクセスカテゴリー内にさまざまなサブポリシー設定が用意されています。アプリケーションで既に生成された設定をもとに、SQL Serverがオブジェクトアクセスを監査できるように構成する必要があります。
    • Windows Vistaより古いバージョンでは、監査ポリシーツールを利用できません。代わりに、セキュリティポリシー管理スナップイン(secpol.msc)を使用します。利用可能な場合は、詳細な設定が行える監査ポリシーを使用してください。
    • 詳細な設定が可能なため監査ポリシーツールが望ましいですが、Windowsの旧バージョンでは利用できません。そのため、セキュリティポリシー管理スナップインの使用が推奨されています。

    SQL Serverが使用しているアカウントのWindowsセキュリティログに書き込むには、「セキュリティ監査の生成」権限が必要です。サーバーが「LOCAL SERVICE」や「NETWORK SERVICE」のアカウントで実行されている場合、アカウントには「セキュリティ監査の生成」権限がデフォルトで付与されています。

  5. 作成した監査を右クリックし、[監査の有効化]を選択します。

    既存の監査を変更するには、まず監査を無効にする必要があります。無効化するには、[監査]を右クリックし、[監査の無効化]を選択します。変更を行う前に既存の監査を無効にしていない場合、変更は保存されません。

T-SQLでSQL Server Auditを構成する方法

T-SQLで以下のクエリを実行し、サーバー監査を作成して有効にします。

CREATE SERVER AUDIT [WideWorldImportersAudit_DDL_Access] TO FILE
( FILEPATH = N'D:\TestAudits\'
,MAXSIZE = 10 MB
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
)
ALTER SERVER AUDIT [WideWorldImportersAudit_DDL_Access]WITH (STATE = ON)
GO

監査オブジェクトとデータベース監査仕様が有効になると、テーブル内のすべてのエントリーが監査・報告されます。

T-SQLとSQL Server Management Studioの機能を使用し、SQL Server Auditとそのコンポーネントを構成して有効にできます。「Change Tracking(変更追跡)」と「Change Data Capture(変更データキャプチャ)」を使用した監査と比較すれば、詳細で有用な監査結果を得られます。イベントは複数のグループに分類され、監査対象となるのは各グループです。