溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle12.2c統一審計是什么

發布時間:2021-11-10 15:27:31 來源:億速云 閱讀:224 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“Oracle12.2c統一審計是什么”,在日常操作中,相信很多人在Oracle12.2c統一審計是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Oracle12.2c統一審計是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是統一審計?

審計是指監控和記錄用戶對數據庫執行所有成功或失敗的操作。

而統一審計(UNIFIED_AUDIT_TRAIL)是Oracle在12c版本推出的一種全新的審計體系。在新的體系下,Oracle提供了更精細化的管理,并且將所有的審計記錄按照統一的格式寫入到AUDSYS schema下,可以通過UNIFIED_AUDIT_TRAIL視圖查看。默認地,審計記錄會被存放在SYSAUX表空間下。當然,Oracle也建議將審計數據從SYSAUX中剝離出來放到新的表空間下,這一功能可以通過DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION包實現。

統一審計的相關權限?

除了SYS用戶外,只有被賦予AUDIT_ADMIN或AUDIT_VIEWER的用戶才能看到UNIFIED_AUDIT_TRAIL數據字典視圖。如果用戶只需要查詢UNIFIED_AUDIT_TRAIL,但是不需要創建審計策略(audit policy),那么只需要賦予AUDIT_VIEWER role就可以了。

如何檢查統一審計是否開啟?

SQL> SELECT VALUE FROM V$OPTION WHERE   PARAMETER = 'Unified Auditing';

 

VALUE

----------------------------------------------------------------

FALSE

TRUE:代表完全統一審計開啟;

FALSE:代表傳統審計和統一審計的混合模式。

什么是完全統一審計模式(Pure unified auditing)和混合審計模式(Mixed Mode Auditing)?

完全統一審計模式,顧名思義,就是摒棄了之前的傳統審計模式。

禁用統一審計方法,以單機為例:

shutdown

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk uniaud_off ioracle

startup

混合審計模式,只要開啟了統一審計策略,就會形成統一審計和傳統審計并存的局面,此時就是混合審計模式。默認建庫時會啟用ORA_SECURECONFIG,一個統一審計策略,這也就意味著默認建庫時,就是混合審計模式。

ORA_SECURECONFIG詳情如下:

CREATE AUDIT POLICY ORA_SECURECONFIG

 PRIVILEGES ALTER ANY TABLE, CREATE ANY   TABLE, DROP ANY TABLE,

            CREATE ANY PROCEDURE, DROP ANY   PROCEDURE, ALTER ANY PROCEDURE,

            GRANT ANY PRIVILEGE, GRANT ANY   OBJECT PRIVILEGE, GRANT ANY ROLE,

            AUDIT SYSTEM, CREATE EXTERNAL   JOB, CREATE ANY JOB,

            CREATE ANY LIBRARY,

            EXEMPT ACCESS POLICY,

            CREATE USER, DROP USER,

            ALTER DATABASE, ALTER SYSTEM,

            CREATE PUBLIC SYNONYM, DROP   PUBLIC SYNONYM,

            CREATE SQL TRANSLATION PROFILE,   CREATE ANY SQL TRANSLATION PROFILE,

            DROP ANY SQL TRANSLATION PROFILE,   ALTER ANY SQL TRANSLATION PROFILE,

            TRANSLATE ANY SQL,

            EXEMPT REDACTION POLICY, 

            PURGE DBA_RECYCLEBIN, LOGMINING,

            ADMINISTER KEY MANAGEMENT

 ACTIONS      ALTER USER, CREATE ROLE, ALTER ROLE, DROP ROLE,

            SET ROLE, CREATE PROFILE, ALTER   PROFILE,

            DROP PROFILE, CREATE DATABASE   LINK,

            ALTER DATABASE LINK, DROP   DATABASE LINK,

            CREATE DIRECTORY, DROP DIRECTORY,

            CREATE PLUGGABLE DATABASE, 

            DROP PLUGGABLE DATABASE,

            ALTER PLUGGABLE DATABASE,

            EXECUTE ON DBMS_RLS;

審計數據落盤策略是什么?

審計數據寫入數據文件有兩種方式:

1. immediate-write mode立即寫

2. queued-write mode隊列寫

立即寫是將產生的審計數據馬上寫入硬盤,這樣可以保證不丟失審計數據,但是對系統系統會有些許影響。

隊列寫是先將審計數據寫入SGA,而不是直接寫入數據文件,根據一定的策略再將審計數據寫入數據文件。一般有兩種策略:

