□DB2AUDIT (V9.5)


V9.5でDB2AUDIT機能が大幅に変更されているので、調査してみました。
※IBMから各種資料が公表されているので詳細はこちらを見るのがよいでしょう。

単純に監査情報をとってみることにフォーカスして以下まとめました。

V9.5からは、インスタンス単位、データベース単位の2つの切り口で監査設定
ができるようになりました。9.1までは、ほぼインスタンス単位だったと見て
よいと思います。

1. あるDBユーザーの操作のログを採取する

 1) SECADM権限の付与されたユーザーでログイン

 db2 connect to sample <SECADM権限のあるユーザー>

 2) AUDIT POLICYを作成

db2 create audit policy <AUDIT POLICY名> categories execute status both error type normal

 以下のシステムビューで確認できる。

db2 "select auditpolicyname,executestatus from syscat.auditpolicies"

 3) 2)で作成したAUDIT POLICYに監査ログ設定を関連付ける。

db2 audit user <ユーザー名> using policy <AUDIT POLICY名>

 以下のシステムビューでの確認できる

db2 "select * from syscat.audituse"

2. あるテーブルに対する操作のログを採取する

 1) SECADM権限の付与されたユーザーでログイン

db2 connect to sample <SECADM権限のあるユーザー>

 2) AUDIT POLICYを作成

db2 create audit policy <AUDIT POLICY名> categories execute status both error type normal

 以下のシステムビューで確認できる。

db2 "select auditpolicyname,executestatus from syscat.auditpolicies"

 3) 2)で作成したAUDIT POLICYに監査ログ設定を関連付ける。

db2 audit table <テーブル名> using policy <AUDIT POLICY名>
 ※テーブル名について、別名、ビュー名などはセットできない。

 以下のシステムビューで確認できる

db2 "select * from syscat.audituse"

 ここまでで、設定できているので、該当の操作が行われると実行内容を取り出すことができる。

3. 監査の開始終了

 1) 監査開始

db2audit start

 2) 監査停止

db2audit stop

 ※start から stopの間のログがバッファーに蓄積される。
 ※V9.1までと同様、バッファーサイズを0以上十分に確保しておくことでDB2へ与えるパフォーマンスを軽減できる。

4. 監査ログの取り出し方法(一般ファイル)
 V9.1までと異なる点として、主にarchiveという操作が加わった点と
 prune(切り離し)が無くなった。extractの前にarchiveが行われて
 一旦アーカイブファイル(バイナリー)が抽出できている必要がある。

 1) ARCHIVEを行う。

  (インスタンス単位)
db2audit archive

ノード   AUD      アーカイブされたまたは一時的なログ・ファイル
         メッセージ
-------- -------- ---------------------------------------------------
       0 AUD0000I db2audit.instance.log.0.20081212142760

AUD0000I  操作が成功しました。 

 (データベース単位)
db2audit archive database <データベース名>


 出力されたファイル名で、ファイルが保存される。
 デフォルトでは以下となるが、変更は可能

<インスタンスディレクトリ>\security\auditdata
     
 2) EXTRACTを行う。

db2audit extract file <出力ファイル名> from files <アーカイブファイル名>
 ※ファイル名だけ指定すると上記のパス以下に指定ファイルが無いかサーチしてくれる。
 ※以前は存在するファイルへの出力しようとした場合はエラーとなったと思うが、V9.5では追記される。
 ※ワイルドカードでまとめて出力することが可能

  • SECADM権限はインスタンスユーザーには付与されておらず、SYSADM権限にも含まれません。
SYSADM権限を持つユーザーから以下の様にして付与することができます。

db2 grant secadm on database to user  <ユーザー名>                                             
                                   

(余談1)

監査設定が何も無い状態でも、db2audit startとするとdb2stop/db2startなど
の動作のログは保存される。

db2audit configure reset
db2audit stop
db2audit start
※syscat.auditpoliciesにも設定なし


>db2audit describe
DB2 監査設定:
 
監査がアクティブ: "TRUE " 
監査イベントのログ: "FAILURE"
チェック・イベントのログ: "FAILURE" 
オブジェクト保守イベントのログ: "FAILURE"
セキュリティー保守イベントのログ: "FAILURE"
システム管理者イベントのログ: "FAILURE"
妥当性検査イベントのログ: "FAILURE"
コンテキスト・イベントのログ: "NONE"
監査エラーで SQLCA を戻す: "FALSE "
監査データ・パス: ""
監査アーカイブ・パス: ""

AUD0000I  操作が成功しました。


(余談2)


インスタンス単位とデータベース単位の住み分けとして、微妙な
ところがあり、以下の設定を行うと、コネクション(CONNECT)関係
の監査ログが蓄積される。(EXECUTEなどは蓄積しない。)

db2audit configure scope context status both
db2audit archive database sample
                                                    

(余談3)

AUDIT POLICY名を指定できるが今のところ分けたものどう利用する
かについては、ALTER AUDIT POLICYで行うと推測される。
 監査設定済みのものを一旦無効にしたい場合、status noneに変更
 することで達成できるのではないか?

例)テーブルへの監査を停止

db2 audit table employee remove policy

※もともとAUDIT POLICYの何れかに関連付けられているが、自動的に
 特にこれを指定する必要もなく、成功すると解除される。
 syscat.audituseビューにて確認できる。

また、AUDIT POLICYの削除は以下のとなるが、関連付けされている
監査設定があると失敗する。

db2 drop audit policy <AUDIT POLICY名>
最終更新:2008年12月12日 15:38