STEP 4. SQL Server Audit による あらゆる操作の監査
4.2 ログイン アカウントの変更履歴の監査: サーバー監査の仕様
ログイン アカウントの変更履歴の監査
次に、ログイン アカウント(プリンシパル)の作成やパスワード変更など、ログイン アカウント に対する変更操作が行われたことをログへ記録するための監査を作成してみましょう。
1. ログイン アカウントなど、SQL Server 全体に関係するサーバー レベルの監査を作成するに は、次のように[セキュリティ]フォルダーの[サーバー監査の仕様]を右クリックして[新 しいサーバー監査の仕様]をクリックします。
2. これにより、「サーバー監査の仕様の作成」ダイアログが表示されるので、[監査]で前の手順 で利用した「AuditTest」を選択します。
[監査アクションの種類]では「LOGIN_CHANGE_PASSWORD_GROUP」(パスワード
1
1
「LOGIN_CHANGE_PASS WORD_GROUP」を選択 2
「SERVER_PRINCIPAL_
CHANGE_GROUP」を選択 3
4
任意の名前 を設定
の変更)と「SERVER_PRINCIPAL_CHANGE_GROUP」(サーバー プリンシパルの変更)
を選択し、[OK]ボタンをクリックします。
3. 次に、作成したサーバー監査の仕様(既定では ServerAuditSpec ~ という名前)を右ク リックして[サーバー監査の仕様の有効化]をクリックします。
以上で設定が完了です。これで、ログイン アカウント(プリンシパル)の変更(作成/変更
/削除)とパスワードの変更が行われたことをログへ記録できるようになります。
4. 続いて、次のように操作して、任意のログイン アカウントを作成します。
5. 次に、作成したログイン アカウントをダブルクリックしてプロパティを開き、パスワードを 適当なものへ変更します。
↓
1
2
1
2
3
6. 以上の操作が監査ログへ記録されたことを確認するために、次のように[セキュリティ]フォ ルダーの[監査]フォルダーにある監査(AuditTest)を右クリックして、[監査ログの表示]
をクリックします。
パスワードの変更は、[アクションID]が[RESET PASSWORD]、ログイン アカウントの 作成は、[CREATE]と表示されたログが記録されていることを確認できます。また、ログに は、ステートメントが実行された時刻や、実行ユーザー(プリンシパル名)、実際に実行され たステートメントなどが記録されていることも確認できます。
このように、SQL Server Audit機能を利用すると、ログイン アカウントに対する変更履歴を すべてログへ記録できるようになるので、ログイン アカウントを不正利用(管理者アカウン
1
2
3
1
アクションIDがRESET PASSWORD(パスワード変更)
ステートメントを実行した ユーザーID(プリンシパル名)
時刻
実行された ステートメント
トのパスワードを変更されたり、管理者アカウントが勝手に作られるなど)をログへ記録でき るようになります。
コマンドでログの参照: fn_get_audit_file
監査ログは、fn_get_audit_file システム関数を利用すると、コマンドから参照することもでき ます。これは、次のように利用します。
SELECT statement, action_id, class_type, *
FROM sys.fn_get_audit_file ('C:\AuditTest*', null, null)
この関数は、第1引数へログ ファイルへのパス(* はワイルドカード)を指定して、該当するフ ァイルが複数ある場合には、それらをまとめて読み取ることができます。
このようにステートメントを利用して、ログを参照することもできるので、GROUP BY 演算など と組み合わせて実行すれば、集計レポート(Weekly レポートや Monthly レポートなど)も簡単 に作成できるようになります。
具体的なレポートの作成方法については、SQL Server 2008 徹底検証シリーズの以下のドキュメ ントに詳しく記載されています。
「コンプライアンス実現のためのガイドライン」
http://www.microsoft.com/ja-jp/sqlserver/2008/r2/technology/cqi.aspx
そのほかのサーバー監査の仕様
サーバー監査の仕様には、「FAILED_LOGIN_GROUP」でログインの失敗を記録したり、
「SERVER_PERMISSION_CHANGE_GROUP」で SQL Server レベルの権限の変更を記録し たり、「AUDIT_ CHANGE_GROUP」で監査が変更(作成/変更/削除)されたことを記録でき るなど、セキュリティ強化・コンプライアンス実現のための仕様がたくさん用意されています。こ れらは、オンライン ブックの以下の場所へ詳しく記載されているので、ぜひ参考にしてください。
「SQL Server データベース エンジン」→「データベース エンジンの機能とタスク」
→「セキュリティと保護(データベース エンジン)」
→「SQL Server Audit」→「SQL Server 監査のアクション グループとアクション」
実行された
ステートメント アクションID。CRはCREATE、 発生時刻
PWRはPASSWORD CHANGE アクションID の分類 SLはSQL LOGIN