0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Database 統合監査データを SYSLOG 転送する(Oracle Database 19c)

Last updated at Posted at 2024-01-31

Oracle Database 18c 以降のバージョンでは統合監査のデータを SYSLOG (RSYSLOG) に転送する機能を持っています。

統合監査

統合監査は、Oracle Database 11g までの監査(標準監査と呼びます)、ファイングレイン監査、DBA監査等複数あった監査方式を一本化(=UNIFIED)した監査方法です。Oracle Database 19c では標準の監査方法になっています。標準では統合監査の出力結果は AUDSYS スキーマの AUD$UNIFIED テーブルに保存されます。このテーブルは時間隔パーティション・テーブル(INTERVAL PARTITION TABLE)になっています。

AUD$UNIFIED テーブルの確認
SQL> SELECT TABLE_NAME, PARTITIONING_TYPE, PARTITION_COUNT FROM DBA_PART_TABLES WHERE TABLE_NAME='AUD$UNIFIED';

TABLE_NAME                     PARTITION PARTITION_COUNT
------------------------------ --------- ---------------
AUD$UNIFIED                    RANGE             1048575

SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER='AUDSYS';

TABLE_NAME                     PARTITION_NAME                 TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
AUD$UNIFIED                    AUD_UNIFIED_P0                 SYSAUX
AUD$UNIFIED                    SYS_P1035                      SYSAUX
AUD$UNIFIED                    SYS_P1062                      SYSAUX
AUD$UNIFIED                    SYS_P1122                      SYSAUX
AUD$UNIFIED                    SYS_P1162                      SYSAUX
AUD$UNIFIED                    SYS_P561                       SYSAUX
AUD$UNIFIED                    SYS_P825                       SYSAUX
AUD$UNIFIED                    SYS_P881                       SYSAUX

8行が選択されました。

データベース管理者は監査データを確認するために UNIFIED_AUDIT_TRAIL ビューを参照します。実行計画を確認すると AUDSYS.AUD$UNIFIED テーブルを参照していることがわかります。

UNIFIED_AUDIT_TRAIL ビュー参照の実行計画
SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;

  COUNT(*)
----------
      2009

実行計画
----------------------------------------------------------
Plan hash value: 1799673015

----------------------------------------------------------------------------------------------------------------------
| Id  | Operation                  | Name                    | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
----------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT           |                         |     1 |       |    74   (0)| 00:00:01 |       |            |
|   1 |  SORT AGGREGATE            |                         |     1 |       |            |          |       |            |
|   2 |   VIEW                     | UNIFIED_AUDIT_TRAIL     |  1967 |       |    74   (0)| 00:00:01 |       |            |
|   3 |    UNION-ALL               |                         |       |       |            |          |       |            |
|   4 |     NESTED LOOPS OUTER     |                         |     1 |    68 |     2   (0)| 00:00:01 |       |            |
|   5 |      NESTED LOOPS OUTER    |                         |     1 |    64 |     1   (0)| 00:00:01 |       |            |
|   6 |       NESTED LOOPS         |                         |     1 |    59 |     0   (0)| 00:00:01 |       |            |
|   7 |        FIXED TABLE FULL    | X$UNIFIED_AUDIT_TRAIL   |     1 |    52 |            |          |       |            |
|*  8 |        INDEX UNIQUE SCAN   | I_UNIFIED_AUDIT_ACTIONS |     1 |     7 |     0   (0)| 00:00:01 |       |            |
|*  9 |       INDEX RANGE SCAN     | I_SYSTEM_PRIVILEGE_MAP  |     1 |     5 |     1   (0)| 00:00:01 |       |            |
|* 10 |      INDEX RANGE SCAN      | I_STMT_AUDIT_OPTION_MAP |     1 |     4 |     1   (0)| 00:00:01 |       |            |
|  11 |     NESTED LOOPS           |                         |  1966 | 53082 |    72   (0)| 00:00:01 |       |            |
|* 12 |      HASH JOIN RIGHT OUTER |                         |  1966 | 39320 |    72   (0)| 00:00:01 |       |            |
|  13 |       INDEX FAST FULL SCAN | I_STMT_AUDIT_OPTION_MAP |   337 |  1348 |     2   (0)| 00:00:01 |       |            |
|* 14 |       HASH JOIN RIGHT OUTER|                         |  1966 | 31456 |    70   (0)| 00:00:01 |       |            |
|  15 |        INDEX FAST FULL SCAN| I_SYSTEM_PRIVILEGE_MAP  |   257 |  1285 |     2   (0)| 00:00:01 |       |            |
|  16 |        PARTITION RANGE ALL |                         |  1966 | 21626 |    68   (0)| 00:00:01 |     1 |1048575|
|  17 |         TABLE ACCESS FULL  | AUD$UNIFIED             |  1966 | 21626 |    68   (0)| 00:00:01 |     1 |1048575|
|* 18 |      INDEX UNIQUE SCAN     | I_UNIFIED_AUDIT_ACTIONS |     1 |     7 |     0   (0)| 00:00:01 |       |            |
----------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
   8 - access("AUDIT_TYPE"="ACT"."TYPE" AND "ACTION"="ACT"."ACTION")
   9 - access("SPX"."PRIVILEGE"(+)=(-"SYSTEM_PRIVILEGE"))
  10 - access("AUDIT_OPTION"="AOM"."OPTION#"(+))
  12 - access("AUDUNI"."AUDIT_OPTION"="AOM1"."OPTION#"(+))
  14 - access("SPX1"."PRIVILEGE"(+)=(-"AUDUNI"."SYSTEM_PRIVILEGE"))
  18 - access("AUDUNI"."AUDIT_TYPE"="ACT1"."TYPE" AND "AUDUNI"."ACTION"="ACT1"."ACTION")

