Database Support Blog

  • Oracle Database
2018.07.31

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

Oracle Database 18cでは統合監査の情報をData Pumpを使ってEXPORT/IMPORTできるようになっています。これにより監査証跡の分析を本番環境とは異なるデータベースで行うことが可能です。

データベース新機能ガイド 18c
 Oracle Data Pumpを使用して統合監査証跡をエクスポートおよびインポートする機能
 URL:https://docs.oracle.com/cd/E96517_01/newft/index.html
実際に試してみたところ幾つか動作に注意点がありましたので、併せてご紹介します。

エクスポート:INCLUDE=AUDIT_TRAILSオプション

統合監査の監査データをエクスポート(EXPDP)する場合はFULL=Y、INCLUDE=AUDIT_TRAILSで実行します。コマンドを実行するユーザはEXP_FULL_DATABASEロールを付与されている必要があります。

コマンドの実行により、SYS/AUDSYSの統合監査に関わるオブジェクトがエクスポートされていることがわかります。

 
 [oracle@taono18c admin]$  expdp system/oracle@pdb1 full=y directory=test_dir dumpfile=aud.dmp include=AUDIT_TRAILS
 
 Export: Release 18.0.0.0.0 - Production on Thu Jul 19 04:53:21 2018
 Version 18.2.0.0.0
 
 Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.
 
 Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
 Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@pdb1 full=y directory=test_dir dumpfile=aud.dmp include=AUDIT_TRAILS
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKER
 . . exported "SYS"."KU$_USER_MAPPING_VIEW"               6.328 KB      49 rows
 . . exported "AUDSYS"."AUD$UNIFIED":"SYS_P228"           50.96 KB       6 rows
 . . exported "SYS"."AUD$"                                35.82 KB      68 rows
 . . exported "SYS"."DAM_CONFIG_PARAM$"                   6.531 KB      14 rows
 . . exported "SYS"."DAM_CLEANUP_EVENTS$"                     0 KB       0 rows
 . . exported "SYS"."DAM_CLEANUP_JOBS$"                       0 KB       0 rows
 . . exported "SYS"."AUDTAB$TBS$FOR_EXPORT"               5.953 KB       2 rows
 . . exported "SYS"."FGA_LOG$FOR_EXPORT"                      0 KB       0 rows
 Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
 ******************************************************************************
 Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
   /home/oracle/kkatsuta/aud.dmp
 Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at Thu Jul 19 04:54:59 2018 elapsed 0 00:01:37
 

上述の例では弊社テスト環境のため行数が少ないですが、サービス提供をしている本番環境で統合監査を設定されている場合は格納されている行数が多く、エクスポートに負荷がかかることも考えられます。処理ピークの時間帯は避けて実行することも検討ください。

インポート:監査データはAPPENDでインポートされる

INCLUDE=AUDIT_TRAILSでエクスポートしたダンプファイルをインポートします。実行するユーザはIMP_FULL_DATABASEロールを付与されている必要があります。

