• 検索結果がありません。

3. サービス・インスタンスの運用管理

3.8 データベース監査証跡の退避と削除

データベースの監査設定は下表の通りです。

監査種別 有効になっている監査設定 監査証跡レコードの確認ビュー データベースのバージョン 11g 12c/18c 標準監査 システム監査 CREATE SESSION DBA_AUDIT_TRAIL ○ ○

権限監査 CREATE SESSION セッション監査 有効

オブジェクト監査 以下のユーザーのオブジェクト DVF ユーザー

DVSYS ユーザー LBACSYS ユーザー 統合監査 ORA_SECURECONFIG ポリシー

ORA_LOGON_FAILURES ポリシー

UNIFIED_AUDIT_TRAIL ○

監査証跡はデータベースに蓄積し続けます。利用者の運用に合わせて定期的に退避、削除してください。

監査証跡の退避、削除には DBMS_AUDIT_MGMT パッケージを使用します。本章では以下の退避、削除手順を説明します。

(1)一定期間経過した監査証跡レコードを別表にコピー (2)一定期間経過した監査証跡レコードの削除 (3)エクスポートによる別表の退避

(4)別表の削除

DBMS_AUDIT_MGMT パッケージについては、以下のマニュアルを参照ください。

Oracle Database PL/SQL パッケージおよびタイプ・リファレンス 11g リリース 2(11.2) 「27 DBMS_AUDIT_MGMT」

https://docs.oracle.com/cd/E16338_01/appdev.112/b56262/d_audit_mgmt.htm#BABJECFB

Oracle Database PL/SQL パッケージおよびタイプ・リファレンス 12c リリース 1 (12.1) 「29 DBMS_AUDIT_MGMT」

https://docs.oracle.com/cd/E57425_01/121/ARPLS/d_audit_mgmt.htm#BABJECFB

Oracle Database PL/SQL パッケージおよびタイプ・リファレンス 12c リソース 2 (12.2) 「26 DBMS_AUDIT_MGMT」

https://docs.oracle.com/cd/E82638_01/arpls/DBMS_AUDIT_MGMT.html#GUID-C704D6B0-A6ED-4CFC -B364-CC008CFF76F1

Oracle Database PL/SQL パッケージおよびタイプ・リファレンス 18c 「26 DBMS_AUDIT_MGMT」

https://docs.oracle.com/cd/E96517_01/arpls/DBMS_AUDIT_MGMT.html#GUID-C704D6B0-A6ED-4CFC -B364-CC008CFF76F1

標準監査と統合監査ではメンテナンス手順が異なります。 3.8.1、3.8.2 でそれぞれの手順を説明します。

125

Copyright 2017-2019 FUJITSU LIMITED

3.8.1 標準監査証跡の退避と削除

(1)一定期間経過した監査証跡レコードを別表にコピー

Oracle クライアントの SQL*Plus から対象のデータベース・インスタンス、またはコンテナ(CDB$ROOT, PDB)に SYS ユ ーザーで接続します。接続後、DBA_AUDIT_TRAIL ビューのレコード数を確認し(任意)、ユーザーの別表にコピーし ます。

SQL> SELECT COUNT (*) from DBA_AUDIT_TRAIL;

SQL> CREATE TABLE user_name.table_name AS SELECT * FROM DBA_AUDIT_TRAIL WHERE EXTENDED_TIMESTAMP < TRUNC(SYSDATE - days);

user_name, table_name, days に指定する値について説明します。

可変部分 説明

user_name 監査証跡レコードを退避するための表の所有ユーザーを指定します。

Oracle11gR2、または Oracle12c/18c の PDB で実行する場合は一般ユーザー名を指定します。

