23 監査証跡の管理
AUDIT_ADMINロールを付与されているユーザーは、監査証跡の管理、監査証跡のアーカイブおよび監査証跡レコードの削除を実行できます。
- 統合監査証跡の管理
監査はデフォルトで有効ですが、監査レコードがディスクに書き込まれるタイミングを制御できます。 - 監査証跡のアーカイブ
従来のオペレーティング・システム、統合データベースおよび従来のデータベースの監査証跡をアーカイブできます。 - 監査証跡レコードの削除
DBMS_AUDIT_MGMTPL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。 - 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
親トピック: 監査を使用したデータベース・アクティビティの監視
23.1 統合監査証跡の管理
監査はデフォルトで有効ですが、監査レコードがディスクに書き込まれるタイミングを制御できます。
- 監査レコードが作成されるときと場所
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。 - 強制的に監査されるアクティビティ
セキュリティ・センシティブな特定のデータベース・アクティビティは常に監査され、このような監査構成は無効化できません。 - カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。 - AUDSYSスキーマへの統合監査証跡レコードの書込み
Oracle Databaseは、監査レコードをAUDSYSスキーマの内部リレーショナル表に自動的に書き込みます。 - 監査レコードがオペレーティング・システムに書き込まれる場合
データベース表が統合監査レコードを受け入れられない場合、これらのレコードはオペレーティング・システムの過剰監査ファイル(.bin形式)に書き込まれます。 - 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。 - 統合監査の無効化
統合監査を無効にすることができます。
関連トピック
親トピック: 監査証跡の管理
23.1.1 監査レコードが作成されるときと場所
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。
PL/SQLプログラム・ユニット内のSQL文は、プログラム・ユニットの実行時に必要に応じて個別に監査されます。
統合監査証跡の読取りパフォーマンスを高めるために、統合監査レコードはディスクのAUDSYSスキーマの内部リレーショナル表に即座に書き込まれます。以前のリリースでは、統合監査レコードはSecureFile LOBに書き込まれていました。Oracle Database 12cリリース1 (12.1)の統合監査に移行済の場合は、SecureFile LOBからこの内部表に統合監査レコードを手動で転送できます。使用中のデータベースのバージョンがパーティション化された表をサポートしている場合、この内部表はパーティション化された表です。この場合は、DBMS_AUDIT_MGMT.ALTER_PARTITION_INTERVALプロシージャを使用して表のパーティション間隔を変更できます。この表のパーティション化されたバージョンは、デフォルトのパーティション間隔が1か月のパーティション・キーとしてEVENT_TIMESTAMPタイムスタンプに基づいています。データベース・バージョンがパーティショニングをサポートしていない場合、内部表は標準のもので、パーティション化されていない表です。
監査証跡レコードの生成と挿入は、ユーザー・トランザクションのコミットからは独立して実行されます。つまり、ユーザー・トランザクションがロールバックされても、監査証跡レコードはコミットされたままになります。
データベース・ユーザーがデータベースに接続した時点で有効になる統合監査ポリシーの文監査オプションと権限監査オプションは、そのセッションの持続期間中は有効です。セッションがすでにアクティブになっている場合、文または権限の統合監査のオプションを設定または変更しても、そのセッション中は有効になりません。修正した文監査オプションまたは権限監査オプションは、カレント・セッションを終了し、新しいセッションを作成した時点で有効になります。
一方、オブジェクト監査オプションについて変更した内容は、カレント・セッションでただちに有効になります。
デフォルトでは、監査証跡レコードはSYSAUX表領域のAUDSYSスキーマに書き込まれます。DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATIONプロシージャを使用して、暗号化されている表領域を含め、異なる表領域を指定できます。
関連項目:
-
監査証跡レコードを
AUDSYSに書き込む方法の詳細は、AUDSYSスキーマへの統合監査証跡レコードの書込みを参照してください -
アップグレード後の統合監査レコードの転送の詳細は、Oracle Databaseアップグレード・ガイドを参照してください
親トピック: 統合監査証跡の管理
23.1.2 強制的に監査されるアクティビティ
セキュリティ・センシティブな特定のデータベース・アクティビティは常に監査され、このような監査構成は無効化できません。
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_FGAPL/SQLパッケージのEXECUTE -
DBMS_AUDIT_MGMTPL/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に対して行われるすべての構成変更
23.1.3 カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。
カーソルを再利用させるイベントは、次のとおりです。
-
カーソルを再利用のためにオープン状態にしておく、Oracle Formsなどのアプリケーション
-
新しいバインド変数を使用したカーソルの継続実行
-
1つのカーソルを再利用するためにPL/SQLエンジンにより文が最適化される場合に、PL/SQLループ内で実行される文
監査は、カーソルが共有されているかどうかの影響を受けません。それぞれのユーザーは、カーソルの最初の実行時に自分の監査証跡レコードを作成します。
親トピック: 統合監査証跡の管理
23.1.4 AUDSYSスキーマへの統合監査証跡レコードの書込み
Oracle Databaseは、監査レコードをAUDSYSスキーマの内部リレーショナル表に自動的に書き込みます。
Oracle Database 12cリリース1 (12.1)では、監査レコードをメモリー(キュー書込みモード)にキューイングし、AUDSYSスキーマ監査表に定期的に書き込むオプションがありました。ただし、Oracle Database 12cリリース2 (12.2)以降では、即時書込みモードおよびキュー書込みモードは非推奨です。制御するパラメータ(UNIFIED_AUDIT_SGA_QUEUE_SIZE、DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITEおよびDBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE)は、まだ表示可能ですが、機能はありません。
監査レコードがAUDSYSスキーマのリレーショナル表に常に書き込まれる新しい機能によって、インスタンスがクラッシュした場合やSHUTDOWN ABORT操作時に監査レコードが失われるリスクが回避されます。新しい機能によって、監査証跡とデータベース全体のパフォーマンスも向上します。
Oracle Database 12cリリース1 (12.1)からアップグレードし、そのリリースの統合監査に移行した場合は、DBMS_AUDIT_MGMT.TRANSFER_UNIFIED_AUDIT_RECORDSプロシージャを使用して、以前のリリースで生成された監査レコードをAUDSYS監査内部表に転送することをお薦めします。アップグレード後の統合監査レコードの転送の詳細は、Oracle Databaseアップグレード・ガイドを参照してください。
関連トピック
親トピック: 統合監査証跡の管理
23.1.5 監査レコードがオペレーティング・システムに書き込まれる場合
データベース表が統合監査レコードを受け入れられない場合、これらのレコードはオペレーティング・システムの過剰監査ファイル(.bin形式)に書き込まれます。
データベース表への書込み機能は、監査表領域がオフライン、表領域が読取り専用、表領域がいっぱい、データベースが読取り専用などの場合、失敗する可能性があります。統合監査レコードは、OSディスク領域がいっぱいになるまで、OSの過剰ファイルに書き込まれます。この時点で、OSに監査レコードの空き領域がない場合、ユーザー監査可能なトランザクションは「ORA-02002 監査証跡への書込み中にエラーが発生しました。」エラーで失敗します。この問題を回避するために、監査証跡を定期的に削除することをお薦めします。
関連トピック
親トピック: 統合監査証跡の管理
23.1.6 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。
データベースが書込み可能でない場合(データベースのマウント中など)、データベースがクローズされている場合、または読取り専用の場合は、Oracle Databaseによって、監査レコードがこれらの外部ファイルに書き込まれます。これらの外部ファイルのデフォルトの場所は、$ORACLE_BASE/audit/$ORACLE_SIDディレクトリです。
DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILESプロシージャを実行して、データベースにファイルをロードできます。多くのオペレーティング・システム監査レコードを統合監査証跡に移動している場合は、パフォーマンスが影響を受ける場合があるので注意してください。
データベースが書込み可能な場合に、これらのファイルの監査レコードをAUDSYSスキーマ監査表に移動するには:
監査レコードはAUDSYSスキーマ監査表に即座にロードされ、$ORACLE_BASE/audit/$ORACLE_SIDディレクトリから削除されます。
親トピック: 統合監査証跡の管理
23.1.7 統合監査の無効化
統合監査を無効にすることができます。
-
現在有効となっている統合監査ポリシーをすべて無効化します。
このステップは、このプロシージャが完了したときに、データベースが混合モード監査に入ることを防ぎます。
-
AUDIT_ADMINロールを割り当てられているユーザーとして、データベース・インスタンスにログインします。 -
有効な統合監査ポリシーを検索するには、
AUDIT_UNIFIED_ENABLED_POLICIESデータ・ディクショナリ・ビューのPOLICY_NAME列およびENABLED_OPT列を問い合せます。 -
NOAUDIT POLICY文を実行して有効になっている各ポリシーを無効にします。たとえば、ユーザー
psmithに適用されたポリシーを無効にするには、次のようにします。NOAUDIT POLICY audit_pol BY psmith;
-
-
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が再起動します。
関連トピック
親トピック: 統合監査証跡の管理
23.2 監査証跡のアーカイブ
従来のオペレーティング・システム、統合データベースおよび従来のデータベースの監査証跡をアーカイブできます。
- 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。 - 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、削除する必要があります。
親トピック: 監査証跡の管理
23.2.1 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。
アップグレードしたデータベースから従来のオペレーティング・システムの監査証跡をアーカイブするには、プラットフォーム固有のオペレーティング・システム・ツールを使用して、従来のオペレーティング・システム監査ファイルのアーカイブを作成します。
-
従来のオペレーティング・システム監査ファイルをアーカイブするには、次の方法を使用します。
-
Oracle Audit Vault and Database Firewallを使用します。Oracle Databaseとは別にOracle Audit Vault and Database Firewallをインストールします。
-
テープまたはディスクにバックアップを作成します。監査ファイルの圧縮ファイルを作成し、それをテープまたはディスクに格納できます。詳細は、使用しているオペレーティング・システムのマニュアルを参照してください。
-
その後、監査証跡の領域を解放して監査証跡管理を容易にするために、従来のオペレーティング・システム監査レコードをパージ(削除)する必要があります。
親トピック: 監査証跡のアーカイブ
23.2.2 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、パージする必要があります。
アーカイブと削除により、監査証跡の領域が解放され、データベース監査証跡の削除が容易になります。
統合および従来のデータベースの監査証跡のアーカイブを作成するには、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$ ...;
関連トピック
親トピック: 監査証跡のアーカイブ
23.3 監査証跡レコードの削除
DBMS_AUDIT_MGMT PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。
- 監査証跡レコードの削除について
様々な方法を使用して、監査証跡レコードを削除できます。 - 監査証跡の削除方法の選択
スケジュールに基づいて定期的に、または日時を指定して削除を実行できます。 - 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。 - 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILプロシージャを使用して、監査証跡を手動で削除できます。 - 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。 - 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
関連トピック
親トピック: 監査証跡の管理
23.3.1 監査証跡レコードの削除について
様々な方法を使用して、監査証跡レコードをパージできます。
監査証跡レコードは、定期的にアーカイブしてから削除するようにしてください。監査証跡レコードのサブセットを削除したり、指定した時間間隔で実行する削除ジョブを作成したりできます。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では、監査証跡からのレコードの削除はすべて例外なく監査されます。
関連項目:
-
DBMS_AUDIT_MGMTPL/SQLパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください -
DBA_AUDIT_MGMT関連のビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
親トピック: 監査証跡レコードの削除
23.3.2 監査証跡の削除方法の選択
スケジュールに基づいて、または日時を指定して削除を実行できます。
- スケジュールに基づいた監査証跡の定期的な削除
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的に削除できます。 - 指定時間での監査証跡の手動削除
削除スケジュールを作成するのではなく、1回の手動操作で監査レコードを即座に削除できます。
親トピック: 監査証跡レコードの削除
23.3.2.1 スケジュールに基づいた監査証跡の定期的なパージ
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的にパージできます。
- 必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除ジョブを作成してスケジューリングします。
関連トピック
親トピック: 監査証跡の削除方法の選択
23.3.2.2 指定時間での監査証跡の手動パージ
削除スケジュールを作成するのではなく、1回の手動操作で監査レコードを即座に削除できます。
- 必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除操作を実行します。
関連トピック
親トピック: 監査証跡の削除方法の選択
23.3.3 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。
- 自動削除ジョブのスケジューリングについて
監査証跡全体を削除することも、タイムスタンプより前に作成された一部の監査証跡のみを削除することもできます。 - ステップ1: オンラインREDOログとアーカイブREDOログのサイズのチューニング(必要に応じて)
削除プロセスでは、REDOログが追加生成される場合があります。 - ステップ2: タイムスタンプおよびアーカイブ方針の計画
監査レコードをアーカイブするには、これらのレコードのタイムスタンプを記録する必要があります。 - ステップ3: 監査レコードのアーカイブ・タイムスタンプの設定(必要に応じて)
すべての監査証跡を削除する場合は、このステップを省略できます。 - ステップ4: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMTPL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
親トピック: 監査証跡レコードの削除
23.3.3.1 自動削除ジョブのスケジューリングについて
監査証跡全体を削除することも、タイムスタンプより前に作成された一部の監査証跡のみを削除することもできます。
タイムスタンプより前に作成された個々の監査レコードを削除できます。
監査証跡(特に、大きなもの)を削除する場合は、完了するまでに時間がかかることがあります。削除ジョブは、データベースの負荷が低い時間帯に実行するようにスケジューリングするのが賢明です。
競合しないかぎり、異なる監査証跡タイプに対する複数の削除ジョブを作成できます。たとえば、標準監査証跡表の削除ジョブを作成し、その後でファイングレイン監査証跡表の削除ジョブを作成できます。ただし、DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STDまたはDBMS_AUDIT_MGMT.AUDIT_TRAIL_ALLプロパティを使用して、両方のタイプまたはすべてのタイプをまとめて処理する削除ジョブを作成することはできません。また、DBMS_SCHEDULER PL/SQLパッケージで作成されるジョブは読取り専用データベースで実行されないことに注意してください。DBMS_AUDIT_MGMTで作成される自動削除ジョブではDBMS_SCHEDULERパッケージを使用してタスクをスケジューリングします。したがって、これらのジョブは読取り専用モードで開いているデータベースまたはPDBで実行できません。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
23.3.3.2 ステップ1: オンラインREDOログとアーカイブREDOログのサイズのチューニング(必要に応じて)
削除プロセスでは、REDOログが追加生成される場合があります。
-
必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
統合監査環境では、混合モードの監査環境と同じ数のREDOログは削除プロセスで生成されないため、統合監査に移行している場合は、このステップを省略できます。
関連項目:
ログ・ファイルのチューニングの詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
23.3.3.3 ステップ2: タイムスタンプおよびアーカイブ方針の計画
監査レコードをアーカイブするには、これらのレコードのタイムスタンプを記録する必要があります。
-
タイムスタンプの日付を見つけるために、
DBA_AUDIT_MGMT_LAST_ARCH_TSデータ・ディクショナリ・ビューを問い合せます。
その後、削除を実行すると、このアーカイブ・タイムスタンプの日付より前に作成された監査証跡レコードのみが削除されます。
レコードのタイムスタンプを設定したら、アーカイブを開始できます。
23.3.3.4 ステップ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インスタンス・ノードの時間を同期化できます。
削除ジョブのタイムスタンプを設定するには:
親トピック: 監査証跡の自動削除ジョブのスケジューリング
23.3.3.5 ステップ4: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMT PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
-
DBMS_AUDIT_MGMT.CREATE_PURGE_JOBPL/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の監査証跡がクリーンアップされます。ジョブをルートに作成した場合は、ルートからのみ表示可能です。したがって、有効化、無効化および削除はルートからのみ可能です。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
23.3.4 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILプロシージャを使用して、監査証跡を手動でパージできます。
- 監査証跡の手動削除について
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。 - DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILを使用した監査証跡の手動削除
準備ステップの完了後、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILプロシージャを使用して、監査証跡を手動で削除できます。
親トピック: 監査証跡レコードの削除
23.3.4.1 監査証跡の手動削除について
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。
削除ジョブと同様に、アーカイブ・タイムスタンプの日付より前に作成された監査証跡レコード、または監査証跡内のすべてのレコードを削除できます。このプロシージャを実行した場合、現行の監査ディレクトリのみがクリーン・アップされます。
前のリリースの監査証跡がまだ存在しているアップグレード済のデータベースの場合は、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初期化パラメータで指定します)。
親トピック: 監査証跡の手動削除
23.3.4.2 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILを使用した監査証跡の手動パージ
準備ステップの完了後、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILプロシージャを使用して、監査証跡を手動で削除できます。
親トピック: 監査証跡の手動削除
23.3.5 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。
- 監査証跡の削除ジョブを使用可能または使用禁止にする方法
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUSプロシージャで、監査証跡削除ジョブを有効または無効にします。 - 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。 - 監査証跡の削除ジョブの削除
既存の監査証跡削除ジョブを削除できます。 - アーカイブ・タイムスタンプ設定の消去
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMPプロシージャで、アーカイブ・タイムスタンプの設定をクリアできます。
親トピック: 監査証跡レコードの削除
23.3.5.1 監査証跡の削除ジョブを使用可能または使用禁止にする方法
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プロシージャを使用します。たとえば、削除ジョブを
hrpdbPDBに作成したとします。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は、指定した削除ジョブを使用禁止にします。
-
親トピック: 他の監査証跡削除操作
23.3.5.2 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。
DBMS_AUDIT_MGMT.CREATE_PURGE_JOBプロシージャで使用される間隔設定が、この設定よりも優先されます。
-
特定のパージ・ジョブの監査証跡パージ・ジョブのデフォルト間隔を設定するには、
DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVALプロシージャを実行します。たとえば、削除ジョブを
hrpdbPDBに作成したとします。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から、このプロシージャを実行する必要があります。
親トピック: 他の監査証跡削除操作
23.3.5.3 監査証跡の削除ジョブの削除
既存の監査証跡パージ・ジョブを削除できます。
既存の削除ジョブを調べるには、DBA_AUDIT_MGMT_CLEANUP_JOBSデータ・ディクショナリ・ビューのJOB_NAMEおよびJOB_STATUS列を問い合せます。
-
監査証跡パージ・ジョブを削除するには、
DBMS_AUDIT_MGMT.DROP_PURGE_JOBPL/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から、このプロシージャを実行する必要があります。
親トピック: 他の監査証跡削除操作
23.3.5.4 アーカイブ・タイムスタンプ設定のクリア
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_TIMESTAMPPL/SQLプロシージャを使用して、監査証跡タイプと、マルチテナント環境の場合はコンテナ・タイプを指定します。たとえば、削除ジョブを
hrpdbPDBに作成したとします。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.3.6 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
例23-1の疑似コードはデータベース監査証跡削除操作を作成し、この操作は、ユーザーが統合監査証跡に対してDBMS_ADUIT.CLEAN_AUDIT_TRAILプロシージャを起動することでコールします。
この削除操作では、ループを使用することで、前回アーカイブされたタイムスタンプより前に作成されたレコードを削除します。ループは監査レコードをアーカイブし、どの監査レコードがアーカイブされたかを計算してSetCleanUpAuditTrailコールを使用して最終アーカイブ・タイムスタンプを設定し、それからCLEAN_AUDIT_TRAILプロシージャをコールします。この例では、重要なステップはboldで示しています。
例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 */ /
親トピック: 監査証跡レコードの削除
23.4 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
表23-1に、これらのビューを示します。
表23-1 監査証跡の管理設定に関する情報を表示するビュー
| ビュー | 説明 |
|---|---|
|
|
従来(統合以外)の監査証跡の削除イベントの履歴が表示されます。定期的に、 DELETE FROM DBA_AUDIT_MGMT_CLEAN_EVENTS; このビューは、読取り/書込みデータベースにのみ適用されます。読取り専用データベースの場合、削除イベントの履歴はアラート・ログにあります。 統合監査の場合、削除されたイベントの履歴を検索するには、 |
|
|
現在構成されている監査証跡の削除ジョブが表示されます。 |
|
|
現在構成されている監査証跡プロパティが表示されます。これらのプロパティは、 |
|
|
監査証跡の削除用に設定された最後のアーカイブ・タイムスタンプが表示されます。 |
関連項目:
これらのビューの詳細は、Oracle Databaseリファレンスを参照してください。親トピック: 監査証跡の管理