- 基本AUDIT設定
- DBMS_AUDIT_MGMT增強套件(DBMS_AUDIT_MGMT)及稽核紀錄檔的處理
建立稽核專用Tablespace
CREATE TABLESPACE AUX_AUDIT DATAFILE 'C:\SID\TBS_AUDIT_01.dbf' SIZE 900M AUTOEXTEND OFF LOGGING EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;
AUDIT的環境設定
要設定的內容包含稽核預設的TABLESPACE,預計清除紀錄的時間間隔等。使用的工具為 DBMS_AUDIT_MGMT,必須以SYS身分使用SQLPLUS來執行。ORACLE的AUDIT有兩個系統預設的TABLE,分別為 SYS.AUD$ (基本) 與SYS.FGA_LOG$ (細微)。 此二TABLE的預設TABLESPACE皆為SYSTEM,若不先將其移至其他位置,若紀錄持續成長到佔滿空間, 將使DB無法登入。
SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name;
更改標準AUDIT的位置
BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, audit_trail_location_value => ' AUX_AUDIT '); END;
更改細微AUDIT的位置
BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD, audit_trail_location_value => ' AUX_AUDIT '); END;
SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name;
設定清除區間
以下設定每12小時清除一次BEGIN DBMS_AUDIT_MGMT.init_cleanup( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL, default_cleanup_interval => 12 /* hours */); END;
修改AUDIT基本參數(重啟DB)
開啟AUDIT前先使用SHOW PARAMETER AUDIT確認稽核檔的寫入位置有設定且路徑是對的。 設定參數時須以SYS身分在DB主機以SQLPLUS執行。執行完畢需重啟DB。SQL> alter system set audit_sys_operations=TRUE scope=spfile; SQL> alter system set audit_trail=xml,extended scope=spfile; SQL> shutdown immediate;
設定系統稽核範圍
以下CONSOLE以SYSDBA身分執行 稽核指令稿如下:將下列寫成一個SCRIPT檔,稱為audit.sql設定稽核範圍
--紀錄以下使用者的登錄(假設想記錄SUPERUSER的動作)
noaudit all; --先取消所有稽核選項,重新設定選項 audit session by system; audit session by sys; audit session by SUPERUSER; --紀錄重要異動 audit select any table by SUPERUSER; audit insert any table by SUPERUSER; audit delete any table by SUPERUSER; audit update any table by SUPERUSER; --紀錄對AUDIT TRAIL 本身之異動,以保護稽核紀錄 AUDIT INSERT, UPDATE, DELETE ON sys.aud$ BY ACCESS;
與AUDIT內容有關的資料字典
以下資料字典可觀察DB裡被稽核的內容。- Statement: DBA_STMT_AUDIT_OPTS
- Object: DBA_OBJ_AUDIT_OPTS, USER_OBJ_AUDIT_OPTS
- Privilege: DBA_PRIV_AUDIT_OPTS
與AUDIT設定有關的資料字典
AUDIT設定的項目可由dba_audit_mgmt_config_params 查詢,下列SQL查詢目前的設定值 SQL> select * from dba_audit_mgmt_config_params;設定XML AUDIT FILE大小
由圖可知預設值是 10000kb,透過下列SQL可調整為15000kbBEGIN DBMS_AUDIT_MGMT.set_audit_trail_property( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS, audit_trail_property => DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE, audit_trail_property_value => 15000); END;
設定XML AUDIT FILE最大天數
以下將其天數由五天改為10天。BEGIN DBMS_AUDIT_MGMT.set_audit_trail_property( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML, audit_trail_property => DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE, audit_trail_property_value => 10); END;
稽核紀錄查詢
audit_actions
稽核紀錄中的欄位ACTION是用代碼顯示,每個代碼的意義存放於此TABLE,代碼共計約118筆V$XML_AUDIT_TRAIL
若稽核的選項是 XML, EXTENDED,它會將紀錄以XML方式記錄於指定位置,但可透過此VIEW來查詢它的內容,其中有DB_USER, OS_USER, TERMINAL, OBJECT_SCHEMA, OBJECT_NAME 和 SQL_TEXT等欄位。稽核紀錄管理
稽核紀錄如果不處理,會持續成長到影響系統效能。紀錄可運用時間戳記來管理,為刪除或整理設立一個時間點。 AUDIT的時間戳記紀錄在dba_audit_mgmt_last_arch_ts,可透過指令來設定 : SQL> SELECT * FROM dba_audit_mgmt_last_arch_ts;設定稽核的時間戳記
使用時間戳記來管理紀錄,先設定最後截止時間戳記,以下設定五天前,設定後可清除在此戳記前的資料BEGIN DBMS_AUDIT_MGMT.set_last_archive_timestamp( audit_trail_type => DBMS_AUDIT_MGMT. AUDIT_TRAIL_XML, last_archive_time => SYSTIMESTAMP-5); END;
運用時間戳記管理紀錄
紀錄可透過CLEAR_LAST_ARCHIVE_TIMESTAMP來管理。 以下將所有紀錄皆刪除(參數 use_last_arch_timestamp 設為FALSE )。BEGIN DBMS_AUDIT_MGMT.clean_audit_trail( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML, use_last_arch_timestamp => FALSE); END;以下將時間戳記前的所有紀錄皆刪除(參數 use_last_arch_timestamp 設為TRUE)。
BEGIN DBMS_AUDIT_MGMT.clean_audit_trail( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML, use_last_arch_timestamp => TRUE); END;以下將時間戳記前的所有紀錄皆刪除 (使用CLEAR_LAST_ARCHIVE_TIMESTAMP)
BEGIN DBMS_AUDIT_MGMT.clear_last_archive_timestamp( audit_trail_type => DBMS_AUDIT_MGMT. AUDIT_TRAIL_XML); END;