Oracle12c/18c の CDB$ROOT で実行する場合は共通ユーザー(C##***)を作成しそのユーザ ー名を指定します。

table_name 監査証跡レコードを退避するための表名を指定します。

days 何日前の監査証跡レコードを退避するのか、その期間を指定します。

7 日前より古い監査証跡レコードを退避する場合は 7 とします。

以下は CDB$ROOT の C##CP_AUD1 ユーザーに aud_copy 表を作成し、7 日前より古い監査証跡レコードをコピ ーする場合のコマンド例です。

SQL>CREATE TABLE C##CP_AUD1.aud_copy AS SELECT * FROM DBA_AUDIT_TRAIL WHERE EXTENDED_TIMESTAMP < TRUNC(SYSDATE - 7);

作成した表のレコード数を確認する、または作成した表を検索し、正しくコピーできていることを確認してください。

(2)一定期間経過した監査証跡レコードの削除

①~④を順に実行してください。

①削除前の処理

前準備としてクリーンアップを行うプロシージャの初期設定を行います。

SQL> BEGIN

DBMS_AUDIT_MGMT.INIT_CLEANUP(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, DEFAULT_CLEANUP_INTERVAL => 12);

END;

/

126

Copyright 2017-2019 FUJITSU LIMITED

②アーカイブ済み日時の設定

監査証跡レコードにアーカイブ済みの日時(削除可能な日時)を設定します。特に条件がない場合は days に(1)で 指定した値を指定します。

SQL> BEGIN

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, LAST_ARCHIVE_TIME => TRUNC (SYSDATE - days),

CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

END;

/

③アーカイブ済みの監査証跡レコードの削除 次の SQL を実行します。

SQL> BEGIN

DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, USE_LAST_ARCH_TIMESTAMP => TRUE);

END;

/

DBA_AUDIT_TRAIL のレコード数を確認する、または表を検索しアーカイブ済みの監査証跡レコードが削除されている ことを確認してください。レコード数を確認する SQL は(1)を参照ください。

④削除後の処理

次の SQL を実行します。

SQL> BEGIN

DBMS_AUDIT_MGMT.DEINIT_CLEANUP(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD);

END;

/

(3)エクスポートによる別表の退避

(1)で作成した別表を DataPump Export により退避します。

DataPump Export の実行手順については、「2.8.2.2 Datapump Export の使用方法」を参照ください。

127

Copyright 2017-2019 FUJITSU LIMITED (4)別表の削除

(1)で作成した別表が不要な場合は削除します。

SQL> DROP TABLE user_name.table_name PURGE;

3.8.2 統合監査証跡の退避と削除

(1)一定期間経過した監査証跡レコードを別表にコピー

Oracle クライアントの SQL*Plus から対象のデータベース・インスタンス、またはコンテナ(CDB$ROOT,PDB)に SYS ユー ザーで接続します。接続後、統合監査証跡が出力されている UNIFIED_AUDIT_TRAIL ビューのレコード数を確認し

(任意)、ユーザーの別表にコピーします。

SQL> SELECT COUNT (*) from UNIFIED_AUDIT_TRAIL;

SQL> CREATE TABLE user_name.table_name AS SELECT * FROM

UNIFIED_AUDIT_TRAIL WHERE EVENT_TIMESTAMP < TRUNC(SYSDATE - days);

user_name, table_name, days に指定する値については、3.8.1(1)の表を参照ください。

以下は PDB の scott ユーザーに unified_audit_trail_copy 表を作成し、7 日前より古い監査証跡レコードをコピーす る場合の例です。

SQL> CREATE TABLE scott.unified_audit_trail_copy AS SELECT * FROM

UNIFIED_AUDIT_TRAIL WHERE EVENT_TIMESTAMP < TRUNC(SYSDATE - 7);

作成した表のレコード数を確認する、または作成した表を検索し、正しくコピーできていることを確認してください。

(2)一定期間経過した監査証跡レコードの削除

①アーカイブ済み日時の設定

何日前を最後のアーカイブ日時とするか、その日数を days に指定します。特に条件がない場合は (1)で指定した値を 指定します。

SQL> BEGIN

DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, LAST_ARCHIVE_TIME => TRUNC(SYSDATE - days),

CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

END;

/

128

Copyright 2017-2019 FUJITSU LIMITED

②アーカイブ済みの監査証跡レコードの削除 SQL> BEGIN

DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, USE_LAST_ARCH_TIMESTAMP => TRUE);

END;

/

UNIFIED_AUDIT_TRAIL ビューのレコード数を確認する、またはビューを検索しアーカイブ済みの監査証跡レコードが削 除されていることを確認してください。レコード数を確認する SQL は(1)を参照ください。

(3)エクスポートによる別表の退避、および(4)別表の削除は、「3.8.1 標準監査証跡の退避と削除」の(3)(4)を参照くだ さい。

129

Copyright 2017-2019 FUJITSU LIMITED