Oracle Cloud Databaseの統合監査 - Unified Audit -


Unified Auditは、Oracle Database 12.1から追加されている新しい監査機能です。これは従来の初期化パラメータファイルのAudit Trailで制御する標準監査の機能をより使いやすくアーキテクチャ変更されたものです。
Oracle Cloud Database Servicesで提供される各データベース・サービスは、基本的にはこのUnified AuditがMixed Modeというデフォルト設定になっています。

Unified Auditの特徴

Unified Auditと従来の監査機能との比較

ログはAUDSYS.AUD$UNIFIED表に格納され、UNIFIED_AUDIT_TRAILビューを参照して確認する

条件による監査対象の絞り込み

監査対象を絞り込むことは監査ログのストレージ領域の削減とデータベースへのパフォーマンスへの影響を最小化することのメリットがあります

  • 特定のユーザーのUPDATE,DELETE文のDMLを監査
CREATE AUDIT POLICY audPolicy1 ACTIONS UPDATE ON HCM.EMPLOYEES, DELETE ON HCM.EMP_EXTENDED
EVALUATE PER STATEMENT;
AUDIT POLICY audPolicy1 BY UserX, UserY;
  • 指定されたユーザー以外のすべてのアクセスを監査
CREATE AUDIT POLICY audPolicy2 ACTIONS ALL ON HCM.EMPLOYEES, ALL ON HCM.EMP_EXTENDED; 
AUDIT POLICY audPolicy2 EXCEPT UserX, UserY;
  • 9時~17時以外のすべてのアクセスを監査
CREATE AUDIT POLICY audPolicy3 WHEN trunc(to_char(SYSDATE,‘hh24’)) >17 OR trunc(to_char(SYSDATE,‘hh24’)) <9 ACTIONS ALL ONLY TOPLEVEL;
AUDIT POLICY audPolicy3 ; 
  • DATAPUMPのエクスポートを監査
CREATE AUDIT POLICY audPolicy4 ACTIONS COMPONENT=DATAPUMP EXPORT;
AUDIT POLICY audPolicy4 BY SYSTEM;
  • SCOTT.EMP表のすべてのDMLを監査、ただし、IPアドレスがNULL(ローカル接続)のみ監査
CREATE AUDIT POLICY ALL_ACTIONS_EMP
  ACTIONS ALL ON SCOTT.EMP 
  WHEN 'SYS_CONTEXT(''USERENV'',''IP_ADDRESS'') IS NULL'
  EVALUATE PER STATEMENT CONTAINER = ALL;
AUDIT POLICY ALL_ACTIONS_EMP;

Mixed Mode (混合モード)とは?

  • Mixed Modeは、従来の監査機能とUnified Auditの両方が使用可能
  • 12c以降、Mixed Modeがデフォルト設定になっている ※Autonomous DBはUnified Auditのみ
  • DBCAでDBを作成した場合、または、Oracle Cloud Database ServicesのDBは ORA_LOGON_FAILURESとORA_SECURECONFIGのポリシーがデフォルト有効化される
  • Mixed Modeの場合は、以下の制限事項に注意
    • SYS,SYSASM等の監査ログファイルは、audit_file_destパラメータで指定されたディレクトリにOSファイルとして出力される
    • RMANやDatapump等のユーティリティのログはUnified Auditに出力されない
  • Mixed ModeからPure Unified Auditに完全移行すると、上記のログはUnfired Auditへ集約される

Unified Auditの確認方法

SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
-------------------------------------------
TRUE   -->  Unified Auditing
FALSE -->   Mixed Mode

Mixed ModeからPure Unified Auditの移行手順

Pure Unified Auditの完全移行は必須ではない
従来の監査機能は廃止して、完全にUnified Auditだけを使用したい場合は以下で移行する

データベースのシャットダウン、リスナーの停止
$ORACLE_HOME/rdbms/libに移動
(Unix) make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
(Windows) %ORACLE_HOME%/rdbms/bin/orauniaud12.dll.optionファイルをorauniaud12.dllにリネーム
リスナー、データベースの起動

Unified Auditの削除

  • すべてのUnified Auditを削除する
EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,  use_last_arch_timestamp => TRUE);
  • 指定した日時以前のUnified Auditを削除する
EXEC
  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
   AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
   last_archive_time => TO_TIMESTAMP('2020-01-01:00:00.00','YYYY-MM-HH24:MI:SS.FF'));
END;
/

EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,  use_last_arch_timestamp => False);

Unified Auditのデフォルト表領域の変更

監査ログによるSYSAUXの肥大化を避けたい場合は別の表領域に予め移動しておく

表領域の作成
CREATE BIGFILE TABLESPACE AUDIT DATAFILE SIZE 500G AUTOEXTEND ON NEXT 100G MAXSIZE 1000G;

表領域の移動
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION (
audit_trail_type   => DBMS_AUDIT_MGMT. AUDIT_TRAIL_UNIFIED,
audit_trail_location_value => ‘AUDIT’);
END;

SQLでUnified Audit Trailビューから監査レコードにアクセスすることができますが、
不信な挙動やアクセスがあった場合にアラート、グラフィカルなダッシュボード画面で定常的にモニタリングする、といった運用監視の自動化には、Oracle Management CloudやData Safeといった他サービスと組み合わせることでより使いやすくなります。