【DB2】監査ログの設定・状態の確認

※アフィリエイト広告を利用しています
※アフィリエイト広告を利用しています

なにかと監査ログ取れってこと増えましたが、一度設定すると忘れちゃうので備忘録の意味も含めて残しておきます。

ここではDB2v11.5 luwをLinux上で実行した場合を元にしています。

DB2監査ログって?

小難しいことはわからんのでざっくりになりますが、DBやインスタンスへのアクセス、テーブルなどのオブジェクトの変更などがあったらその履歴を残してくれます。

監査ログは
・インスタンス、データベース単位それぞれで設定する。
・インスタンス、データベースそれぞれでどういった情報を取得するか設定ができる。
・監査ログの取得開始・停止は一括になる。
てな感じの動作になります。

監査ログの設定の流れ

自分にはちょっと複雑だったので設定の流れをまとめます。
各手順の詳細は後述します。

  1. (共通)監査ログの出力先(アクティブ・アーカイブ)を変更
  2. (インスタンス監査設定)db2auditコマンドで取得するカテゴリを設定
  3. (データベース監査設定)監査ポリシーを作成
  4. (データベース監査設定)作成した監査ポリシーをタッチ
  5. (共通)監査ログの取得開始

書き出すとシンプルだなー。

設定方法

監査設定を変更するには、SYSADM権限が必要になります。
全ての操作はインスタンスで実行しているものとして参考にしてください。

(前提)記載例の構成

ここでは以下のインスタンス、データベースで実行しているものとして参考にしてください。

 インスタンス名:db2inst1
 データベース名:sample

(共通)監査ログの出力先(アクティブ・アーカイブ)を変更

db2auditコマンドでインスタンスの監査設定を変更します。

アクティブログ を /LOGS/DB/db2audit/active
アーカイブログ を /LOGS/DB/db2audit/archive
に出力させる場合は以下のようになります。

なお、このパスにはインスタンスユーザでの書き込み権限が必要となります。

(インスタンス監査設定)db2auditコマンドで取得するカテゴリを設定

db2auditコマンドでインスタンスの監査設定を変更します。

監査項目設定

各カテゴリー(CATEGORY)の状態(STATUS)を指定します。

CATEGORYに指定できる値は以下のものです

概要
all以下の項目全て
audit監査設定が変更または監査ログが変更された場合
checkingDBオブジェクト、関数に対してのアクセス許可検査された場合
contextデータベース自体を操作された場合
objmaintデータオブジェクトの作成・削除がされた場合
secmaint特権、権限が変更された場合
sysadminSYSADM,SYSMAINT,SYSCTL権限を必要とする操作が実行された場合
validateユーザ認証、ユーザ関連セキュリティ情報が取得された場合

STATUSに指定する値は以下の4つです。

概要
both成功、失敗どちらのイベントも取得
success成功したイベントのみ取得
failure失敗したイベントのみ取得
none取得しない

上記をふまえて、監査ログの変更があったら全て取得する場合
・監査ログ設定に変更(audit)
・成功失敗にかかわらずログを取得する(both)
となります。
この場合は↓のようなコマンドになります。

監査ログのエラー処理

監査ログの処理(書き込み等)でエラーがあった場合に動作を指定します。

PRAMETERに指定できる値は以下の2つです。

 ・AUDIT  : 監査レコードの書き込みが失敗した場合、エラーを出力します。
 ・NORMAL : 監査レコードの書き込みが失敗してもエラーは無視されます。

(データベース監査設定)監査ポリシーを作成

データベースの監査を行う場合、まず監査ポリシーを生成します。
データベース単位の監査設定はdb2auditではなく、create audit policy でポリシーを作成します。

CATEGORYに指定できる値はインスタンスとほぼ同様ですが、データベースには「execute」の設定があります。

概要
all以下の項目全て
audit監査設定が変更または監査ログが変更された場合
checkingDBオブジェクト、関数に対してのアクセス許可検査された場合
contextデータベース自体を操作された場合
executeSQLの実行時
objmaintデータオブジェクトの作成・削除がされた場合
secmaint特権、権限が変更された場合
sysadminSYSADM,SYSMAINT,SYSCTL権限を必要とする操作が実行された場合
validateユーザ認証、ユーザ関連セキュリティ情報が取得された場合

STATUSはインスタンスの設定時と同様です。

概要
both成功、失敗どちらのイベントも取得
success成功したイベントのみ取得
failure失敗したイベントのみ取得
none取得しない

ERRORTYPEも同時に指定できます。値や内容はインスタンスの時と同様です。

 ・AUDIT  : 監査レコードの書き込みが失敗した場合、エラーを出力します。
 ・NORMAL : 監査レコードの書き込みが失敗してもエラーは無視されます。

上記をふまえて、以下条件で監査ログを出力する設定をする場合
・ポリシー名は「ADTPOLICY_SMPLDB」
・監査ログ設定(audit)を成功・失敗問わず操作された場合(both)
・特権、権限(secmaint)を成功・失敗問わず操作された場合(both)
・それ以外は何も出力しない
・ERRORTYPE は NORMAL
と設定する場合。

データベース毎の設定のため、とりあえず対象のデータベースに接続

その後、audit policy を作成。

※ createの場合、カテゴリーはカンマ(,)区切りで複数指定できます。

(データベース監査設定)作成した監査ポリシーをアタッチ

auditコマンドで作成したポリシーをデータベースにアタッチします。

ここではデータベースを対象にしますが、ユーザーやロールなどにアタッチすることもできます。
TARGETに指定できるものは権限までにも及ぶので割愛します。

(共通)監査ログの取得開始

監査設定の確認

インスタンス設定

db2auditで設定した値を確認する場合、describeオプションで確認できます。

項目(日本語表記)項目(英語表記)設定パラメータデフォルト
監査がアクティブAudit activestart (TRUE) / stop(FALSE)FALSE
監査イベントのログLog audit eventsaudit の設定FAILURE
チェック・イベント
のログ
Log checking eventschecking の設定FAILURE
オブジェクト保守
イベントのログ
Log object
maintenance events
objmaint の設定FAILURE
セキュリティー保守
イベントのログ
Log security maintenance eventssecmaint の設定FAILURE
システム管理者
イベントのログ
Log system administrator eventssysadmin の設定FAILURE
妥当性検査イベントのログLog validate eventsvalidate の設定FAILURE
コンテキスト・
イベントのログ
Log context eventscontext の設定NONE
次の監査エラーで
SQLCAを戻す
Return SQLCA on
audit error
errortype の設定
AUDIT(TRULE)
NORMAL(FALSE)
FALSE
監査データ・パスAudit Data Pathdatapath の設定sqllib/security/auditdata
監査アーカイブ・
パス
Audit Archive Patharchivepath の設定sqllib/security/auditdata

監査設定まとめ

監査ログの運用に関わる操作もまとめようと思ったのですが、思いのほか長くなったので別でまとめます。


■db2auditコマンド
https://www.ibm.com/docs/ja/db2/11.5?topic=commands-db2audit-audit-facility-administrator-tool


コメント

タイトルとURLをコピーしました