Db2の監査機能とは?データベースレベル監査と監査ログの仕組みを解説

Db2

はじめに

Db2では、セキュリティや内部統制の観点から「誰が・いつ・何をしたか」を記録する監査機能が提供されています。

特に近年は、操作ログの取得だけでなく、

・特定ユーザーの操作を追跡したい
・SQL実行内容を詳細に記録したい
・監査対象を最小限に絞りたい

といった要件が増えており、柔軟な監査設計が求められます。

本記事では、Db2の監査機能の基本構造と、実務で重要となるデータベースレベル監査を中心に整理します。


Db2の監査機能の全体像

Db2の監査機能は、大きく以下の2種類に分かれます。

種類特徴
インスタンスレベル監査インスタンス全体を対象に監査
データベースレベル監査データベース単位で個別に監査

また、監査は「カテゴリー」という単位で取得内容を制御します。

主なカテゴリーは以下の通りです。

CATEGORY内容
AUDIT監査設定の変更
CHECKINGオブジェクトアクセスの検査
OBJMAINTオブジェクト作成・削除
SECMAINT権限変更
SYSADMIN管理者操作
VALIDATE認証・セキュリティ情報
CONTEXT実行コンテキスト
EXECUTESQL実行(DBレベルのみ)

用途に応じて、必要なカテゴリーだけを選択して監査します。


データベースレベル監査の特徴

データベースレベル監査は、実務で最も利用される監査方式です。

インスタンスレベル監査との違いは以下の通りです。

観点インスタンスレベルデータベースレベル
管理単位インスタンス単位DB単位
ログ出力1つのログに集約DBごとに分離
監査対象全DBが対象対象を限定可能
柔軟性低い高い

データベースレベル監査の最大の特徴は、

・特定テーブル
・特定ユーザー
・特定権限

といった単位で監査対象を絞り込める点です。

これにより、不要なログ出力を抑えながら、必要な情報だけを取得できます。


監査ポリシーと監査の設定の流れ

データベースレベル監査は、以下の流れで設定します。

手順内容
1監査ポリシー作成(CREATE AUDIT POLICY)
2対象へ適用(AUDITコマンド)
3ログ取得
4アーカイブ
5抽出・解析

具体的なポイントは以下です。

・ポリシーで「何を監査するか」を定義
・AUDITコマンドで「どこに適用するか」を指定
・ログはバッファに書き込まれた後、ファイルへ出力

さらに、ログは以下の流れで処理されます。

フェーズ説明
ACTIVE現在書き込み中の監査ログ
ARCHIVEアーカイブされたログ
EXTRACT解析用に抽出

この仕組みにより、監査ログを効率的に管理できます。


EXECUTEカテゴリーの役割と活用

EXECUTEカテゴリーは、SQL実行の監査に特化した重要な機能です。

従来はCONTEXTカテゴリーで対応していましたが、より詳細な情報取得が可能になっています。

主な特徴は以下の通りです。

項目内容
対象SQLステートメントの実行
対応SQL動的SQL・静的SQLの両方
取得情報SQLテキスト、実行情報など

さらに、WITH DATAオプションを使用すると、以下の情報も取得できます。

・入力パラメータ
・ホスト変数の値
・データ型や長さ

これにより、

「どのSQLが、どの値で実行されたか」

まで追跡可能になります。

なお、大容量データ(LOB、XMLなど)は対象外となる点に注意が必要です。


監査設計の注意点(実務で重要なポイント)

監査機能は強力ですが、設計を誤ると「ログ過多」「性能劣化」「運用負荷増大」につながります。
ここでは実務で特に重要なポイントを整理します。

ユーザ種別で監査方針を分ける

Db2にアクセスするユーザは、大きく以下の2種類に分けて考えます。

ユーザ種別用途監査の考え方
運用ユーザ人が直接操作詳細監査(操作ログ含む)
システムユーザバッチ・アプリ・監視最小限(認証中心)

このように分けることで、

・人の操作は詳細に追跡
・システム処理は必要最小限

というバランスの良い監査設計が可能になります。

すべてのユーザを同じ粒度で監査すると、ログ量が爆発的に増えるため注意が必要です。


EXECUTE + WITH DATAは慎重に使う

EXECUTEカテゴリーにWITH DATAオプションを付けると、

・SQLの実行内容
・入力パラメータ
・実際のデータ値

まで取得できます。

一見便利ですが、大量データ処理と組み合わせると問題になります。

例えば、

・バッチで大量INSERT
・一括更新処理
・データ移行

を実行した場合、そのデータがすべて監査ログに出力されます。

結果として、

・監査ログの肥大化
・ディスク圧迫
・性能低下

が発生します。

そのため、実務では以下の対応が有効です。

・大量処理前にWITH DATAを無効化(監査設定削除)
・監査対象外のユーザで処理を実施

用途に応じて使い分けることが重要です。


監査ログの肥大化とアーカイブ処理に注意

監査ログは1つのバイナリファイルに出力されるため、サイズが大きくなりやすい特徴があります。

特に注意すべきなのは、ログが数GB規模になった場合です。

この状態でアーカイブを実行すると、

・archive処理が長時間ブロックされる
・数時間応答が返らない

といった事象が発生することがあります。

このようなケースでは、

・不要な監査ログは事前に削除する
・ログを肥大化させない設計にする

といった対策が有効です。

監査は「取得すること」だけでなく、「管理すること」まで含めて設計する必要があります。


まとめ

Db2の監査機能は、柔軟かつ強力なログ取得機能です。

・インスタンスとDBレベルで監査方式が異なる
・データベースレベル監査は柔軟性が高い
・監査ポリシーで細かく制御できる
・EXECUTEカテゴリーでSQL実行を詳細に追跡可能

特に実務では、

「必要な対象だけを監査する設計」

が重要になります。

具体的なコマンドや監査ログの見方については、IBMの公式資料「Db2 for LUW セキュリティ・ガイド 監査編」を参考にしてください。

【SIL】【IM】Db2 for LUW セキュリティガイド
当資料は、DB2 for LUWで 提供されているセキュリティ機能についてまとめたものです。

コメント

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