RDSでOracleの監査証跡機能を使う方法&注意点

監査証跡レコード削除 データベース

RDSで監査証跡機能を使うための設定

AWSのコンソール画面でRDSのパラメータグループのaudit_trailの設定値を変更する。
audit_trailのデフォルトの値が設定されてないため、仕様により変更できます。

RDSパラメータ

DBの場合、データベース・レコードはAUD$表に書き込まれます。
OSの場合、監査レコードはオペレーティング・システム・ファイルに書き込まれます。
XMLの場合、監査レコードはオペレーティング・システム・ファイルにXML形式で書き込まれます。

今回はaudit_trailの値をDBに変更し、以下のようになりました。

oracle-parameter-変更後

監査証跡レコードを削除する機能の初期化

監査証跡のパラメータの事前確認

audit_trailの設定値は事前に設定した値(DB)となっているか、事前に確認します。
以下のような結果が出たら、監査証跡の機能は正常に有効化になった。

監査証跡機能パラメータ

監査証跡機能の初期化

①DBMS_AUDIT_MGMTパッケージのINIT_CLEANUPプロシージャを使って、監査管理インフラストラクチャを設定し、監査証跡レコードのデフォルトのクリーンアップ間隔を設定します。
監査証跡表がSYSTEM表領域にある場合、プロシージャによってSYSAUX表領域に移動されます。
例)
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の定数の説明は以下のようです。

定数名 説明
AUDIT_TRAIL_ALL すべての監査証跡タイプ。これには、標準データベース監査証跡(SYS.AUD$およびSYS.FGA_LOG$表)、オペレーティング・システム(OS)監査証跡およびXML監査証跡が含まれます。
AUDIT_TRAIL_AUD_STD SYS.AUD$表の標準データベース監査証跡レコード。
AUDIT_TRAIL_DB_STD 標準監査(SYS.AUD$)およびFGA監査(SYS.FGA_LOG$)レコードの両方。
AUDIT_TRAIL_FGA_STD SYS.FGA_LOG$表の標準データベース・ファイングレイン監査(FGA)レコード。
AUDIT_TRAIL_FILES オペレーティング・システム(OS)監査証跡およびXML監査証跡の両方。
AUDIT_TRAIL_OS オペレーティング・システム監査証跡。オペレーティング・システム・ファイルに格納された監査レコードを参照します。
AUDIT_TRAIL_XML XML監査証跡。XMLファイルに格納された監査レコードを参照します。

②DBMS_AUDIT_MGMTパッケージのINIT_CLEANUPプロシージャを実行したら、以下のエラーが出ると思います。
ORA-02002: error while writing to audit trail
ORA-00060: deadlock detected while waiting for resource
ORA-02002: error while writing to audit trail
ORA-00060: deadlock detected while waiting for resource
ORA-06512: at “SYS.DBMS_AUDIT_MGMT”, line 2333
ORA-06512: at “SYS.DBMS_AUDIT_MGMT”, line 617
ORA-06512: at line 2

エラー対応:

audit_trailの設定値はNONEに戻し、RDSを再起動してから、監査証跡の初期化を実行します。
監査証跡の初期化が完了したら、設定値をDBに変更する。

監査証跡を削除するレコードのアーカイブの設定

DBMS_AUDIT_MGMTパッケージのSET_LAST_ARCHIVE_TIMESTAMPプロシージャを使って、削除したい監査証跡のデータの日付を指定することができます。
last_archive_timeパラメーターには、アーカイブ済(不要)となった時刻を協定世界時(UTC)で指定します。
ローカル時刻からUTCに変換するにはSYS_EXTRACT_UTC関数が便利です。
例えば、30日以上古い標準監査データ(テーブル指定)が不要である場合、以下のように実行します。
SQL>
BEGIN
    DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
        audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
        last_archive_time => SYS_EXTRACT_UTC (CURRENT_TIMESTAMP – INTERVAL ‘30‘ DAY)
    );
END;
/

監査証跡レコードを削除するの試し

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_DB_STD,
        use_last_arch_timestamp => TRUE
    );
END;
/

おすすめ本

ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)
タイトルとURLをコピーしました