AUDIT_ADMINロールを付与されているユーザーとして、監査証跡の管理、監査証跡のアーカイブおよび監査証跡レコードの削除を実行できます。
内容は次のとおりです。
監査はデフォルトで有効ですが、監査レコードがディスクに書き込まれるタイミングを制御できます。
内容は次のとおりです。
関連項目:
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。
PL/SQLプログラム・ユニット内のSQL文は、プログラム・ユニットの実行時に必要に応じて個別に監査されます。
監査証跡のレコードがディスクに書き込まれる頻度を制御できます。書込みモードがQUEUEDに設定されている場合、監査レコードはディスクに即座に書き込まれず、SGAに定期的に書き込まれます。監査レコードをディスクに即座に書き込む場合は、即時書込みモードに設定できます。そうでない場合は、キューが3秒前より前にフラッシュされたかどうか、それに従って監査レコードがSGAキューにフラッシュされるかどうかをデフォルトでチェックする、最小フラッシュしきい値が構成されています。ただし、データベース・アクティビティにより、フラッシュが3秒ごとに発生せず、長時間かかる場合があります。
監査証跡レコードの生成と挿入は、ユーザー・トランザクションのコミットからは独立して実行されます。つまり、ユーザー・トランザクションがロールバックされても、監査証跡レコードはコミットされたままになります。
データベース・ユーザーがデータベースに接続した時点で有効になる統合監査ポリシーの文監査オプションと権限監査オプションは、そのセッションの持続期間中は有効です。セッションがすでにアクティブになっている場合、文または権限の統合監査のオプションを設定または変更しても、そのセッション中は有効になりません。修正した文監査オプションまたは権限監査オプションは、カレント・セッションを終了し、新しいセッションを作成した時点で有効になります。
一方、オブジェクト監査オプションについて変更した内容は、カレント・セッションでただちに有効になります。
デフォルトでは、監査証跡レコードはSYSAUX表領域に書き込まれます。DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATIONプロシージャを使用して、暗号化されている表領域を含め、異なる表領域を指定できます。
関連項目:
即時書込みモードおよびキュー書込みモードの詳細は、AUDSYSスキーマへの統合監査証跡レコードの書込みを参照してください
SQL文処理の様々なフェーズや共有SQLについては、『Oracle Database概要』を参照してください。
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATIONプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューでは、SYSDBA、SYSBACKUP、SYSKMなどの管理ユーザーからのアクティビティを取得します。
統合監査証跡を監査する必要はありません。統合監査証跡は、AUDSYSスキーマ内の読取り専用表にあります。したがって、統合監査証跡ビューに対するDMLは許可されません。AUDSYSスキーマからの基礎となるディクショナリ表に対するDMLおよびDDL操作も許可されません。
SYSTEM_PRIVILEGE_USED列は、アクティビティに使用された管理権限のタイプを示します。
監査ポリシーの変更など、次の監査関連のアクティビティは強制的に監査されます。
CREATE AUDIT POLICY
ALTER AUDIT POLICY
DROP AUDIT POLICY
AUDIT
NOAUDIT
DBMS_FGA PL/SQLパッケージのEXECUTE
DBMS_AUDIT_MGMT PL/SQLパッケージのEXECUTE
AUDSYS監査証跡表でのALTER TABLEの試行(この表は監査できません)
管理ユーザーSYS、SYSDBA、SYSOPER、SYSASM、SYSBACKUP、SYSDGおよびSYSKMによるトップ・レベルの文(データベースがオープンするまで)。データベースがオープンされると、Oracle Databaseはシステムの監査構成(AUDIT文のBY句などを使用して適用された構成だけでなく、AUDIT文にBY句がない場合や、EXCEPT句が使用され、これらのユーザーが除外されなかった場合に、すべてのユーザーに対して適用された構成)を使用して、これらのユーザーを監査します。
SYS.AUD$およびSYS.FGA_LOG$ディクショナリ表に対してユーザーが発行したすべてのDML文
統合監査内部表のデータまたはメタデータの変更。この表に対するSELECT文はデフォルトで、または強制的には監査されません。
Oracle Database Vaultに対して行われるすべての構成変更
関連項目:
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。
カーソルを再利用させるイベントは、次のとおりです。
カーソルを再利用のためにオープン状態にしておく、Oracle Formsなどのアプリケーション
新しいバインド変数を使用したカーソルの継続実行
1つのカーソルを再利用するためにPL/SQLエンジンにより文が最適化される場合に、PL/SQLループ内で実行される文
監査は、カーソルが共有されているかどうかの影響を受けません。それぞれのユーザーは、カーソルの最初の実行時に自分の監査証跡レコードを作成します。
Oracle Databaseは、監査レコードをAUDSYSスキーマに書き込みます。
内容は次のとおりです。
新規または移行直後のOracle Databaseインストールでは、統合監査が初期化されてレコードが生成されるまで、AUDSYSスキーマは空です。
注意:
Oracle Database 12cリリース12.2以降、監査レコードをフラッシュする機能は非推奨となりましたが、下位互換性のため維持されています。
この設計により、監査証跡プロセスとデータベースの全体のパフォーマンスが大幅に向上します。以前のリリースでは、インスタンスがクラッシュした場合、またはSHUTDOWN ABORT操作の実行中、一部の監査レコードが失われる可能性がありました。DBMS_AUDIT_MGMT.TRANSFER_UNIFIED_AUDIT_RECORDSプロシージャを使用して、監査レコードをAUDSYSスキーマの内部リレーショナル表に転送することで、監査レコードがAUDSYSスキーマの監査表に即座に書き込まれるように監査証跡を構成することをお薦めします。
以前のリリースからは、次のモード(非推奨となりましたが、下位互換性のため維持されています)を使用できます。ただし、かわりにDBMS_AUDIT_MGMT.TRANSFER_UNIFIED_AUDIT_RECORDSプロシージャを使用することをお薦めします(詳細は、Oracle Databaseアップグレード・ガイドを参照)。
即時書込みモード。この設定では、すべての監査レコードが監査証跡に即座に書き込まれます。ただし、データベースのパフォーマンスに影響する場合があります。
キュー書込みモード。この設定は、デフォルトの書込みモードで、監査レコードをメモリーにキューして、AUDSYSスキーマ監査表に定期的に書き込みます。SGAのサイズを設定するには、UNIFIED_AUDIT_SGA_QUEUE_SIZE初期化パラメータを設定します。デフォルトのサイズは1MBで、1から30の範囲を入力できます。
注意:
UNIFIED_AUDIT_SGA_QUEUE_SIZE初期化パラメータは非推奨となりましたが、下位互換性のため現在も維持されています。
関連項目:
UNIFIED_AUDIT_SGA_QUEUE_SIZE初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
マルチテナント環境では、DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTYプロシージャは現在のプラガブル・データベース(PDB)のみに適用されます。
データベースが読取り専用の場合、DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTYでSGAに値が直接設定されます。
この設定は、後続のデータベース・セッションに適用されます。
キュー書込みモードを使用する場合は、レコードを統合監査証跡に手動で書込みできます。
デフォルトで構成されている最小フラッシュしきい値があることに注意してください。これは、キューが3秒前より前にフラッシュされたかどうか、それに従って監査レコードがSGAキューにフラッシュされるかどうかをチェックします。ただし、データベース・アクティビティにより、フラッシュが3秒ごとに発生せず、長時間かかる場合があります。
現行のデータベース・インスタンスまたは現行のOracle Real Application Clusters (Oracle RAC)インスタンスのディスクにレコードを手動で書込みできます。
レコードをディスクに手動で書き込むには、次のいずれかのプロシージャを実行します。
EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL; EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(DBMS_AUDIT_MGMT.FLUSH_CURRENT_INSTANCE);
すべてのOracle Real Application Cluster (Oracle RAC)インスタンスの監査レコードをフラッシュできます。
Oracle RACインスタンスで監査レコードをフラッシュするには、次のプロシージャを実行します。
EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(DBMS_AUDIT_MGMT.FLUSH_ALL_INSTANCES);
マルチテナント環境では、現在のPDBまたはマルチテナント環境のすべてのPDB間でディスクに監査証跡レコードを書き込むことができます。
監査証跡レコードをディスクに書き込むには、次のいずれかのプロシージャを使用します。
現在のPDBの場合:
BEGIN DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL( CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT); END; /
マルチテナント環境のすべてのPDBの場合:
BEGIN DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL( CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_ALL); END; /
監査レコードは$ORACLE_BASE/audit/$ORACLE_SIDディレクトリ内の外部ファイルに書き込むことができます。
データベースが書込み可能でない場合(データベースのマウント中など)、データベースがクローズされている場合、または読取り専用の場合は、Oracle Databaseによって、監査レコードがこれらの外部ファイルに書き込まれます。
DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILESプロシージャを実行して、データベースにファイルをロードできます。多くのオペレーティング・システム監査レコードを統合監査証跡に移動している場合は、パフォーマンスが影響を受ける場合があるので注意してください。
データベースが書込み可能な場合に、これらのファイルの監査レコードをAUDSYSスキーマ監査表に移動する手順:
監査レコードはAUDSYSスキーマ監査表に即座にロードされ、$ORACLE_BASE/audit/$ORACLE_SIDディレクトリから削除されます。
統合監査を無効にすることができます。
現在有効となっている統合監査ポリシーをすべて無効化します。
このステップは、このプロシージャが完了したときに、データベースが混合モード監査に入ることを防ぎます。混合モード監査の詳細は、混合モードの監査についてを参照してください。
AUDIT_ADMINロールを割り当てられているユーザーとして、データベース・インスタンスにログインします。
有効な統合監査ポリシーを検索するには、AUDIT_UNIFIED_ENABLED_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列およびENABLED_OPT列を問い合せます。
NOAUDIT POLICY文を実行して有効になっている各ポリシーを無効にします。
詳細は、統合監査ポリシーの無効化を参照してください。
SYSOPER権限を持つユーザーSYSとして接続します。
CONNECT sys as sysoper
Enter password: password
マルチテナント環境の場合は、このコマンドによりルートに接続されます。
データベースの停止
例:
SHUTDOWN IMMEDIATE
マルチテナント環境の場合は、このコマンドによりCDB内のすべてのPDBが終了します。
プラットフォームに応じて次のようにします。
UNIXシステム: 次のコマンドを実行します。
cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk uniaud_off ioracle
Windowsシステム: %ORACLE_HOME%/bin/orauniaud12.dllファイルの名前を%ORACLE_HOME%/bin/orauniaud12.dll.dblに変更します。
マルチテナント環境の場合は、これらのアクションによりCDB内のすべてのPDBの統合監査が無効化されます。
SQL*Plusで、データベースを再起動します。
STARTUP
マルチテナント環境の場合は、このコマンドによりCDB内のすべてのPDBが再起動します。
従来のオペレーティング・システム、統合データベースおよび従来のデータベースの監査証跡をアーカイブできます。
内容は次のとおりです。
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。
アップグレードしたデータベースから従来のオペレーティング・システムの監査証跡をアーカイブするには、プラットフォーム固有のオペレーティング・システム・ツールを使用して、従来のオペレーティング・システム監査ファイルのアーカイブを作成します。
従来のオペレーティング・システム監査ファイルをアーカイブするには、次の方法を使用します。
Oracle Audit Vault and Database Firewallを使用します。Oracle Databaseとは別にOracle Audit Vault and Database Firewallをインストールします。
テープまたはディスクにバックアップを作成します。監査ファイルの圧縮ファイルを作成し、それをテープまたはディスクに格納できます。詳細は、使用しているオペレーティング・システムのマニュアルを参照してください。
その後、監査証跡の領域を解放して監査証跡管理を容易にするために、従来のオペレーティング・システム監査レコードをパージ(削除)する必要があります。
関連項目:
Oracle Audit Vault and Database Firewallの詳細は、『Oracle Audit Vault and Database Firewall管理者ガイド』を参照してください
監査証跡は、大きくなりすぎないように定期的にアーカイブし、パージする必要があります。
アーカイブと削除により、監査証跡の領域が解放され、データベース監査証跡の削除が容易になります。
統合および従来のデータベースの監査証跡のアーカイブを作成するには、Oracle Audit Vault and Database Firewallを使用します。Oracle Databaseとは別にOracle Audit Vault and Database Firewallをインストールします。
アーカイブが完了したら、データベース監査証跡の内容を削除できます。
統合監査レコード、従来の標準監査レコードおよび従来のファイングレイン監査レコードをアーカイブするには、関連するレコードを通常のデータベース表にコピーします。
例:
INSERT INTO table SELECT ... FROM UNIFIED_AUDIT_TRAIL ...; INSERT INTO table SELECT ... FROM SYS.AUD$ ...; INSERT INTO table SELECT ... FROM SYS.FGA_LOG$ ...;
関連項目:
Oracle Audit Vault and Database Firewallの詳細は、『Oracle Audit Vault and Database Firewall管理者ガイド』を参照してください
DBMS_AUDIT_MGMT PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。
内容は次のとおりです。
関連項目:
様々な方法を使用して、監査証跡レコードをパージできます。
監査証跡レコードは、定期的にアーカイブしてから削除するようにしてください。監査証跡レコードのサブセットを削除したり、指定した時間間隔で実行する削除ジョブを作成したりできます。Oracle Databaseでは、アーカイブ・タイムスタンプより前に作成された監査証跡レコードが削除されるか、すべての監査証跡レコードが削除されます。読取り/書込みデータベースおよび読取り専用データベースの両方で監査証跡レコードを削除できます。
削除プロセスでは、統合監査証跡だけでなく、前のリリースのOracle Databaseの監査証跡も考慮されます。たとえば、オペレーティング・システムまたはXMLの監査レコードが含まれるアップグレード済のデータベースを移行した場合は、この項のプロシージャを使用して、それらをアーカイブして削除できます。
監査証跡の削除タスクを実行するには、ほとんどの場合、DBMS_AUDIT_MGMT PL/SQLパッケージを使用します。DBMS_AUDIT_MGMTパッケージを使用するには、AUDIT_ADMINロールが必要です。Oracle Databaseでは、DBMS_AUDIT_MGMT PL/SQLパッケージ・プロシージャのすべての実行を強制的に監査します。
Oracle Audit Vault and Database Firewallをインストールしている場合は、監査証跡パージ・プロセスは、このマニュアルで説明している手順とは異なります。たとえば、Oracle Audit Vaultでは、監査証跡が自動的にアーカイブされます。
注意:
Oracle Databaseでは、監査証跡からのレコードの削除はすべて例外なく監査されます。
関連項目:
Oracle Audit Vault and Database Firewallの詳細は、『Oracle Audit Vault and Database Firewall管理者ガイド』を参照してください。
DBMS_AUDIT_MGMT PL/SQLパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください
DBA_AUDIT_MGMT関連のビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
監査証跡パージ方法の選択は、パージがスケジュールに基づいて定期的に行われるか、指定時間に実行されるかに応じて決まります。
内容は次のとおりです。
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的にパージできます。
自動パージ・ジョブをスケジューリングする場合、オンラインおよびアーカイブREDOログのサイズをチューニングして、タイムスタンプとアーカイブの戦略を計画し、アーカイブ・タイムスタンプをオプションで設定して、パージ・ジョブを作成およびスケジューリングする必要があります。
内容は次のとおりです。
監査証跡全体を削除することも、タイムスタンプより前に作成された一部の監査証跡のみを削除することもできます。
タイムスタンプより前に作成された個々の監査レコードを削除できます。
監査証跡(特に、大きなもの)を削除する場合は、完了するまでに時間がかかることがあります。削除ジョブは、データベースの負荷が低い時間帯に実行するようにスケジューリングするのが賢明です。
競合しないかぎり、異なる監査証跡タイプに対する複数の削除ジョブを作成できます。たとえば、標準監査証跡表の削除ジョブを作成し、その後でファイングレイン監査証跡表の削除ジョブを作成できます。ただし、DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STDまたはDBMS_AUDIT_MGMT.AUDIT_TRAIL_ALLプロパティを使用して、両方のタイプまたはすべてのタイプをまとめて処理する削除ジョブを作成することはできません。また、DBMS_SCHEDULER PL/SQLパッケージで作成されるジョブは読取り専用データベースで実行されないことに注意してください。DBMS_AUDIT_MGMTで作成される自動削除ジョブではDBMS_SCHEDULERパッケージを使用してタスクをスケジューリングします。したがって、これらのジョブは読取り専用モードで開いているデータベースまたはPDBで実行できません。
削除プロセスでは、REDOログが追加生成される場合があります。
必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
統合監査環境では、混合モードの監査環境と同じ数のREDOログは削除プロセスで生成されないため、統合監査に移行している場合は、この手順を省略できます。
関連項目:
ログ・ファイルのチューニングの詳細は、『Oracle Database管理者ガイド』を参照してください。
監査レコードをアーカイブするには、これらのレコードのタイムスタンプを記録する必要があります。
タイムスタンプの日付を見つけるために、DBA_AUDIT_MGMT_LAST_ARCH_TSデータ・ディクショナリ・ビューを問い合せます。
その後、削除を実行すると、このタイムスタンプの日付より前に作成された監査証跡レコードのみが削除されます。手順3: 監査レコードのアーカイブ・タイムスタンプの設定(必要に応じて)を参照してください
レコードのタイムスタンプを設定したら、アーカイブを開始できます。詳細は、監査証跡のアーカイブを参照してください。
すべての監査証跡を削除する場合は、この手順を省略できます。
最後に監査レコードがアーカイブされた日時のタイムスタンプを設定できます。アーカイブ・タイムスタンプを設定すると、削除インフラストラクチャのクリーン・アップ・ポイントが指定されます。読取り専用データベースにタイムスタンプを設定する場合、DBMS_AUDIT.MGMT.GET_LAST_ARCHIVE_TIMESTAMPファンクションを使用して、それが実行されたインスタンス用に構成された最後のアーカイブ・タイムスタンプを確認します。読取り/書込みデータベースの場合、DBA_AUDIT_MGMT_LAST_ARCH_TSデータ・ディクショナリ・ビューを問い合せます。
統合監査証跡の最終アーカイブ・タイムスタンプを調べるには、DBA_AUDIT_MGMT_LAST_ARCH_TSデータ・ディクショナリ・ビューを問い合せます。タイムスタンプを設定した後でDBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL PL/SQLプロシージャを実行すると、そのタイムスタンプより前の時間を示すすべての監査レコードが監査証跡から削除されます。アーカイブ・タイムスタンプ設定を消去する場合は、アーカイブ・タイムスタンプ設定の消去を参照してください。
Oracle Database Real Application Clustersを使用している場合は、ネットワーク・タイム・プロトコル(NTP)を使用して、Oracle Databaseインスタンスをインストールしている各コンピュータ上の時間を同期化してください。たとえば、1つのOracle RACインスタンス・ノードの時間を午前11:00:00に設定し、次のOracle RACインスタンス・ノードの時間を11:00:05に設定するとします。その結果、2つのノードの時間に矛盾が生じます。ネットワーク・タイム・プロトコル(NTP)を使用して、これらのOracle RACインスタンス・ノードの時間を同期化できます。
削除ジョブのタイムスタンプを設定する手順:
DBMS_AUDIT_MGMT PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB PL/SQLプロシージャを実行して、削除ジョブを作成してスケジューリングします。
例:
CONNECT aud_admin@hrpdb Enter password: password Connected. BEGIN DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (AUDIT_TRAIL_TYPE=> DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, AUDIT_TRAIL_PURGE_INTERVAL => 12, AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',USE_LAST_ARCH_TIMESTAMP=> TRUE, CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT); END; /
この例の説明は、次のとおりです。
AUDIT_TRAIL_TYPE: 監査証跡タイプを指定します。DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIEDは、これを統合監査証跡に設定します。
前のリリースの監査データがまだ存在するアップグレード済のデータベースの場合:
DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STDは、標準監査証跡表AUD$に使用されます。(この設定は読取り専用データベースには適用されません。)
DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STDは、ファイングレイン監査証跡表FGA_LOG$に使用されます。(この設定は読取り専用データベースには適用されません。)
DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STDは、標準監査証跡表とファイングレイン監査証跡表の両方に使用されます。(この設定は読取り専用データベースには適用されません。)
DBMS_AUDIT_MGMT.AUDIT_TRAIL_OSは、拡張子.audが付けられたオペレーティング・システム監査証跡ファイルに使用されます。(この設定はWindowsイベント・ログ・エントリには適用されません。)
DBMS_AUDIT_MGMT.AUDIT_TRAIL_XMLは、XMLオペレーティング・システム監査証跡ファイルに使用されます。
DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILESは、オペレーティング・システム監査証跡ファイルとXML監査証跡ファイルの両方に使用されます。
DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALLは、すべての監査証跡レコード、つまりデータベース監査証跡タイプとオペレーティング・システム監査証跡タイプの両方に使用されます。(この設定は読取り専用データベースには適用されません。)
AUDIT_TRAIL_PURGE_INTERVALは、この削除ジョブを実行する間隔を時間単位で指定します。DBMS_AUDIT_MGMT.CREATE_PURGE_JOBプロシージャを実行すると、計時が開始されます(この例では、このプロシージャを実行してから12時間後)。後でこの値を更新する場合は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVALプロシージャを実行します。
USE_LAST_ARCH_TIMESTAMPは、次の設定のいずれかを受け入れます。
TRUEは、最終アーカイブ・タイムスタンプより前に作成された監査レコードを削除します。最後に記録されたタイムスタンプを確認するには、読取り/書込みデータベースの場合はDBA_AUDIT_MGMT_LAST_ARCH_TSデータ・ディクショナリ・ビューのLAST_ARCHIVE_TS列を問い合せ、読取り専用データベースの場合はDBMS_AUDIT_MGMT.GET_LAST_ARCHIVE_TIMESTAMPファンクションを使用します。デフォルト値はTRUEです。USE_LAST_ARCH_TIMESTAMPはTRUEに設定することをお薦めします。
FALSEは、最終アーカイブ・タイムスタンプを考慮せずに、すべての監査レコードを削除します。削除されているはずの監査レコードを誤って削除しないように、この設定を使用する際には注意が必要です。
CONTAINERは、マルチテナント環境で削除ジョブを作成する場所を定義するのに使用されます。CONTAINERをDBMS_AUDIT_MGMT.CONTAINER_CURRENTに設定すると、現在のPDBからのみ使用および表示可能になり、管理されます。DBMS_AUDIT_MGMT.CONTAINER_ALL設定では、ジョブがルートに作成されます。定義済のジョブ・スケジュールに従って実行されるグローバル・ジョブとしてジョブを定義します。ジョブが起動されると、マルチテナント環境のすべてのPDBの監査証跡がクリーンアップされます。ジョブをルートに作成した場合は、ルートからのみ表示可能です。したがって、有効化、無効化および削除はルートからのみ可能です。
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILプロシージャを使用して、監査証跡を手動でパージできます。
内容は次のとおりです。
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。
削除ジョブと同様に、アーカイブ・タイムスタンプの日付より前に作成された監査証跡レコード、または監査証跡内のすべてのレコードを削除できます。このプロシージャを実行した場合、現行の監査ディレクトリのみがクリーン・アップされます。
前のリリースの監査証跡がまだ存在しているアップグレード済のデータベースの場合は、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL PL/SQLプロシージャに関する次の点に注意してください。
DBMS_AUDIT_MGMTパッケージではWindowsイベントビューアのクリーン・アップはサポートされていないため、Microsoft WindowsでAUDIT_TRAIL_TYPEプロパティをDBMS_AUDIT_MGMT.AUDIT_TRAIL_OSに設定しても効果はありません。Windows上のオペレーティング・システム監査レコードはWindowsイベントビューアに書き込まれるためです。DBMS_AUDIT_MGMTパッケージでは、このタイプのクリーン・アップ操作はサポートされていません。
UNIXプラットフォームで、AUDIT_SYSLOG_LEVEL初期化パラメータを設定している場合は、Oracle Databaseによってオペレーティング・システムのログ・ファイルがsyslogファイルに書き込まれます。(syslogファイルを使用するよう構成すると、メッセージがsyslogデーモン・プロセスに送信されることに注意してください。syslogデーモン・プロセスは、syslogファイルへのコミットされた書込みを示す確認応答をOracle Databaseに返しません。)AUDIT_TRAIL_TYPEプロパティをDBMS_AUDIT_MGMT.AUDIT_TRAIL_OSに設定すると、監査ディレクトリ内の.audファイルのみが削除されます(このディレクトリは、AUDIT_FILE_DEST初期化パラメータで指定します)。
その他の監査証跡パージとして、監査証跡パージ・ジョブの有効化または無効化、監査証跡パージ・ジョブのデフォルト間隔の設定、監査証跡パージ・ジョブの削除、アーカイブ・タイムスタンプ設定の消去などがあります。
内容は次のとおりです。
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャで、監査証跡削除ジョブを有効または無効にします。
マルチテナント環境では、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャの実行場所は、削除ジョブの場所(DBMS_MGMT.CREATE_PURGE_JOBプロシージャのCONTAINERパラメータによって決定)によって異なります。CONTAINERをCONTAINER_ALLに設定した場合(削除ジョブをルートに作成する場合)は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャをルートから実行する必要があります。CONTAINERをCONTAINER_CURRENTに設定した場合は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャが作成されたPDBから、このプロシージャを実行する必要があります。
監査証跡パージ・ジョブを有効または無効にするには、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSPL/SQLプロシージャを使用します。
たとえば、削除ジョブをhrpdb PDBに作成したとします。
CONNECT aud_admin@hrpdb
Enter password: password
Connected.
BEGIN
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS(
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',
AUDIT_TRAIL_STATUS_VALUE => DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE);
END;
/
この例の説明は、次のとおりです。
AUDIT_TRAIL_PURGE_NAMEは、Audit_Trail_PJという削除ジョブを指定します。既存の削除ジョブを調べるには、DBA_AUDIT_MGMT_CLEANUP_JOBSデータ・ディクショナリ・ビューのJOB_NAMEおよびJOB_STATUS列を問い合せます。
AUDIT_TRAIL_STATUS_VALUEは、次のプロパティのいずれかを受け入れます。
DBMS_AUDIT_MGMT.PURGE_JOB_ENABLEは、指定した削除ジョブを使用可能にします。
DBMS_AUDIT_MGMT.PURGE_JOB_DISABLEは、指定した削除ジョブを使用禁止にします。
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。
DBMS_AUDIT_MGMT.CREATE_PURGE_JOBプロシージャで使用される間隔設定が、この設定よりも優先されます。 特定のパージ・ジョブの監査証跡パージ・ジョブのデフォルト間隔を設定するには、DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVALプロシージャを実行します。
たとえば、削除ジョブをhrpdb PDBに作成したとします。
CONNECT aud_admin@hrpdb
Enter password: password
Connected.
BEGIN
DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVAL(
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ',
AUDIT_TRAIL_INTERVAL_VALUE => 24);
END;
/
この例の説明は、次のとおりです。
AUDIT_TRAIL_PURGE_NAMEは、監査証跡の削除ジョブの名前を指定します。既存の削除ジョブのリストを調べるには、DBA_AUDIT_MGMT_CLEANUP_JOBSデータ・ディクショナリ・ビューのJOB_NAMEおよびJOB_STATUS列を問い合せます。
AUDIT_TRAIL_INTERVAL_VALUEは、DBMS_AUDIT_MGMT.CREATE_PURGE_JOBプロシージャで設定したデフォルトの間隔(時間単位)を更新します。1から999の値を入力します。削除ジョブを実行すると、計時が開始されます。
マルチテナント環境では、DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVALプロシージャの実行場所は、削除ジョブの場所(DBMS_MGMT.CREATE_PURGE_JOBプロシージャのCONTAINERパラメータによって決定)によって異なります。CONTAINERをCONTAINER_ALLに設定した場合、削除ジョブはルートに存在するため、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャをルートから実行する必要があります。CONTAINERをCONTAINER_CURRENTに設定した場合は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVALプロシージャが作成されたPDBから、このプロシージャを実行する必要があります。
既存の監査証跡パージ・ジョブを削除できます。
既存の削除ジョブを調べるには、DBA_AUDIT_MGMT_CLEANUP_JOBSデータ・ディクショナリ・ビューのJOB_NAMEおよびJOB_STATUS列を問い合せます。
監査証跡パージ・ジョブを削除するには、DBMS_AUDIT_MGMT.DROP_PURGE_JOB PL/SQLプロシージャを使用します。
たとえば、削除ジョブをhrpdb PDBに作成したとします。
CONNECT aud_admin@hrpdb
Enter password: password
Connected.
BEGIN
DBMS_AUDIT_MGMT.DROP_PURGE_JOB(
AUDIT_TRAIL_PURGE_NAME => 'Audit_Trail_PJ');
END;
/
マルチテナント環境では、DBMS_AUDIT_MGMT.DROP_PURGE_JOBプロシージャの実行場所は、削除ジョブの場所(DBMS_MGMT.CREATE_PURGE_JOBプロシージャのCONTAINERパラメータによって決定)によって異なります。CONTAINERをCONTAINER_ALLに設定した場合、削除ジョブはルートに存在するため、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャをルートから実行する必要があります。CONTAINERをCONTAINER_CURRENTに設定した場合は、DBMS_AUDIT_MGMT.DROP_PURGE_JOB_INTERVALプロシージャが作成されたPDBから、このプロシージャを実行する必要があります。
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャで、アーカイブ・タイムスタンプの設定をクリアできます。
監査証跡ログのクリーン・アップの履歴を検索するには、OBJECT_NAMEがDBMS_AUDIT_MGMT、OBJECT_SCHEMAがSYSで、SQL_TEXTがLIKE %DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL%に設定されていることを条件として使用し、UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューを問い合せます。
アーカイブ・タイムスタンプ設定を消去するには、DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP PL/SQLプロシージャを使用して、監査証跡タイプと、マルチテナント環境の場合はコンテナ・タイプを指定します。
たとえば、削除ジョブをhrpdb PDBに作成したとします。
CONNECT aud_admin@hrpdb
Enter password: password
Connected.
BEGIN
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);
END;
/
この例の説明は、次のとおりです。
統合監査証跡の場合は、AUDIT_TRAIL_TYPEが設定されます。AUDIT_TRAIL_TYPEプロパティをDBMS_AUDIT_MGMT.AUDIT_TRAIL_OSまたはDBMS_AUDIT_MGMT.AUDIT_TRAIL_XMLに設定している場合、RAC_INSTANCE_NUMBERを0に設定することはできません。AUDIT_TRAIL_TYPEをDBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIEDに設定した場合は、RAC_INSTANCE_NUMBER設定を省略できます。
CONTAINERは、タイムスタンプをマルチテナント環境に適用します。DBMS_AUDIT_MGMT.CONTAINER_CURRENTは、ローカルのPDBを指定し、DBMS_AUDIT_MGMT.CONTAINER_ALLは、すべてのデータベースに適用されます。
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
例23-1の疑似コードはデータベース監査証跡削除操作を作成し、この操作は、ユーザーが統合監査証跡に対してDBMS_ADUIT.CLEAN_AUDIT_TRAILプロシージャを起動することでコールします。
この削除操作では、ループを使用することで、前回アーカイブされたタイムスタンプより前に作成されたレコードを削除します。ループは監査レコードをアーカイブし、どの監査レコードがアーカイブされたかを計算してSetCleanUpAuditTrailコールを使用して最終アーカイブ・タイムスタンプを設定し、それからCLEAN_AUDIT_TRAILプロシージャをコールします。この例では、重要な手順は太字で示しています。
例23-1 データベース監査証跡の削除操作の直接コール
-- 1. Set the last archive timestamp: PROCEDURE SetCleanUpAuditTrail() BEGIN CALL FindLastArchivedTimestamp(AUD$); DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, LAST_ARCHIVE_TIME => '23-AUG-2013 12:00:00', CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT); END; / -- 2. Run a customized archive procedure to purge the audit trail records: BEGIN CALL MakeAuditSettings(); LOOP (/* How long to loop*/) -- Invoke function for audit record archival CALL DoUnifiedAuditRecordArchival(); CALL SetCleanUpAuditTrail(); IF(/* Clean up is needed immediately */) DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, USE_LAST_ARCH_TIMESTAMP => TRUE, CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT ); END IF END LOOP /*LOOP*/ END; /* PROCEDURE */ /
他の監査証跡のタイプでこの例を変更する場合は、追加の手順が必要になる場合があります。詳細は、『Oracle Databaseセキュリティ・ガイド』のOracle Database 11gリリース2 (11.2)版(次のドキュメント・ライブラリから入手可能)を参照してください。
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
表23-1に、これらのビューを示します。
表23-1 監査証跡の管理設定に関する情報を表示するビュー
| ビュー | 説明 |
|---|---|
|
従来(統合以外)の監査証跡の削除イベントの履歴が表示されます。定期的に、 DELETE FROM DBA_AUDIT_MGMT_CLEAN_EVENTS; このビューは、読取り/書込みデータベースにのみ適用されます。読取り専用データベースの場合、削除イベントの履歴はアラート・ログにあります。 統合監査の場合、削除されたイベントの履歴を検索するには、 |
|
現在構成されている監査証跡の削除ジョブが表示されます。 |
|
現在構成されている監査証跡プロパティが表示されます。これらのプロパティは、 |
|
監査証跡の削除用に設定された最後のアーカイブ・タイムスタンプが表示されます。 |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。