インポート(IMPDP)時のTABLE_EXISTS_ACTIONのデフォルトはSKIP(同名テーブルが既に存在する場合はインポートしない)ですが、INCLUDE=AUDIT_TRAILSでエクスポートした監査データをインポートする際はAPPEND(既存データを残したまま追加)で実行されます。
次の例は先程エクスポートした環境にそのままインポートを行った結果ですが、同一のレコードが存在しています。

 
 [oracle@taono18c admin]$ impdp system/oracle@pdb1 full=y directory=test_dir dumpfile=aud.dmp
 
 Import: Release 18.0.0.0.0 - Production on Thu Jul 19 06:39:11 2018
 Version 18.2.0.0.0
 
 Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
 
 Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
 Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
 Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/********@pdb1 full=y directory=test_dir dumpfile=aud.dmp
 Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 . . imported "SYS"."KU$_EXPORT_USER_MAP" 6.328 KB 49 rows
 Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
 . . imported "AUDSYS"."AMGT$DP$AUD$UNIFIED":"SYS_P228" 50.96 KB 6 rows
 . . imported "SYS"."AMGT$DP$AUD$" 35.82 KB 68 rows
 . . imported "SYS"."AMGT$DP$DAM_CONFIG_PARAM$" 6.531 KB 14 rows
 . . imported "SYS"."AMGT$DP$DAM_CLEANUP_EVENTS$" 0 KB 0 rows
 . . imported "SYS"."AMGT$DP$DAM_CLEANUP_JOBS$" 0 KB 0 rows
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 . . imported "SYS"."AMGT$DP$AUDTAB$TBS$FOR_EXPORT" 5.953 KB 2 rows
 . . imported "SYS"."AMGT$DP$FGA_LOG$FOR_EXPORT" 0 KB 0 rows
 Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKER
 Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at Thu Jul 19 06:39:25 2018 elapsed 0 00:00:13
 
 SQL> SELECT EVENT_TIMESTAMP,ACTION_NAME,CLIENT_PROGRAM_NAME FROM UNIFIED_AUDIT_TRAIL order by 1;
 
 EVENT_TIMESTAMP ACTION_NAME CLIENT_PROGRAM_NAME
 ------------------------------ ------------------------ ----------------------------------------
 19-JUL-18 04.43.30.189863 AM EXECUTE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.43.30.189863 AM EXECUTE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.45.26.016665 AM ALTER PLUGGABLE DATABASE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.45.26.016665 AM ALTER PLUGGABLE DATABASE sqlplus@taono18c (TNS V1-V3)
 

過去にインポートをしたことがある場合は監査情報が2重で登録される/他のDBの監査データと混在する可能性があるため注意が必要です。本番環境でのエクスポート実行後に監査データを削除するか、分析用DBでインポート前に監査データの削除を行うなどの対応が必要になるケースも考えられます。
なお、インポート時にTABLE_EXISTS_ACTION=TRUNCATEを明示的に指定した場合、IMPDPは成功しますがTRUNCATEは行われず、未指定時と同様にAPPENDでインポートされる(同じレコードが追加されている)ことを確認しています。

統合監査データの削除方法

上述のとおり追記でインポートされるため、エクスポート元やインポート先の環境で監査データを削除する対応が必要になるケースがあります。統合監査で取得された監査データを削除するには DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL プロシージャを使用します。

すべての監査データを削除するにはUSE_LAST_ARCH_TIMESTAMP=FALSEで実行します。

 
 SQL> begin
   2      dbms_audit_mgmt.clean_audit_trail(
   3      audit_trail_type     => dbms_audit_mgmt.audit_trail_unified,
   4      use_last_arch_timestamp => false);
   5  end;
   6  /
 

指定した時間よりも前のデータを削除するには DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP プロシージャを使用して監査レコードの最終アーカイブ・タイムスタンプを設定した上で、USE_LAST_ARCH_TIMESTAMP=TRUEで削除します。

 
 SQL> BEGIN
   2      DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
   3      audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
   4      last_archive_time => TO_TIMESTAMP('2018/07/20 00:00:00','YYYY/MM/DD HH24:MI:SS')) ;
   5      dbms_audit_mgmt.clean_audit_trail(
   6      audit_trail_type     => dbms_audit_mgmt.audit_trail_unified,
   7  use_last_arch_timestamp => TRUE);
   8  END;
   9  /
 

統合監査のタイムスタンプ( UNIFIED_AUDIT_TRAIL.EVENT_TIMESTAMP )はUTC(JST-9時間)で格納されているため、SET_LAST_ARCHIVE_TIMESTAMPで指定する時刻もUTCを意識する必要がある点には注意が必要です。

まとめ

Data Pumpで監査データがエクスポート/インポートができるようになったことで、エクスポート以前のデータを削除するなどの管理も可能になりました。監査データは肥大化しやすい情報だったため、統合監査を取得されている環境ではメンテナンスを見直してみるのも良いかもしれません。
Oracle Database 18cの新機能ガイドをみてみると興味をそそるものもありました。確認した結果は引き続き本ブログで公開していきます。

検証協力

サービス事業部 サポートセンター 2部 勝田 航介
検証環境:Oracle Database 18.2.0

筆者情報

大野 高志

サービス事業部 付加価値創造部

2007年アシスト入社。Oracle Databaseのサポート業務を経て、サポートセンターに蓄積されたナレッジを使用したサービス開発の立ち上げに従事。現在は「アシストの超サポ」を広め、カスタマーエンゲージメントの構築を実現するための活動を行っている。でも、Oracleは好きなのでできる限りブログは続ける。


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Cloud
  • Oracle Database
2024.12.02

OCIでGPUインスタンスを構築してみた

OCIで提供されている生成AIサービスとGPUインスタンスを前回の記事「生成AIにGPUが適している理由」で紹介しました。本記事では、GPUインスタンスをデプロイして、インスタンス上でLLM(大規模言語モデル)の動作環境を構築する方法をご紹介します。

  • Oracle Cloud
  • Oracle Database
2024.11.15

Oracle Cloud VMware SolutionにおけるVMware HCXとは?

前回の記事でお伝えしたとおり、OCVSを構築するとVMwareの複数の機能が利用可能です。 それらの機能の中で、今回はHCXの概要や具体的な機能、OCVSでHCXを利用するメリットなどをお伝えします!

  • Oracle Database
  • Oracle Cloud
2024.11.05

Oracle Database 23ai新機能!メモリーを有効活用する統合メモリー管理

2024年5月にOracle Cloud環境にて、先行してOracle DB 23aiがリリースされました。 Oracle Base Database ServiceにおけるOracle Database 23aiの検証結果を報告します。 今回は「統合メモリー管理」をテーマにお伝えします。

ページの先頭へ戻る