現在有効な統合監査のポリシーは AUDIT_UNIFIED_ENABLED_POLICIES ビューから確認できます。下記の例では Oracle Database 19c 標準の監査ポリシーが確認できます。

有効な統合監査ポリシーの一覧
SQL> SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES;

POLICY_NAME                    ENABLED_OPTION  ENTITY_NAME                    ENTITY_ SUC FAI
------------------------------ --------------- ------------------------------ ------- --- ---
ORA_SECURECONFIG               BY USER         ALL USERS                      USER    YES YES
ORA_LOGON_FAILURES             BY USER         ALL USERS                      USER    NO  YES

本記事では Linux 環境で統合監査の設定を SYSLOG (RSYSLOG) に転送する方法と出力例について記載しています。

SYSLOGへの転送

統合監査情報を SYSLOG へ転送するには以下の2つの初期化パラメーターを使います。

  • UNIFIED_AUDIT_COMMON_SYSTEMLOG
    マニュアルの記載は以下の通りです。

UNIFIED_AUDIT_COMMON_SYSTEMLOGには、共通監査ポリシーによって生成された統合監査レコードのキー・フィールドがSYSLOGユーティリティに書き込まれるかどうかを指定します。

共通監査ポリシーは「CONTAINER=ALL」を指定したポリシーを指します。

  • UNIFIED_AUDIT_SYSTEMLOG
    マニュアルの記載は以下の通りです。

UNIFIED_AUDIT_SYSTEMLOGには、統合監査レコードのキー・フィールドをSYSLOGユーティリティ(UNIXプラットフォームの場合)に書き込むのか、Windowsイベントビューア(Windowsの場合)に書き込むのかを指定します。CDBでは、このパラメータはPDBごとの静的初期化パラメータです。

こちらはPDB単位に出力する設定です。

PDBに対する設定例

特定の PDB に対して統合監査データを SYSLOG 転送する例です。
監査設定は変わらないので、統合監査ポリシーを設定します。ここでは SCOTT ユーザーの DATA1 テーブルに対する DML アクセスの監査を行います。

PDB の統合監査設定
SQL> ALTER SESSION SET CONTAINER=pdb1;

セッションが変更されました。

SQL> CREATE AUDIT POLICY policy1 ACTIONS ALL ON scott.data1;

監査ポリシーが作成されました。

SQL> AUDIT POLICY policy1;

監査が成功しました。

SQL> SELECT * from audit_unified_enabled_policies;

