監査データの保存先
監査はデータベースに対する操作を記録する機能です。Oracle Databaseはバージョンを重ねるに従い、様々な監査機能が追加されました。
Oracle Database 12cには以下の機能が提供されています。
-
標準監査
- AUDIT文で監査設定を行います。監査データはOSのファイルまたはSYS.AUD$テーブルに保存されます。ファイルまたはテーブルに保存する設定は、初期化パラメーターaudit_trailで決定されます。監査データの出力先は、初期化パラメーターaudit_file_destでフォルダを指定します。
-
ファイングレイン監査
- 監査設定をより柔軟に設定できます。列単位やレコード単位に監査設定を変更できます。監査データはSYS.FGA_LOG$テーブルに保存されます。
-
SYSユーザー監査
- SYSユーザーが実行した操作を記録します。監査データはOSのファイルに保存されます。 監査データの出力先は、初期化パラメーターaudit_file_destでフォルダを指定します。
-
統合監査(UNIFIED AUDITING)
- すべての監査設定を統合する機能です。Oracle Database 12cではこれまでの監査機能と統合監査機能が両方とも有効になっています。 監査データの出力先は、SYSAUD.CLI_SWP%テーブルです。
監査データの削除機能
監査データの管理を行うパッケージとして、DBMS_AUDIT_MGMTパッケージが提供されています。以下に監査データの削除を行うための手順を示します。DBMS_AUDIT_MGMTパッケージにより、テーブルに保存された監査データだけでなく、ファイルとして保存された監査データの削除も行うことができて便利です。
マニュアル https://docs.oracle.com/cd/E82638_01/ARPLS/DBMS_AUDIT_MGMT.htm
初期化
DBMS_AUDIT_MGMTパッケージのINIT_CLEANUPプロシージャを実行します。パラメーターには、初期化を行う対象とデフォルトの保存日数(最大999)を指定します。
監査対象には以下の定数を使います。
定数名 | 説明 |
---|---|
AUDIT_TRAIL_ALL | すべての監査証跡タイプ |
AUDIT_TRAIL_AUD_STD | 標準監査のデータベース設定 |
AUDIT_TRAIL_DB_STD | 標準監査、ファイングレイン監査のデータベース設定 |
AUDIT_TRAIL_FGA_STD | ファイングレイン監査のデータベース設定 |
AUDIT_TRAIL_FILES | OS設定またはXML設定 |
AUDIT_TRAIL_OS | OS設定 |
AUDIT_TRAIL_UNIFIED | 統合監査 |
AUDIT_TRAIL_XML | XML設定 |
例えば、標準監査とファイングレイン監査の設定を初期化し、デフォルト保存日数を最大の999に指定する場合は以下のSQLを実行します。このプロシージャには定数AUDIT_TRAIL_UNIFIEDは使えないようです。
SQL> BEGIN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
default_cleanup_interval => 999) ;
END;
/
アーカイブ日付の設定
DBMS_AUDIT_MGMTパッケージのSET_LAST_ARCHIVE_TIMESTAMPプロシージャを使って不要になった監査データの日付を指定することができます。last_archive_timeパラメーターには、アーカイブ済(不要)となった時刻を協定世界時(UTC)で指定します。ローカル時刻からUTCに変換するにはSYS_EXTRACT_UTC関数が便利です。
例えば、60日以上古い標準監査データ(テーブル指定)が不要である場合、以下のように実行します。
SQL> BEGIN
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
last_archive_time => SYS_EXTRACT_UTC (CURRENT_TIMESTAMP - INTERVAL '60' DAY)
) ;
END;
/
マニュアルには記載がありませんが、このプロシージャには、複数のタイプを示す定数AUDIT_TRAIL_DB_STD, AUDIT_TRAIL_ALL, AUDIT_TRAIL_FILESは指定できません。
各タイプに対して個別に時刻を指定する必要があります。このプロシージャを実行しても古い監査データが自動的に削除されるわけではありません。
監査データの削除
DBMS_AUDIT_MGMTパッケージのCLEAN_AUDIT_TRAILプロシージャを使って不要になった監査データを削除できます。
use_last_arch_timestampパラメーター(デフォルト TRUE)は、SET_LAST_ARCHIVE_TIMESTAMPパッケージで設定した時刻以前の監査データを削除する設定です。
FALSEに指定すると、全監査データを削除します。
SQL> BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
use_last_arch_timestamp => TRUE
);
END;
/
このプロシージャは複数のタイプをしめす定数AUDIT_TRAIL_DB_STD, AUDIT_TRAIL_ALL, AUDIT_TRAIL_FILESを指定することができます。