STEP 4. SQL Server Audit による あらゆる操作の監査
4.4 データベースに対する操作履歴の監査
データベースに対する操作履歴の監査
SQL Server Audit では、SQL Server に対するあらゆる操作を監査することができるので、デー
タベースに対する操作(SELECT や INSERT、UPDATE、DELETE など)も、もちろん監査(ロ グ記録)することができます。
Let's Try
それでは、これを試してみましょう。ここでは、NorthwindJ データベース内の「得意先」テー ブルに対して「SELECT」ステートメントが実行されたことをログへ記録する監査(Audit)を作 成してみましょう(NorthwindJ データベースのセットアップ方法については、Step 1.4 の手順 を参考にしてください)。
1. まずは、[データベース]フォルダーの[NorthwindJ]データベースを展開して、[セキュリ ティ]フォルダーの[データベース監査の仕様]を右クリックし、[新しいデータベース監査 の仕様]をクリックします。
これにより、「データベース監査の仕様の作成」ダイアログが表示されるので、[監査]で前の 手順で作成した「AuditTest」を選択し、[監査アクションの種類]で「SELECT」を選択し ます。
2. 次に、[オブジェクト名]の[...]をクリックして、次のように「オブジェクトの選択」ダイ アログで[参照]ボタンをクリックして、「得意先」テーブルを選択します。
1
2
3
任意の名前 を設定
3. 続いて、次のように[プリンシパル名]の[...]をクリックして、「オブジェクトの選択」ダ イアログで[参照]ボタンをクリックして、「dbo」データベース ユーザーを選択します。
「...」ボタンを クリック 1
2 3 「得意先」をチェック
4
5
「...」ボタンを クリック 1
「dbo」をチェック 3
4
5 2
このように設定することで、NorthwindJ データベース内の「得意先」テーブルに対して、「dbo」
ユーザーから「SELECT」ステートメントが実行された場合に、ログへ記録できるようになり ます。設定を確認後、[OK]ボタンをクリックして、ダイアログを閉じます。
4. 次に、作成したデータベース監査の仕様(既定では DatabaseAuditSpec ~ という名前)
を右クリックして[データベース監査の仕様の有効化]をクリックします。
以上で監査の設定が完了です。
監査ログの記録とログの参照
1. 次に、監査対象の「得意先」テーブルに対して、次のように SELECT ステートメントを実行 して、監査ログへ記録されるかどうかを確認します(この手順は、dbo ユーザーにマッピン グされている SQL Server の管理者アカウントから実行してください)。
1
↓
2
「得意先」テーブルを右ク リックして「上位1000行 の選択」をクリック 1
得意先テーブルに対する SELECTステートメント が自動実行される
2. 続いて、監査ログを参照します。[セキュリティ]フォルダーの[監査]フォルダーにある監 査(AuditTest)を右クリックして、[監査ログの表示]をクリックします。
ログの中で、[アクションID]へ「SELECT」と表示されているイベントを確認することがで きます。この中身を参照すると、前の手順で実行した SELECT ステートメントが記録され、
そのステートメントを実行したユーザー(ログイン ID)と実行した時刻などを確認すること ができます。
このように、SQL Server Audit を利用すると、データベースに対するあらゆる操作を監査(ロ グ記録)できるので、「得意先」や「顧客」テーブルなどを監査すれば、顧客情報(クレジッ ト カードや個人情報など)の漏えいが発生した場合の証跡を残せるようになります。また、
特権ユーザー(管理者権限を持ったアカウント)の操作履歴(SQL Server に対する管理操作 やデータ操作)をすべて監査しておけば、不正利用(管理者アカウントを悪用したデータの盗 難やトロイの木馬の設置など)を監視できるようになります。
以上のように、SQL Server Audit は、J-SOX 法(日本版 SOX 法)や内部統制、PCI DSS
(クレジット カード情報のセキュリティ基準)などのコンプライアンス(法令遵守)の実現 およびセキュリティの強化には、不可欠な機能になります。従来のバージョンのプロファイラ ー(SQL Server Profiler)でも、同様に監査ログを記録することができますが、プロファイ ラーとの違いは、SQL Server Audit のほうが設定が容易で、かつパフォーマンスが良い(監 査のオーバーヘッドがプロファイラーよりも小さい)という点です。ぜひ、活用してみてくだ さい。
プロファイラーと SQL Server のパフォーマンス比較については、SQL Server 2008 徹底 検証シリーズの以下のドキュメントに詳しく記載されています。
「コンプライアンス実現のためのガイドライン」
http://www.microsoft.com/ja-jp/sqlserver/2008/r2/technology/cqi.aspx
1
アクションID がSELECT
ログインID 時刻
実行されたSELECT ステートメント