33 監査証跡の管理
AUDIT_ADMIN
ロールを付与されているユーザーは、監査証跡の管理、監査証跡のアーカイブおよび監査証跡レコードの削除を実行できます。
- 統合監査証跡の管理
監査はデフォルトで有効ですが、監査レコードがディスクに書き込まれるタイミングを制御できます。 - 監査証跡のアーカイブ
従来のオペレーティング・システム、統合データベースおよび従来のデータベースの監査証跡をアーカイブできます。 - 監査証跡レコードの削除
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。 - 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
親トピック: 監査を使用したデータベース・アクティビティの監視
33.1 統合監査証跡の管理
監査はデフォルトで有効ですが、監査レコードがディスクに書き込まれるタイミングを制御できます。
- 監査レコードが作成されるときと場所
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。 - 強制的に監査されるアクティビティ
セキュリティ・センシティブな特定のデータベース・アクティビティは常に監査され、このような監査構成は無効化できません。 - カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。 - 統合監査証跡レコードのディスク領域サイズ
統合監査証跡レコードには、従来の監査レコードよりも少なくとも50%多いディスク領域が必要です。 - AUDSYSスキーマへの統合監査証跡レコードの書込み
Oracle Databaseは、監査レコードをAUDSYS
スキーマの内部リレーショナル表に自動的に書き込みます。 - SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込み
初期化パラメータを設定することによって、SYSLOGまたはWindowsイベントビューアに統合監査証跡レコードを書き込むことができます。 - 監査レコードがオペレーティング・システムに書き込まれる場合
データベース表が統合監査レコードを受け入れられない場合、これらのレコードはオペレーティング・システムの過剰監査ファイル(.bin
形式)に書き込まれます。 - 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。 - UNIFIED_AUDIT_TRAILの問合せおよびパージのパフォーマンスの管理
AUDSYS.AUD$UNIFIED
表が存在するパーティションが大きすぎる場合は、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューに対する問合せおよびパージが完了するまでに長い時間がかかります。 - Oracle Data Pumpを使用した統合監査証跡のエクスポートおよびインポート
Oracle Database Pumpのエクスポートおよびインポート用ダンプ・ファイルに統合監査証跡を含めることができます。
関連トピック
親トピック: 監査証跡の管理
33.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
タイムスタンプに基づいています。データベース・バージョンがパーティショニングをサポートしていない場合、内部表は標準のもので、パーティション化されていない表です。
監査証跡レコードの生成と挿入は、ユーザー・トランザクションのコミットからは独立して実行されます。つまり、ユーザー・トランザクションがロールバックされても、監査証跡レコードはコミットされたままになります。
データベース・ユーザーがデータベースに接続した時点で有効になる統合監査ポリシーの文監査オプションと権限監査オプションは、そのセッションの持続期間中は有効です。統合監査ポリシーは、作成し有効にすると、それが有効になっているユーザーの実行中のセッションで、そのユーザーがデータベース・セッションを再起動する必要なく即座に適用されます。これは、統合監査ポリシーが無効になっている場合でも当てはまります。ただし、ALTER AUDIT POLICY
文の使用による既存の統合監査ポリシー定義に対する変更(文の監査オプション、権限の監査オプションおよび監査条件に関する変更)は、そのポリシーが有効になっているユーザーの後続のセッションで適用されます。
一方、オブジェクト監査オプションについて変更した内容は、カレント・セッションでただちに有効になります。
デフォルトでは、監査証跡レコードはSYSAUX
表領域のAUDSYS
スキーマに書き込まれます。DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
プロシージャを使用して、暗号化されている表領域を含め、異なる表領域を指定できます。
33.1.2 強制的に監査されるアクティビティ
セキュリティ・センシティブな特定のデータベース・アクティビティは常に監査され、このような監査構成は無効化できません。
UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューでは、SYSDBA
、SYSBACKUP
、SYSKM
などの管理ユーザーからのアクティビティを取得します。さらに、SQLファイアウォールのすべての管理アクションが強制的に監査されます。
統合監査証跡を監査する必要はありません。統合監査証跡は、AUDSYS
スキーマ内の読取り専用表にあります。したがって、統合監査証跡ビューに対するDMLは許可されません。AUDSYS
スキーマからの基礎となるディクショナリ表に対するDMLおよびDDL操作も許可されません。
Oracle DatabaseポリシーORA$MANDATORY
は、強制的に監査されたアクティビティが実行されると、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューのUNIFIED_AUDIT_POLICIES
列に示されます。強制的に監査されたアクティビティを追跡する統合監査ポリシーが他にもある場合は、ORA$MANDATORY
が常に最初にこの列に示されます。
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 Optimizerディクショナリ表内の機密列へのアクセス。
DBMS_STATS
パッケージによるこれらの表列への内部アクセスでは、必須の監査レコードは生成されないということに注意してください。事前定義されたORA$DICTIONARY_SENS_COL_ACCESS
監査ポリシーを使用して、これらの表を監査できます。オプティマイザ・ディクショナリ表を次に示します。オプティマイザ・ディクショナリ表 列 SYS.HIST_HEAD$
minimum
、maximum
、lowval
、hival
SYS.HISTGRM$
endpoint
、epvalue_raw
SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY
minimum
、maximum
、lowval
、hival
SYS.WRI$_OPSTAT_HISTGRM_HISTORY
endpoint
、epvalue_raw
-
ブロックチェーンおよび不変表に対する次の操作:
-
CREATE TABLE
-
DROP TABLE
-
失敗した
ALTER TABLE
操作 -
失敗した
DELETE
操作 -
失敗した
FLASHBACK TABLE
操作 -
失敗した
RENAME
操作 -
失敗した
TRUNCATE TABLE
操作 -
失敗した
UPDATE
操作
-
親トピック: 統合監査証跡の管理
33.1.3 カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。
カーソルを再利用させるイベントは、次のとおりです。
-
カーソルを再利用のためにオープン状態にしておく、Oracle Formsなどのアプリケーション
-
新しいバインド変数を使用したカーソルの継続実行
-
1つのカーソルを再利用するためにPL/SQLエンジンにより文が最適化される場合に、PL/SQLループ内で実行される文
監査は、カーソルが共有されているかどうかの影響を受けません。それぞれのユーザーは、カーソルの最初の実行時に自分の監査証跡レコードを作成します。
親トピック: 統合監査証跡の管理
33.1.4 統合監査証跡レコードのディスク領域サイズ
統合監査証跡レコードでは、従来の監査レコードよりも少なくとも50%多いディスク領域が必要です。
ベスト・プラクティスとして、統合監査証跡レコードを定期的にアーカイブおよびパージすることをお薦めします。
関連トピック
親トピック: 統合監査証跡の管理
33.1.5 AUDSYSスキーマへの統合監査証跡レコードの書込み
Oracle Databaseは、監査レコードをAUDSYS
スキーマの内部リレーショナル表に自動的に書き込みます。
Oracle Database 12cリリース1 (12.1)では、監査レコードをメモリー(キュー書込みモード)にキューイングし、AUDSYS
スキーマ監査表に定期的に書き込むオプションがありました。ただし、Oracle Database 12cリリース2 (12.2)以降では、即時書込みモードおよびキュー書込みモードは非推奨です。制御するパラメータ(DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE
およびDBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE
)は、まだ表示可能ですが、機能はありません。
監査レコードをAUDSYS
スキーマのリレーショナル表に書き込むと、インスタンスがクラッシュした場合やSHUTDOWN ABORT
操作時に監査レコードが失われるリスクが回避されます。デフォルトでは、AUDSYS
スキーマはディクショナリ保護されており、これは他のユーザーがシステム権限(ANY
権限を含む)を使用してデータを変更または改ざんできないことを意味します。新しい機能によって、監査証跡とデータベース全体のパフォーマンスも向上します。
Oracle Database 12cリリース1 (12.1)からアップグレードし、そのリリースの統合監査に移行した場合は、DBMS_AUDIT_MGMT.TRANSFER_UNIFIED_AUDIT_RECORDS
プロシージャを使用して、以前のリリースで生成された監査レコードをAUDSYS
監査内部表に転送することをお薦めします。アップグレード後の統合監査レコードの転送の詳細は、Oracle Databaseアップグレード・ガイドを参照してください。
関連トピック
親トピック: 統合監査証跡の管理
33.1.6 SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込み
初期化パラメータを設定することによって、SYSLOGまたはWindowsイベントビューアに統合監査証跡レコードを書き込むことができます。
- SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込みについて
この機能を使用して、一部の主要な統合監査フィールドをSYSLOGまたはWindowsイベントビューアにコピーできます。 - SYSLOGおよびWindowsイベントビューアでの統合監査証跡の取得の有効化
統合監査証跡レコードのサブセットをUNIX SYSLOGまたはWindowsイベントビューアに書き込むことができます。
親トピック: 統合監査証跡の管理
33.1.6.1 SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込みについて
この機能を使用すると、一部の主要な統合監査フィールドをSYSLOGまたはWindowsイベントビューアにコピーできます。
UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューの統合監査レコードのキー・フィールドのみがSYSLOGにコピーされます。統合監査環境のSYSLOGレコードによって、操作の整合性が証明されます。
この機能は、UNIXシステムおよびMicrosoft Windowsシステムの両方で構成できます。Windowsシステムでは、これを有効または無効のいずれかにします。有効な場合は、レコードがWindowsイベントビューアに書き込まれます。
UNIXシステムでは、SYSLOGに対する統合監査証跡レコードの取得を微調整して、SYSLOGレコードが送信される機能を指定したり、レコードの重大度レベル(たとえば、デバッグ関連メッセージを取得する場合はDEBUG
)を指定したりできます。
表33-1は、SYSLOGおよびWindowsイベントビューアに書き込まれる統合監査レコード・フィールドに指定される名前を、UNIFIED_AUDIT_TRAIL
ビューの対応する列名にマップしたものです。
表33-1 SYSLOGおよびWindowsイベントビューアの監査レコードのフィールド名
フィールド名 | UNIFIED_AUDIT_TRAILの列名 | 列タイプ | 列の説明 |
---|---|---|---|
|
|
|
監査レコードのタイプ |
|
|
|
データベース識別子 |
|
|
|
セッション識別子 |
|
|
|
セッションでのクライアント識別子 |
|
|
|
システムの各監査レコードの識別子 |
|
|
|
システムで実行されている各文の識別子 |
|
|
|
セッション・ユーザー |
|
|
|
監査対象イベントの有効なユーザー |
|
|
|
監査対象イベントのアクション・コード |
|
|
|
監査対象イベントのリターン・コード |
|
|
|
オブジェクトのスキーマ名。 |
|
|
|
オブジェクト名 |
|
|
|
統合監査レコードが生成されるコンテナのGUID |
33.1.7 監査レコードがオペレーティング・システムに書き込まれる場合
データベース表が統合監査レコードを受け入れられない場合、これらのレコードはオペレーティング・システムの過剰監査ファイル(.bin
形式)に書き込まれます。
統合監査の.bin
過剰ファイルのデフォルトの場所は次のとおりです。
- プラガブル・データベース(PDB)の場合:
$ORACLE_BASE/audit/$ORACLE_SID/PDB_GUID
- CDBルートの場合:
$ORACLE_BASE/audit/$ORACLE_SID/
データベース表への書込み機能は、監査表領域がオフライン、表領域が読取り専用、表領域がいっぱい、データベースが読取り専用などの場合、失敗する可能性があります。統合監査レコードは、OSディスク領域がいっぱいになるまで、OSの過剰ファイルに書き込まれます。この時点で、OSに監査レコードの空き領域がない場合、ユーザー監査可能なトランザクションは「ORA-02002 監査証跡への書込み中にエラーが発生しました。」
エラーで失敗します。この問題を回避するために、監査証跡を定期的に削除することをお薦めします。
関連トピック
親トピック: 統合監査証跡の管理
33.1.8 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。
データベースが書込み可能でない場合(データベースのマウント中など)、データベースがクローズされている場合、または読取り専用の場合は、Oracle Databaseによって、監査レコードがこれらの外部ファイルに書き込まれます。これらの外部ファイルのデフォルトの場所は、$ORACLE_BASE/audit/$ORACLE_SID
ディレクトリです。
DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES
プロシージャを実行して、データベースにファイルをロードできます。多くのオペレーティング・システム監査レコードを外部ファイルに移動している場合は、パフォーマンスが影響を受ける場合があるので注意してください。
データベースが書込み可能な場合に、これらのファイルの監査レコードをAUDSYS
スキーマ監査表に移動するには:
監査レコードはAUDSYS
スキーマ監査表に即座にロードされ、$ORACLE_BASE/audit/$ORACLE_SID
ディレクトリから削除されます。
親トピック: 統合監査証跡の管理
33.1.9 UNIFIED_AUDIT_TRAILの問合せおよびパージのパフォーマンスの管理
AUDSYS.AUD$UNIFIED
表が存在するパーティションが大きすぎる場合は、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューに対する問合せおよびパージが完了するまでに長い時間がかかります。
親トピック: 統合監査証跡の管理
33.1.10 Oracle Data Pumpを使用した統合監査証跡のエクスポートおよびインポート
Oracle Database Pumpのエクスポートおよびインポート用ダンプ・ファイルに統合監査証跡を含めることができます。
統合監査証跡は、Oracle Data Pumpを使用した、データベース全体または部分的なデータベースのいずれかのエクスポートおよびインポート操作に自動的に含められます。たとえば、部分的データベース・エクスポートの操作で統合監査証跡の表のみをエクスポートする必要がある場合は、次のexpdp
コマンドを入力できます。
- SQL*Plusで、スピルオーバー監査ファイルに書き込まれたすべてのオペレーティング・システム監査レコードを統合監査証跡の表に移動します。これにより、すべてのレコードがエクスポートされます。
- オペレーティング・システムのプロンプトから、次のコマンドを実行します。
expdp system full=y directory=aud_dp_dir logfile=audexp_log.log dumpfile=audexp_dump.dmp version=18.02.00.02.00 INCLUDE=AUDIT_TRAILS Password: password
次に、エクスポート・ダンプ・ファイルを読み込んで、エクスポートされたすべてのコンテンツをインポートできます。この操作では、統合監査証跡表のみがインポートされます。
impdp system
full=y
directory=aud_dp_dir
dumpfile=audexp_dump.dmp
logfile=audimp_log.log
Password: password
この操作を実行するために特別な構成を行う必要はありません。ただし、エクスポート操作を実行する場合はEXP_FULL_DATABASE
ロールを持っている必要があり、インポート操作を実行する場合はIMP_FULL_DATABASE
ロールを持っている必要があります。
親トピック: 統合監査証跡の管理
33.2 監査証跡のアーカイブ
従来のオペレーティング・システム、統合データベースおよび従来のデータベースの監査証跡をアーカイブできます。
- 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。 - 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、削除する必要があります。
親トピック: 監査証跡の管理
33.2.1 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。
ノート:
Oracle Database 23cでは、従来の監査はサポートされなくなりました。かわりに統合監査を使用することをお薦めします。
親トピック: 監査証跡のアーカイブ
33.2.2 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、パージする必要があります。
アーカイブしてパージすると、データベース監査証跡のパージが容易になります。
統合および従来のデータベースの監査証跡のアーカイブを作成するには、Oracle Audit Vault and Database FirewallまたはOracle Data Safeを使用します。これらの製品は、どちらもOracle Databaseとは別にインストールします。
ノート:
Oracle Database 23cでは、従来の監査はサポートされなくなりました。かわりに統合監査を使用することをお薦めします。アーカイブが完了したら、データベース監査証跡の内容を削除できます。
関連トピック
親トピック: 監査証跡のアーカイブ
33.3 監査証跡レコードの削除
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。
- 監査証跡レコードの削除について
様々な方法を使用して、監査証跡レコードを削除できます。 - 監査証跡の削除方法の選択
スケジュールに基づいて定期的に、または日時を指定して削除を実行できます。 - 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。 - 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動で削除できます。 - 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。 - 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
関連トピック
親トピック: 監査証跡の管理
33.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では、監査証跡からのレコードの削除はすべて例外なく監査されます。
親トピック: 監査証跡レコードの削除
33.3.2 監査証跡の削除方法の選択
スケジュールに基づいて、または日時を指定して削除を実行できます。
- スケジュールに基づいた監査証跡の定期的な削除
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的に削除できます。 - 指定時間での監査証跡の手動削除
削除スケジュールを作成するのではなく、1回の手動操作で監査レコードを即座に削除できます。
親トピック: 監査証跡レコードの削除
33.3.2.1 スケジュールに基づいた監査証跡の定期的なパージ
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的にパージできます。
- 必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除ジョブを作成してスケジューリングします。
関連トピック
親トピック: 監査証跡の削除方法の選択
33.3.2.2 指定時間での監査証跡の手動パージ
削除スケジュールを作成するのではなく、1回の手動操作で監査レコードを即座に削除できます。
- 必要に応じて、監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズをチューニングします。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除操作を実行します。
関連トピック
親トピック: 監査証跡の削除方法の選択
33.3.3 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。
- 自動削除ジョブのスケジューリングについて
監査証跡全体を削除することも、タイムスタンプより前に作成された一部の監査証跡のみを削除することもできます。 - ステップ1: オンラインREDOログとアーカイブREDOログのサイズのチューニング(必要に応じて)
削除プロセスでは、REDOログが追加生成される場合があります。 - ステップ2: タイムスタンプおよびアーカイブ方針の計画
監査レコードをアーカイブするには、これらのレコードのタイムスタンプを記録する必要があります。 - ステップ3: 監査レコードのアーカイブ・タイムスタンプの設定(必要に応じて)
すべての監査証跡を削除する場合は、このステップを省略できます。 - ステップ4: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
親トピック: 監査証跡レコードの削除
33.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で実行できません。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
33.3.3.2 ステップ1: オンラインREDOログとアーカイブREDOログのサイズのチューニング(必要に応じて)
削除プロセスでは、REDOログが追加生成される場合があります。
関連トピック
親トピック: 監査証跡の自動削除ジョブのスケジューリング
33.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インスタンス・ノードの時間を同期化できます。
関連トピック
親トピック: 監査証跡の自動削除ジョブのスケジューリング
33.3.3.5 ステップ4: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
33.3.4 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動でパージできます。
- 監査証跡の手動削除について
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。 - DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILを使用した監査証跡の手動削除
準備ステップの完了後、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動で削除できます。
親トピック: 監査証跡レコードの削除
33.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
(非推奨)初期化パラメータで指定します)。
親トピック: 監査証跡の手動削除
33.3.5 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。
- 監査証跡の削除ジョブを使用可能または使用禁止にする方法
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャで、監査証跡削除ジョブを有効または無効にします。 - 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。 - 監査証跡の削除ジョブの削除
既存の監査証跡削除ジョブを削除できます。 - アーカイブ・タイムスタンプ設定の消去
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP
プロシージャで、アーカイブ・タイムスタンプの設定をクリアできます。
親トピック: 監査証跡レコードの削除
33.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から、このプロシージャを実行する必要があります。
親トピック: 他の監査証跡削除操作
33.3.5.2 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB
プロシージャで使用される間隔設定が、この設定よりも優先されます。
親トピック: 他の監査証跡削除操作
33.3.5.3 監査証跡の削除ジョブの削除
既存の監査証跡パージ・ジョブを削除できます。
DBA_AUDIT_MGMT_CLEANUP_JOBS
データ・ディクショナリ・ビューのJOB_NAME
およびJOB_STATUS
列を問い合せます。
親トピック: 他の監査証跡削除操作
33.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
データ・ディクショナリ・ビューを問い合せます。
親トピック: 他の監査証跡削除操作
33.3.6 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
例33-1の疑似コードはデータベース監査証跡削除操作を作成し、この操作は、ユーザーが統合監査証跡に対してDBMS_ADUIT.CLEAN_AUDIT_TRAIL
プロシージャを起動することでコールします。
この削除操作では、ループを使用することで、前回アーカイブされたタイムスタンプより前に作成されたレコードを削除します。ループは監査レコードをアーカイブし、どの監査レコードがアーカイブされたかを計算してSetCleanUpAuditTrail
コールを使用して最終アーカイブ・タイムスタンプを設定し、それからCLEAN_AUDIT_TRAIL
プロシージャをコールします。この例では、重要なステップはboldで示しています。
例33-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 */ /
親トピック: 監査証跡レコードの削除
33.4 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
表33-2に、これらのビューを示します。
表33-2 監査証跡の管理設定に関する情報を表示するビュー
ビュー | 説明 |
---|---|
|
従来(統合以外)の監査証跡の削除イベントの履歴が表示されます。定期的に、 DELETE FROM DBA_AUDIT_MGMT_CLEAN_EVENTS; このビューは、読取り/書込みデータベースにのみ適用されます。読取り専用データベースの場合、削除イベントの履歴はアラート・ログにあります。 統合監査の場合、削除されたイベントの履歴を検索するには、 |
|
現在構成されている監査証跡の削除ジョブが表示されます。 |
|
現在構成されている監査証跡プロパティが表示されます。これらのプロパティは、 |
|
監査証跡の削除用に設定された最後のアーカイブ・タイムスタンプが表示されます。 |
関連トピック
親トピック: 監査証跡の管理