なにかと監査ログ取れってこと増えましたが、一度設定すると忘れちゃうので備忘録の意味も含めて残しておきます。
ここではDB2v11.5 luwをLinux上で実行した場合を元にしています。
- 目次 -
DB2監査ログって?
小難しいことはわからんのでざっくりになりますが、DBやインスタンスへのアクセス、テーブルなどのオブジェクトの変更などがあったらその履歴を残してくれます。
監査ログは
・インスタンス、データベース単位それぞれで設定する。
・インスタンス、データベースそれぞれでどういった情報を取得するか設定ができる。
・監査ログの取得開始・停止は一括になる。
てな感じの動作になります。
監査ログの設定の流れ
自分にはちょっと複雑だったので設定の流れをまとめます。
各手順の詳細は後述します。
- (共通)監査ログの出力先(アクティブ・アーカイブ)を変更
- (インスタンス監査設定)db2auditコマンドで取得するカテゴリを設定
- (データベース監査設定)監査ポリシーを作成
- (データベース監査設定)作成した監査ポリシーをタッチ
- (共通)監査ログの取得開始
書き出すとシンプルだなー。
設定方法
監査設定を変更するには、SYSADM権限が必要になります。
全ての操作はインスタンスで実行しているものとして参考にしてください。
(前提)記載例の構成
ここでは以下のインスタンス、データベースで実行しているものとして参考にしてください。
インスタンス名:db2inst1
データベース名:sample
(共通)監査ログの出力先(アクティブ・アーカイブ)を変更
db2auditコマンドでインスタンスの監査設定を変更します。
$ db2audit configure datapath <ActiveLogPath>
$ db2audit configure archivepath <ArchiveLogPath>
$ db2audit configure datapath <ActiveLogPath>
$ db2audit configure archivepath <ArchiveLogPath>
アクティブログ を /LOGS/DB/db2audit/active
アーカイブログ を /LOGS/DB/db2audit/archive
に出力させる場合は以下のようになります。
$ db2audit configure datapath /LOGS/DB/db2audit/active
$ db2audit configure archivepath /LOGS/DB/db2audit/archive
なお、このパスにはインスタンスユーザでの書き込み権限が必要となります。
$ ls -l /LOGS/DB/db2audit/
drwxr----- db2inst1 db2igrp 6 1月 01 2025 active
drwxr----- db2inst1 db2igrp 6 1月 01 2025 archive
(インスタンス監査設定)db2auditコマンドで取得するカテゴリを設定
db2auditコマンドでインスタンスの監査設定を変更します。
監査項目設定
各カテゴリー(CATEGORY)の状態(STATUS)を指定します。
db2audit configure scope <CATEGORY> status <STATUS>
CATEGORYに指定できる値は以下のものです
値 | 概要 |
---|---|
all | 以下の項目全て |
audit | 監査設定が変更または監査ログが変更された場合 |
checking | DBオブジェクト、関数に対してのアクセス許可検査された場合 |
context | データベース自体を操作された場合 |
objmaint | データオブジェクトの作成・削除がされた場合 |
secmaint | 特権、権限が変更された場合 |
sysadmin | SYSADM,SYSMAINT,SYSCTL権限を必要とする操作が実行された場合 |
validate | ユーザ認証、ユーザ関連セキュリティ情報が取得された場合 |
STATUSに指定する値は以下の4つです。
値 | 概要 |
---|---|
both | 成功、失敗どちらのイベントも取得 |
success | 成功したイベントのみ取得 |
failure | 失敗したイベントのみ取得 |
none | 取得しない |
上記をふまえて、監査ログの変更があったら全て取得する場合
・監査ログ設定に変更(audit)
・成功失敗にかかわらずログを取得する(both)
となります。
この場合は↓のようなコマンドになります。
db2audit configure scope audit status both
監査ログのエラー処理
監査ログの処理(書き込み等)でエラーがあった場合に動作を指定します。
db2audit configure errortype <PRAMETER>
PRAMETERに指定できる値は以下の2つです。
・AUDIT : 監査レコードの書き込みが失敗した場合、エラーを出力します。
・NORMAL : 監査レコードの書き込みが失敗してもエラーは無視されます。
(データベース監査設定)監査ポリシーを作成
データベースの監査を行う場合、まず監査ポリシーを生成します。
データベース単位の監査設定はdb2auditではなく、create audit policy でポリシーを作成します。
db2 "create audit policy <Policyname> categories <CATEGORY> status <STATUS>"
CATEGORYに指定できる値はインスタンスとほぼ同様ですが、データベースには「execute」の設定があります。
値 | 概要 |
---|---|
all | 以下の項目全て |
audit | 監査設定が変更または監査ログが変更された場合 |
checking | DBオブジェクト、関数に対してのアクセス許可検査された場合 |
context | データベース自体を操作された場合 |
execute | SQLの実行時 |
objmaint | データオブジェクトの作成・削除がされた場合 |
secmaint | 特権、権限が変更された場合 |
sysadmin | SYSADM,SYSMAINT,SYSCTL権限を必要とする操作が実行された場合 |
validate | ユーザ認証、ユーザ関連セキュリティ情報が取得された場合 |
STATUSはインスタンスの設定時と同様です。
値 | 概要 |
---|---|
both | 成功、失敗どちらのイベントも取得 |
success | 成功したイベントのみ取得 |
failure | 失敗したイベントのみ取得 |
none | 取得しない |
ERRORTYPEも同時に指定できます。値や内容はインスタンスの時と同様です。
・AUDIT : 監査レコードの書き込みが失敗した場合、エラーを出力します。
・NORMAL : 監査レコードの書き込みが失敗してもエラーは無視されます。
上記をふまえて、以下条件で監査ログを出力する設定をする場合
・ポリシー名は「ADTPOLICY_SMPLDB」
・監査ログ設定(audit)を成功・失敗問わず操作された場合(both)
・特権、権限(secmaint)を成功・失敗問わず操作された場合(both)
・それ以外は何も出力しない
・ERRORTYPE は NORMAL
と設定する場合。
データベース毎の設定のため、とりあえず対象のデータベースに接続
db2 connect to sample
その後、audit policy を作成。
db2 "create audit policy ADTPOLICY_SMPLDB categories audit status both, secmaint status both, checking status none, context status none, execute status none, objmaint status none, sysadmin status none, validate status none ERRORTYPE NORMAL"
※ createの場合、カテゴリーはカンマ(,)区切りで複数指定できます。
(データベース監査設定)作成した監査ポリシーをアタッチ
auditコマンドで作成したポリシーをデータベースにアタッチします。
db2 ”audit <TARGET> using policy <PolicyName>"
ここではデータベースを対象にしますが、ユーザーやロールなどにアタッチすることもできます。
TARGETに指定できるものは権限までにも及ぶので割愛します。
db2 ”audit DATBASE using policy ADTPOLICY_SMPLDB"
(共通)監査ログの取得開始
db2audit start
監査設定の確認
インスタンス設定
db2auditで設定した値を確認する場合、describeオプションで確認できます。
$ db2audit describe
Db2 監査設定:
監査がアクティブ: "TRUE "
監査イベントのログ: "BOTH"
チェック・イベントのログ: "NONE"
オブジェクト保守イベントのログ:"NONE"
セキュリティー保守イベントのログ:"BOTH"
システム管理者イベントのログ:"NONE"
妥当性検査イベントのログ:"NONE"
コンテキスト・イベントのログ:"NONE"
次の監査エラーでSQLCAを戻す:"FALSE"
監査データ・パス: "/LOGS/DB/db2audit/active"
監査アーカイブ・パス: "/LOGS/DB/db2audit/archive"
項目(日本語表記) | 項目(英語表記) | 設定パラメータ | デフォルト |
---|---|---|---|
監査がアクティブ | Audit active | start (TRUE) / stop(FALSE) | FALSE |
監査イベントのログ | Log audit events | audit の設定 | FAILURE |
チェック・イベント のログ | Log checking events | checking の設定 | FAILURE |
オブジェクト保守 イベントのログ | Log object maintenance events | objmaint の設定 | FAILURE |
セキュリティー保守 イベントのログ | Log security maintenance events | secmaint の設定 | FAILURE |
システム管理者 イベントのログ | Log system administrator events | sysadmin の設定 | FAILURE |
妥当性検査イベントのログ | Log validate events | validate の設定 | FAILURE |
コンテキスト・ イベントのログ | Log context events | context の設定 | NONE |
次の監査エラーで SQLCAを戻す | Return SQLCA on audit error | errortype の設定 AUDIT(TRULE) NORMAL(FALSE) | FALSE |
監査データ・パス | Audit Data Path | datapath の設定 | sqllib/security/auditdata |
監査アーカイブ・ パス | Audit Archive Path | archivepath の設定 | sqllib/security/auditdata |
監査設定まとめ
監査ログの運用に関わる操作もまとめようと思ったのですが、思いのほか長くなったので別でまとめます。
■db2auditコマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-db2audit-audit-facility-administrator-tool

コメント