POLICY_NAME                    ENABLED_OPTION  ENTITY_NAME                    ENTITY_ SUC FAI
------------------------------ --------------- ------------------------------ ------- --- ---
ORA_SECURECONFIG               BY USER         ALL USERS                      USER    YES YES
ORA_LOGON_FAILURES             BY USER         ALL USERS                      USER    NO  YES
POLICY1                        BY USER         ALL USERS                      USER    YES YES

PDB の初期化パラメーター unified_audit_systemlog を変更します。ファシリティ名とプライオリティをドット(.)で接続した文字列を指定します。以下の例ではファシリティに「LOCAL3」、プライオリティに「INFO」を指定しています。PDB の再起動を行い、初期化パラメーターを有効化しています。

初期化パラメーターの設定
SQL> ALTER SYSTEM SET unified_audit_systemlog = 'LOCAL3.INFO' SCOPE=SPFILE;

システムが変更されました。

SQL> ALTER PLUGGABLE DATABASE pdb1 CLOSE;

プラガブル・データベースが変更されました。

SQL> ALTER PLUGGABLE DATABASE pdb1 OPEN;

プラガブル・データベースが変更されました。

出力された監査設定例を確認します。以下の例では監査設定は /var/log/oradbaudit.log ファイルに出力される設定になっています(/etc/rsyslog.conf ファイルで設定)。

監査データの確認
# grep -i local3 /etc/rsyslog.conf
local3.info                     /var/log/oradbaudit.log
# cat /var/log/oradbaudit.log
Jan 31 16:33:31 rel88-1 journal: Oracle Unified Audit[17345]: LENGTH: '210' TYPE:"4" DBID:"1623664111" SESID:"1736818950" CLIENTID:"" ENTRYID:"1" STMTID:"7" DBUSER:"SCOTT" CURUSER:"SCOTT" ACTION:"3" RETCODE:"0" SCHEMA:"SCOTT" OBJNAME:"DATA1" PDB_GUID:"00384AF2A3D4C878E0638401A8C0E37E"
Jan 31 16:34:00 rel88-1 journal: Oracle Unified Audit[17345]: LENGTH: '210' TYPE:"4" DBID:"1623664111" SESID:"1736818950" CLIENTID:"" ENTRYID:"2" STMTID:"8" DBUSER:"SCOTT" CURUSER:"SCOTT" ACTION:"2" RETCODE:"0" SCHEMA:"SCOTT" OBJNAME:"DATA1" PDB_GUID:"00384AF2A3D4C878E0638401A8C0E37E"
Jan 31 16:40:13 rel88-1 journal: Oracle Unified Audit[36323]: LENGTH: '197' TYPE:"4" DBID:"1623664111" SESID:"1200097683" CLIENTID:"" ENTRYID:"1" STMTID:"1" DBUSER:"SYS" CURUSER:"SYS" ACTION:"49" RETCODE:"0" SCHEMA:"" OBJNAME:"" PDB_GUID:"00384AF2A3D4C878E0638401A8C0E37E"
Jan 31 16:40:34 rel88-1 journal: Oracle Unified Audit[36323]: LENGTH: '202' TYPE:"4" DBID:"1623664111" SESID:"4200562405" CLIENTID:"" ENTRYID:"2" STMTID:"3" DBUSER:"SYS" CURUSER:"SYS" ACTION:"227" RETCODE:"0" SCHEMA:"" OBJNAME:"PDB1" PDB_GUID:"00384AF2A3D4C878E0638401A8C0E37E"

SYSLOG 転送設定を行ったからといって、監査証跡が保存されないわけではありません。SYSLOG 転送されるのはキー部分のみになります。このため unified_audit_trail ビューを検索すると作成したポリシーの監査データが取得できます。

POLICY1 ポリシーのデータ検索
SQL> SELECT OBJECT_NAME,DBUSERNAME,ACTION_NAME FROM unified_audit_trail WHERE UNIFIED_AUDIT_POLICIES='POLICY1';

OBJECT_NAME          DBUSERNAME                     ACTION_NAME
-------------------- ------------------------------ --------------------
DATA1                SCOTT                          INSERT
DATA1                SCOTT                          SELECT
DATA1                SYS                            SELECT

Author: Noriyoshi Shinoda / Date: January 31, 2024

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?