LoginSignup
1
0

Oracle Databaseの監査機能(Unified Audit)について

Last updated at Posted at 2023-05-31

以前のOracle Databaseの監査機能について記事が古くなってきたので、改めて記述し直そうと思います。

Oracle Databaseの監査機能は、従来からの監査機能(DBA監査、標準監査)と12cから使用できるUnified Auditの2種類に大きく分けることができます。
image.png

12cから使用可能なUnified Auditは、従来の監査の問題点を解決するために新しいアーキテクチャで開発した監査機能として提供しており、基本的にUnified Auditの使用が推奨されています。とはいえ、OSファイルやXML形式による監査ログの運用を好むデータベースも多々あるかと思います。
両方の監査機能は変わらず併用することができましたが、23cからは正式に 非サポートとなりますので、改めてUnified Auditの特徴や使い方に改めてご紹介します。

Unified Auditの特徴

Unified Auditの大きな特徴としては、

  • 監査レコードは、DB表(AUDSYS.AUD$UNIFIED)に格納される (※18cからはsyslog出力が可能)
  • 書き込み不可の場合は、$ORACLE_BASE/audit/ORACLE_SIDにファイルとして出力
  • DBA監査、Recovery Manager, Data Pump, SQL*Loaderなどのユーティリティ系のログも統合
  • 監査が起動する条件を細かく指定できる
  • Unified_Audit_Trailビューでログ・レコードを参照する

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

Unified Auditの監査ポリシーには、データベースやユーザーのすべてのアクションを対象にするActions Allという定義が作成できますが、ログ・レコードが膨大になるため安易な使用は控えたほうが無難です。
また、Unified Auditは、ログレコードをDB内に格納するという性質上、監査対象を絞り込むことは、監査ログのストレージ領域の削減とデータベースへのパフォーマンスへの影響を最小化する大きなメリットがあります。監査ポリシーの作成方法については、こちらを確認して下さい。

下記は、いくつか条件指定の例を紹介します。

  • 特定のユーザーのUPDATEとDELETE文のDMLを監査
CREATE AUDIT POLICY audPolicy1 
  ACTIONS UPDATE ON SecretTbl, DELETE ON SecretTbl
  EVALUATE PER STATEMENT;
AUDIT POLICY audPolicy1 BY UserX, UserY;

# ユーザー指定しない場合は、全ユーザーが対象
AUDIT POLICY audPolicyl;
# EXCEPTを指定すると指定ユーザー以外が対象
AUDIT POLICY audPolicy1 EXCEPT UserX, UserY;
  • WHEN句で、IPアドレスがNULL(ローカル接続)の場合のみの条件を追加
CREATE AUDIT POLICY audPolicy2 
  ACTIONS UPDATE ON SecretTbl, DELETE ON SecretTbl
  WHEN 'SYS_CONTEXT(''USERENV'',''IP_ADDRESS'') IS NULL'
  EVALUATE PER STATEMENT;
AUDIT POLICY audPolicy2;
  • Actions ALLだけれども、JDBC接続のAPサーバのアクセスを除く条件を指定
CREATE AUDIT POLICY audPolicy3 
  ACTIONS ALL on SecretTbl
  WHEN 'SYS_CONTEXT(''USERENV'',''HOST'') IN ''dbsec01.jp.oracle.com,dbsec02.jp.oracle.com'' and SYS_CONTEXT(''USERENV'',''MODULE'') NOT IN ''JDBC Thin Client'''
  EVALUATE PER STATEMENT;
AUDIT POLICY audPolicy3;
  • DATAPUMPのエクスポートを監査
CREATE AUDIT POLICY audPolicy3 ACTIONS COMPONENT=DATAPUMP EXPORT;
AUDIT POLICY audPolicy3 BY SYSTEM;

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 => FALSE);
  • 指定した日時以前の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;

Unified Auditとログサービスとの連携

Unified Auditには、SQLでUnified Audit Trailビューから監査レコードにアクセスすることができますが、見やすくビジュアライスしてレポートしたり、細かくログ分析する場合には、ログ製品やBIツールと連携するのが実用的です。

従来では、Audit Vault and Database FirewallというDB監査のオンプレミス製品がありますが、クラウドには、Data SafeまたはLogging Analyticsというサービスがあります。これらのサービスにログを取り込ませた後は、DB側のUnified Auditのログレコードを削除して軽くするすることができるので、監査ログの長期保存には、必要なストレージを柔軟に追加できるクラウドのストレージと相性が良いかと思います。

OCI DataSafeでBaseDB/ExaDB-Dの監査ログを取り込んで分析する
OCI Logging AnalyticsでOracle Databaseの関連ログを取り込んで分析する
OCI Logging AnalyticsでDatabaseの監査表やユーザー表を分析する

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0