Db2 監査機能の紹介
機密データへのアクセスを管理するためには、さまざまな認証およびアクセス制御メカニズムを使用して、規則を確立し、受け入れ可能なデータ・アクセスを制御することができます。 しかし、認識されていない動作や受け入れることのできない動作からデータを保護したり、そのような動作を発見したりするためには、Db2 監査機能を使用してデータ・アクセスをモニターできます。
不適切なデータ・アクセスを正常にモニターして分析することにより、 データ・アクセスの制御を改善し、 データへの悪意のあるまたは不注意な無許可アクセスを最終的に防止することができます。 システム管理処置を含む、アプリケーションおよび個々のユーザー・アクセスのモニターは、 データベース・システムのアクティビティーの履歴レコードを提供します。
Db2 監査機能は、事前に定義したデータベースのイベントに対して監査証跡を生成し、かつその監査証跡を保存できるようにします。 この機能により生成されたレコードは、監査ログ・ファイルに保持されます。 これらのレコードを分析することで、使用パターンが明らかになり、 システム誤用を識別することができます。 そのようなシステム誤用を識別した場合、それを制限または除去できます。
監査機能は、インスタンス・レベルと個々のデータベース・レベルの両方で監査を行い、すべてのインスタンス・レベルおよびデータベース・レベルのアクティビティーを、それぞれ別々のログに分けて記録する能力を備えています。 システム管理者 (SYSADM 権限を保持するユーザー) は、db2audit ツールを使用して、インスタンス・レベルで監査を構成したり、いつそのような監査情報を収集するかを制御したりすることができます。 db2audit ツールでは、システム管理者がインスタンス監査ログとデータベース監査ログの両方をアーカイブできるほか、アーカイブされているいずれかのタイプのログから監査データを抽出することもできます。
- SYSPROC.AUDIT_ARCHIVE ストアード・プロシージャーは、監査ログをアーカイブします。
- SYSPROC.AUDIT_LIST_LOGS 表関数を使用すると、関心のあるログの場所を特定できます。
- SYSPROC.AUDIT_DELIM_EXTRACT ストアード・プロシージャーは、分析を行うためにデータを区切り文字で区切られているファイルに取り出します。
パーティション・データベース環境において作動しているとき、 ユーザーが接続しているデータベース・パーティション (コーディネーター・パーティション)、 またはカタログ・パーティション (同じデータベース・パーティションではない場合) で、 多数の監査可能なイベントが発生します。 つまり、監査レコードが複数のデータベース・パーティションによって生成される可能性があります。 それぞれの監査レコードの中には、コーディネーター・パーティションと起点パーティション (監査レコードの起点となっているパーティション) を識別する情報が含まれています。
インスタンス・レベルでは、監査機能は、db2audit start および db2audit stop コマンドを使用することによって明示的に停止および開始する必要があります。 インスタンス・レベルの監査を開始する際、監査機能は既存の監査構成情報を使用します。 監査機能は Db2 データベース・サーバーとは独立した機能なので、インスタンスが停止した場合でもアクティブのままです。 実際、インスタンスが停止されるとき、 監査レコードが監査ログに生成される可能性があります。 データベース・レベルで監査を開始するには、最初に監査ポリシーを作成し、その監査ポリシーをモニター対象のオブジェクト (許可 ID、データベース権限、トラステッド・コンテキスト、または特定の表など) と関連付ける必要があります。
監査レコードの区分
生成される監査レコードにはさまざまな区分があります。 監査するために使用可能なイベントの区分に関する以下の記述では、各区分の名前に続いて、区分タイプの識別に使用される 1 つの単語のキーワードがあることに注意してください。 監査のために使用可能なイベントの区分は次のようになります。
- 監査 (AUDIT)。 監査設定が変更されるとき、または監査ログがアクセスされるときにレコードを生成する。
- 許可検査 (CHECKING)。 Db2 データベース・オブジェクトまたは関数にアクセスしたり、それらを操作したりする試みに関する許可検査中に、レコードが生成されます。
- オブジェクト保守 (OBJMAINT)。 データ・オブジェクトを作成またはドロップするとき、および特定のオブジェクトに変更を加えるときにレコードを生成する。
- セキュリティー保守 (SECMAINT)。 以下の場合にレコードを生成する。
- オブジェクト特権やデータベース権限を付与または取り消すとき
- セキュリティー・ラベルや免除を付与または取り消すとき
- LBAC セキュリティー・ポリシーのグループ許可、ロール許可、あるいはオーバーライドまたは制限属性を変更するとき
- SETSESSIONUSER 特権を付与または取り消すとき
- SYSADM_GROUP、SYSCTRL_GROUP、SYSMAINT_GROUP、または SYSMON_GROUP 構成パラメーターのいずれかに変更を加えるとき
- システム管理 (SYSADMIN)。 SYSADM、SYSMAINT、または SYSCTRL 権限を必要とする操作が実行されるとき、 レコードを生成する。
- ユーザー妥当性検査 (VALIDATE)。 ユーザーを認証しているとき、 またはシステムのセキュリティー情報を検索しているときにレコードを生成する。
- 操作コンテキスト (CONTEXT)。 データベースの操作が実行されるとき、操作コンテキストを表示するレコードを生成する。 この区分を使用すると、監査ログ・ファイルのより良い変換処理を可能にします。 ログのイベント相関関係子フィールドを同時に使用することで、
イベントのグループを 1 つのデータベース操作に戻って関連付けることができます。 例えば、動的照会の照会ステートメント、静的照会のパッケージ ID、
つまり CONNECT のような実行されている操作タイプのインディケーターは、
監査結果を分析しているときに必要なコンテキストを提供できます。注: 操作コンテキストを提供する SQL または XQuery ステートメントは非常に長くなる可能性があり、CONTEXT レコード内に完全に表示されます。 このため、CONTEXT レコードが非常に大きくなる可能性があります。
- 実行 (EXECUTE)。 SQL ステートメントの実行中にレコードを生成する。
上記でリストされた区分のいずれにおいても、失敗、成功、またはその両方を監査できます。
データベース・サーバーに対して何らかの操作が行われる場合、いくつかのレコードが生成されることがあります。 監査ログに生成されるレコードの実際の数は、監査機能構成により指定された、記録されるイベントの区分の数によって決定されます。 さらに、成功、失敗、またはその両方を監査するかどうかによっても異なります。 このため、監査対象のイベントの選択は重要です。