SQL Server監査機能:SQL Server Audit

概要

SQL Server 2008 以降でこのSQL Server Audioという監査ログを残す機能が存在する。
ただし、SQL Server 2008 R2 以下は Enterprise Edition でないとこの機能を現実的に使うのは難しい。
(Enterprise Editionであればデータベース監査で、特定DBのみ監査ができると思われる)
SQL Server 2012 以降は監査ログに「フィルタ」という機能が加わっており、サーバ監査の機能でも必要なデータベースについてのみログを残すことが可能。
結果は、fn_get_audit_file関数でテーブルであるかのように読める。

ログ保存先

保存先は、バイナリファイル、Windowsアプリケーション・イベントログ、Windowsセキュリティ・イベントログのいずれか。

監査の作成方法

以下の手順で「サーバ監査」で特定DBに対してのログを残すことが出来る。

SQL Server Management Studioを起動

サーバ名→セキュリティ→監査→右クリック→新しい監査
	監査の出力先:ファイル
	ファイルパス:任意のパス
	フィルタ  :([database_name]='対象DB')…など
	OKボタンを押す
	作成したアイテム右クリック→有効化

サーバ名→セキュリティ→サーバ監査の仕様→右クリック→新しいサーバ監査の仕様
	監査        :上記で作成した監査
	監査アクションの種類:SCHEMA_OBJECT_ACCESS_GROUP
	OKボタンを押す
	作成したアイテム右クリック→有効化

サーバ名→セキュリティ→監査→上記で作成した監査→右クリック→監査ログの表示

監査ログを外部から確認する方法

sys.fn_get_audit_file関数を利用することで、監査ログファイルの内容をテーブルのように取得してくることが可能。

SELECT * FROM sys.fn_get_audit_file('C:\LOG\*', null, null)

sys.fn_get_audit_fileリファレンス
https://msdn.microsoft.com/ja-jp/library/cc280765(v=sql.120).aspx

サーバ監査の負荷について

ほぼ影響はないと思われる。
以下の資料によると、全テーブルの監査を行った場合でも以下のような影響だとされている。
https://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2008/r2/technology/cqi.aspx#a01

SQL Server 2008 R2 徹底検証シリーズ
SQL Server 2008 R2 マルチサーバー管理 環境の構築と運用ガイド
5.2.1 セキュリティ監査の負荷計測

プロセッサ利用率      : 47.8%(監査なし) → 62.2%(監査あり)
秒あたりのトランザクション量:100.0%(監査なし) → 97.0%(監査あり)