LoginSignup
7
8

More than 3 years have passed since last update.

監査レコードの削除機能を試す (Oracle Database 12.2)

Last updated at Posted at 2018-03-12

監査データの保存先

監査はデータベースに対する操作を記録する機能です。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を指定することができます。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8