Oracle Databaseでは、ユーザーの操作履歴やシステムイベントを記録する監査(Audit)ログを有効にすることで、セキュリティ強化やトラブルシューティングに役立てることができます。
本記事では、監査ログの保存先を確認・変更する方法と、ログの肥大化を防ぐローテーション設定について解説します。
監査ログの保存先の確認方法
Oracleの監査ログには大きく分けて2種類あり、それぞれ保存先が異なります。
1. OS監査ログ(Audit File)
初期化パラメータAUDIT_FILE_DEST
で保存先が決まります。
SHOW PARAMETER audit_file_dest
この出力結果に表示されるディレクトリが、OS上のログ出力先です。
2. DB監査ログ(DBAUD)
監査データがSYS.AUD$
などのデータディクショナリ表に格納されます。
SELECT * FROM dba_audit_trail;
DB監査を使用するか、OS監査を使用するかはAUDIT_TRAIL
パラメータによって決まります。
SHOW PARAMETER audit_trail
- DB → データベースに保存
- OS → OSファイルに保存
- XML → XML形式でOSに保存
監査ログのローテーション設定(OS監査ログ)
OS監査ログは肥大化しやすいため、cronやlogrotateを用いて定期的にバックアップ・削除するのが一般的です。
logrotateの設定例(Linux)
/etc/logrotate.d/oracle_audit
というファイルを作成し、以下を記述します:
/u01/app/oracle/admin/ORCL/adump/*.aud {
daily
missingok
rotate 7
compress
notifempty
create 640 oracle dba
}
この設定では、監査ログを毎日ローテーションし、最大7世代をgzip圧縮付きで保存します。
監査ログのローテーション設定(DB監査ログ)
DB監査ログを削除するには、AUD$
テーブルから直接削除します。ただし、DBのパフォーマンスに影響するため、スケジュールジョブなどで制御することが推奨されます。
DB監査ログの削除SQL例
DELETE FROM sys.aud$ WHERE ntimestamp# < SYSDATE - 30;
COMMIT;
上記は、30日以上前の監査ログを削除する例です。必要に応じてバックアップ後に削除します。
補足:Unified Audit(統合監査)のログ確認
Oracle 12c以降ではUnified Audit
が導入されており、UNIFIED_AUDIT_TRAIL
ビューでログを確認できます。
SELECT event_timestamp, username, action_name
FROM unified_audit_trail
WHERE event_timestamp > SYSDATE - 1;
Unified Auditはaud$
とは独立して動作し、ログローテーションの方針も異なるため別途管理が必要です。
まとめ
Oracleの監査ログはシステムの安全性を保つうえで不可欠ですが、適切な保存先の設定とローテーション運用が不可欠です。
OS監査ログはlogrotateなどの仕組みで自動管理し、DB監査ログは定期的な削除ジョブを設定しましょう。環境や要件に応じて、Unified Auditの利用も検討するとよいでしょう。