l  時間策略:每隔三秒鐘,視系統繁忙程度,也可能三秒鐘了也沒有寫入。由隱含參數_unified_audit_flush_interval控制。

l  空間策略:存放在SGA中的審計數據容量達到85%。該區域默認是1M,由參數unified_audit_sga_queue_size控制,比例由隱含參數_unified_audit_flush_threshold控制

SQL> col name for a30;

SQL> col value for a10;

SQL> select * from

    2  (select

    3  x.ksppinm name,

    4  y.ksppstvl value,

    5  y.ksppstdf isdefault,

    6    decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')   ismod,

    7    decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj

    8  from

    9  sys.x$ksppi x,

 10    sys.x$ksppcv y

 11    where

 12    x.inst_id = userenv('Instance') and

 13    y.inst_id = userenv('Instance') and

 14    x.indx = y.indx

 15    order by

 16    translate(x.ksppinm, ' _', ' ')) T where T.name like   '%unified_audit%';

 

NAME                           VALUE      ISDEFAULT ISMOD      ISADJ

------------------------------ ----------   --------- ---------- -----

_unified_audit_flush_interval  3            TRUE      FALSE      FALSE

_unified_audit_flush_threshold 85         TRUE      FALSE      FALSE

_unified_audit_policy_disabled FALSE      TRUE      FALSE      FALSE

unified_audit_sga_queue_size   1048576      TRUE      FALSE      FALSE

當前落盤方式

SQL> SELECT PARAMETER_VALUE

    2  FROM   DBA_AUDIT_MGMT_CONFIG_PARAMS

    3  WHERE PARAMETER_NAME = 'AUDIT   WRITE MODE';

 

PARAMETER_VALUE

-----------------------------------------------------------------

QUEUED WRITE MODE

修改為immediate-write mode

BEGIN

 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);

END;

/

修改為

BEGIN

 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,

    DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);

END;

/

隊列寫模式下如何手動flush審計數據?

手動刷新當前實例,適用于單機和rac單實例

EXEC   DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

 

EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(DBMS_AUDIT_MGMT.FLUSH_CURRENT_INSTANCE);

 

Flush RAC所有實例

EXEC   DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(DBMS_AUDIT_MGMT.FLUSH_ALL_INSTANCES);

對于多租戶環境

當前PDB

