データベースの監査

オラクルによる監査

オラクルには、実行されたアクションを、OSの監査証跡、もしくはSYSTEM表領域のデータディクショナリ内にある監査用テーブルSYS.AUD$に書き込む機能がある。

監査の適用準備・適用終了

初期化パラメータの設定

データベースを監査可能な状態にするには、パラメータ・ファイル内のAUDIT_TRAIL初期化パラメータを変更して再起動する必要がある(これが設定されていない場合、監査ステータスは変更できるが実際の監査証跡の作成は行われない)。

NONE
監査処理を無効にする(デフォルト)
DB
監査処理を有効にし、結果をテーブルSYS.AUD$に書き込む
OS
監査処理を有効にし、結果をOSの監査機能に引き渡す。

監査証跡表の設定

SYS.AUD$表を利用する場合には、SYSとしてCATAUDIT.SQLスクリプトを実行し、以下の監査ビューを作成する。

監査の記録を消去する場合には、SYSとしてCATNOAUD.SQLスクリプトを実行し、上の監査ビューを削除する。

また、監査証跡表はサイズが限られている(デフォルトは99エクステント×10KB)ので、定期的にデータを保存(EXPORTするか、他の表に移すか)して、TRUNCATEで表をクリアする必要がある。

監査内容の定義

AUDIT/NOAUDIT文の発行によって監査オプションを設定する。設定されたオプションは、その後にログオンしたセッションについて適用される。

注意点

監査オプションの設定状況にはかかわりなく、「インスタンスの起動・停止」「管理者権限でのデータベースへの接続」は監査履歴に残される(OS証跡が使用できない場合にはトレースファイルと同じディレクトリにあるファイルに保存)。また、値の変化は監査できないため、それが必要な場合にはデータベース・トリガを利用して個々に保存を行う。

監査の内容

保存される情報

以下に示す情報は、意味がある場合には常に監査証跡レコードに保存される。

対象となる操作

監査オプションは、次の3つのレベルで定義できる。

SQL文のタイプ(TRUNCATE TABLE, CONNECT)などに基づいて監査を行う。SESSIONのみは特別な追加情報が記録される。
権限
特定のシステム権限の使用を監査する
オブジェクト
特定のオブジェクトに関する特定の文を監査する

AUDITコマンド文法

文監査・権限監査

監査を有効にするコマンドは以下のとおり。

AUDIT [文 or 権限]
      (BY [ユーザ])
      (WHENEVER SUCCCESSFUL | WHENEVER NOT SUCCCESSFUL)
      (BY SESSION | BY ACCESS)

BY SESSIONオプションを指定すると操作はセッションごとに記録され、BY ACCESSオプションを指定するとアクセスごとに記録される。

監査を無効にするコマンドは以下のとおり。

NOAUDIT [文 or 権限]
      (BY [ユーザ])

文監査・権限監査は、AUDIT ANYシステム権限を持つもののみが有効・無効を設定できる。

オブジェクト監査

監査を有効にするコマンドは以下のとおり。

AUDIT [オプション] ON [オブジェクト]
      (WHENEVER SUCCCESSFUL | WHENEVER NOT SUCCCESSFUL)
      (BY SESSION | BY ACCESS)

監査を無効にするコマンドは以下のとおり。

NOAUDIT [オプション] ON [オブジェクト]
      (BY [ユーザ])

オブジェクト監査は、オブジェクトの所有者、もしくはAUDIT ANYシステム権限を持つもののみが有効・無効を設定できる。

監査証跡ビューの参照

監査証跡ビューは以下のような情報を返す。

SELECT * FROM sys.dba_stmt_audit_opts;
設定されている文監査オプションをすべて表示する。
SELECT * FROM sys.dba_priv_audit_opts;
設定されている権限監査オプションをすべて表示する。
SELECT * FROM sys.dba_obj_audit_opts;
設定されているオブジェクト監査オプションをすべて表示する。
SELECT username, obj_name, action_name, ses_actions
FROM sys.dba_audit_object;
システムの全てのオブジェクトに対する監査レコードを表示する。
SELECT * FROM sys.dba_audit_session;
AUDIT SESSION 文監査オプションで生成されたレコードを表示する(デッドロックや読み書きの量も表示される。)