BEGIN   

 DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(

    CONTAINER  =>   DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

END;

/

所有的PDB環境

BEGIN   

 DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL(

    CONTAINER  =>   DBMS_AUDIT_MGMT.CONTAINER_ALL);

END;

/

如何將操作系統上的審計數據寫入數據庫統一審計文件中?

當數據庫mount狀態,或者read only,或者關閉時,Oracle會將審計數據存放在操作系統的$ORACLE_BASE/audit/$ORACLE_SID目錄下。

查看當前操作系統下

oracle@bd-dev-mingshuo-183:/opt/app/oracle/audit/mingdb/70A2182C94E1412DE053B7D91FAC647A$ll

total 32

-rw------- 1 oracle oinstall 30720 Jul 10   16:57 ora_audit_0786.bin

登入數據庫執行

EXEC DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES;

命令完成之后,操作系統那個文件就消失了。

每個PDB會有一個同名的uuid目錄,如果要將pdb的數據導入數據庫,那么需要在pdb中執行上述命令。

刪除審計的兩種方法?

1.自動清理任務

設置清理時間點

BEGIN

    DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(

     AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

     LAST_ARCHIVE_TIME    =>  '12-OCT-2013 06:30:00.00',

     RAC_INSTANCE_NUMBER  =>  1,

     CONTAINER            =>   DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

END;

/

AUDIT_TRAIL_TYPE:指定審計數據類型

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED:統一審計數據

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD:AUD$表

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD:FGA_LOG$表

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS:操作系統上.aud結尾的文件

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML:XML文件

LAST_ARCHIVE_TIME:指定時間,設置后該時間可以從DBA_AUDIT_MGMT_LAST_ARCH_TS中查出,設置時間點的意義在于,會清理這個時間點之前的歸檔過的數據。

RAC_INSTANCE_NUMBER:RAC數據庫相關參數。單實例不需要設置。默認值是null。因為RAC數據庫也只有一個AUD$表和FGA_LOG$表

,那么即使是RAC數據庫,對應的審計類型DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD和DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,那么也不用設置這個值。

CONTAINER:適用于多租戶環境

l  DBMS_AUDIT_MGMT.CONTAINER_CURRENT:指定當前PDB

l  DBMS_AUDIT_MGMT.CONTAINER_ALL:所有PDB

當上述設置完成后,就可以用DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL包清理設置的時間點之前的審計數據。

BEGIN

DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(

     audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

     use_last_arch_timestamp => TRUE);

END;

/

創建清理job

BEGIN

    DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (

     AUDIT_TRAIL_TYPE              => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

     AUDIT_TRAIL_PURGE_INTERVAL    => 12,

     AUDIT_TRAIL_PURGE_NAME        => 'Audit_Trail_PJ',

     USE_LAST_ARCH_TIMESTAMP       => TRUE,

     CONTAINER                     => DBMS_AUDIT_MGMT.CONTAINER_CURRENT);

END;

/

AUDIT_TRAIL_TYPE:指定審計數據類型

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED:統一審計數據

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD:針對AUD$表

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD:針對FGA_LOG$表

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD:針對AUD$表和FGA_LOG$表

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS:操作系統上.aud結尾的文件

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML:XML文件

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES:操作系統上.aud結尾的文件和XML文件

l  DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL:上述所有類型的審計數據

AUDIT_TRAIL_PURGE_INTERVAL:job每隔多久就運行一次,單位是小時。如果后面想要更改這個值,那么可以用DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVAL包。

USE_LAST_ARCH_TIMESTAMP:清理數據的時間選項

l  TRUE:清理截止到上次歸檔的時間點

l  FLASE:刪除所有的數據

CONTAINER:多租戶環境適用

l  DBMS_AUDIT_MGMT.CONTAINER_CURRENT:PDB級別

l  DBMS_AUDIT_MGMT.CONTAINER_ALL:CDB和PDB級別

設置好job后,啟動

BEGIN

 DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS(

    AUDIT_TRAIL_PURGE_NAME        => 'Audit_Trail_PJ',

    AUDIT_TRAIL_STATUS_VALUE      => DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE);

END;

/

AUDIT_TRAIL_PURGE_NAME:purge job策略的名字,就是上面CREATE_PURGE_JOB里指定的。

AUDIT_TRAIL_STATUS_VALUE:

l  DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE:開啟

l  DBMS_AUDIT_MGMT.PURGE_JOB_DISABLE:停止

修改job運行間隔

BEGIN

 DBMS_AUDIT_MGMT.SET_PURGE_JOB_INTERVAL(

    AUDIT_TRAIL_PURGE_NAME         => 'Audit_Trail_PJ',

    AUDIT_TRAIL_INTERVAL_VALUE     => 24);

END;

/

刪除清理job

BEGIN

 DBMS_AUDIT_MGMT.DROP_PURGE_JOB(

    AUDIT_TRAIL_PURGE_NAME  =>   'Audit_Trail_PJ');

END;

/

2.手動清理審計

BEGIN

    DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(

     AUDIT_TRAIL_TYPE             =>    DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

     USE_LAST_ARCH_TIMESTAMP    =>  TRUE,

     CONTAINER                    =>    DBMS_AUDIT_MGMT.CONTAINER_CURRENT );

END;

/

 

各參數含義同上。

統一審計生產實戰配置?

為了防止審計數據過多,需要定期對審計數據進行清理。

移動審計表空間

BEGIN

    DBMS_AUDIT_MGMT.set_audit_trail_location(

      audit_trail_type           =>   DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,

      audit_trail_location_value => 'TBS_MING');

END;

/

設置purge job

BEGIN

    DBMS_AUDIT_MGMT.CREATE_PURGE_JOB (

     AUDIT_TRAIL_TYPE              => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

     AUDIT_TRAIL_PURGE_INTERVAL    => 24,

     AUDIT_TRAIL_PURGE_NAME        => 'Unified_Audit_Trail_PURGEJOB',

     USE_LAST_ARCH_TIMESTAMP       => TRUE);

END;

/

上面的job在運行時,要根據SET_LAST_ARCHIVE_TIMESTAMP的時間,下面的job可以手動刷新這個時間,不然上面的job最多只運行一次。

BEGIN

    DBMS_SCHEDULER.create_job (

      job_name        => 'audit_last_archive_time',

      job_type        =>   'PLSQL_BLOCK',

      job_action      => 'BEGIN

                         DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,   TRUNC(SYSTIMESTAMP)-60);

                        END;',

      start_date      =>   SYSTIMESTAMP,

      repeat_interval => 'freq=daily; byhour=0; byminute=0; bysecond=0;',

      end_date        => NULL,

      enabled         => TRUE,

      comments        =>   'Automatically set audit last archive time.');

END;

/

到此,關于“Oracle12.2c統一審計是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女