Oracle 11G數(shù)據(jù)庫審計(jì)監(jiān)控設(shè)置指南
Oracle 11G 開啟審計(jì)監(jiān)控數(shù)據(jù)庫
1 創(chuàng)建審計(jì)數(shù)據(jù)專用表空間
由于審計(jì)數(shù)據(jù)可能占用大量空間,所以放入默認(rèn)的system表空間顯然是不合理的,所以我們應(yīng)該創(chuàng)建專門的表空間以及用戶來保存審計(jì)數(shù)據(jù),這樣才是一個比較合理的規(guī)劃。
CREATE TABLESPACE AUDIT_TBS DATAFILE '/data2/app/oracle/datafile/AUDIT_TBS1'SIZE 2048M AUTOEXTEND ON NEXT 512M MAXSIZE UNLIMITED, '/data2/app/oracle/datafile/AUDIT_TBS2'SIZE 2048M AUTOEXTEND ON NEXT 512M MAXSIZE UNLIMITED SEGMENT SPACE MANAGEMENT AUTO;
2 查看相關(guān)信息
select table_name,tablespace_name from dba_tables where table_name='AUD$'; 1 AUD$ SYSTEM select COLUMN_NAME,SEGMENT_NAME,tablespace_name from dba_lobs where table_name ='AUD$'; 1 SQLBIND SYS_LOB0000000407C00040$$ SYSTEM 2 SQLTEXT SYS_LOB0000000407C00041$$ SYSTEM select index_name,tablespace_name from dba_indexes where table_name ='AUD$'; 1 SYS_IL0000000407C00040$$ SYSTEM 2 SYS_IL0000000407C00041$$ SYSTEM
3 在線移動至新的表空間
3.1 清空歷史審計(jì)信息
由于當(dāng)前數(shù)據(jù)庫可能已經(jīng)包含過去的審計(jì)信息,所以遷移的過程中比較慢,為了解決這個問題,可以先將現(xiàn)有的審計(jì)信息清空(當(dāng)然是業(yè)務(wù)允許情況下),清空語句如下:
sqlplus / as sysdba truncate table sys.aud$;
3.2 遷移表空間
sqlplus / as sysdba alter table aud$ move tablespace AUDIT_TBS; alter table AUD$ move lob(SQLBIND) store as SYS_LOB0000000407C00040$$ (tablespace AUDIT_TBS); alter table AUD$ move lob(SQLTEXT) store as SYS_LOB0000000407C00041$$(tablespace AUDIT_TBS); alter table AUD$ move lob(SQLBIND) store as SYS_IL0000000407C00040$$ (tablespace AUDIT_TBS); alter table AUD$ move lob(SQLTEXT) store as SYS_IL0000000407C00041$$(tablespace AUDIT_TBS);
注:上面的SYS_LOB0000000407C00040$$類似的文件名稱是由步驟2查詢而得。
3.3 開啟審計(jì)
sqlplus / as sysdb alter system set audit_sys_operations=true scope=spfile; alter system set audit_trail=db,extended scope=spfile; shutdown immediate startup
4 審計(jì)功能的一些相關(guān)維護(hù)
以下所有語句都在SYS用戶下執(zhí)行
sqlplus / as sysdba
4.1 審計(jì)數(shù)據(jù)遷移(另一種方案)
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, AUDIT_TRAIL_LOCATION_VALUE => 'AUDIT_TBS' ); END; /
4.2 審計(jì)數(shù)據(jù)自動清理
由于審計(jì)日志的數(shù)據(jù)可能比較多,所以需要定期清理數(shù)據(jù),保證數(shù)據(jù)庫相關(guān)性能
begin dbms_audit_mgmt.init_cleanup( audit_trail_type => dbms_audit_mgmt.audit_trail_all, default_cleanup_interval => 24 ); end; /
這個INIT_CLEANUP過程設(shè)計(jì)到兩個參數(shù):
- audit_trail_type:指要設(shè)置的清理類型,這里是audit_trail_db_std,標(biāo)準(zhǔn)的數(shù)據(jù)庫審計(jì)跟蹤,即aud$表。
- default_cleanup_interval:這個值表示每隔多少時間執(zhí)行清理任務(wù),24即24小時。
相關(guān)審計(jì)類型:
- audit_trail_aud_std:The standard AUD$ audit trail in the database
- audit_trail_fga_std:The FGA_LOG$ table, for Fine Grained Auditing
- audit_trail_db_std:Both standard and FGA audit trails
- audit_trail_os:The OS audit trail
- audit_trail_xml:The XML audit trail
- audit_trail_files:Both OS and XML audit trails
- audit_trail_all:All of the above
設(shè)置完初始化清理參數(shù)后,實(shí)際上在調(diào)用清理任務(wù)時,會發(fā)現(xiàn)并沒有達(dá)到你的預(yù)期,可能數(shù)據(jù)一條都沒有清理掉,我們還需要設(shè)置另一個過程參數(shù)SET_LAST_ARCHIVE_TIMESTAMP,它的作用是告訴清理進(jìn)程一個審計(jì)歸檔時間戳,
這個過程接收三個參數(shù):
- audit_trail_type:要清理的審計(jì)類型,如audit_trail_aud_std
- last_archive_time:最后一次歸檔時間,可以手工設(shè)置
- rac_instance_number:RAC的話可以指定實(shí)例號
代碼如下
begin dbms_audit_mgmt.set_last_archive_timestamp( audit_trail_type => dbms_audit_mgmt.audit_trail_aud_std, last_archive_time => to_timestamp('2020-05-26 10:00:00','YYYY-MM-DD HH24:MI:SS'), rac_instance_number => null ); end; /
執(zhí)行上段程序后,你可以在DBA_AUDIT_MGMT_LAST_ARCH_TS視圖中查到相關(guān)信息。
有了歸檔時間后,就可以執(zhí)行真正的清理程序了。
begin dbms_audit_mgmt.clean_audit_trail( audit_trail_type => dbms_audit_mgmt.audit_trail_aud_std, use_last_arch_timestamp => TRUE ); end; /
- audit_trail_type表示清理的審計(jì)類型,
- use_last_arch_timestamp => TRUE,表示用最后的歸檔時間,如果為false,將會清理掉audit_trail_aud_std類型的所有審計(jì)信息。
上面是手工清理的方法,設(shè)置了清理時間點(diǎn)后運(yùn)行清理過程。下一步看自動清理怎么做:
將采用數(shù)據(jù)庫的自動任務(wù)來實(shí)現(xiàn),第一個任務(wù),自動產(chǎn)生清理時間點(diǎn):
BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'DAILY_AUDIT_ARCHIVE_TIMESTAMP', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.audit_trail_all,LAST_ARCHIVE_TIME => sysdate-1); END;', start_date => sysdate, repeat_interval => 'FREQ=HOURLY;INTERVAL=24', enabled => TRUE, comments => 'Create an archive timestamp' ); END; /
第二個任務(wù),根據(jù)時間點(diǎn)自動清理:
BEGIN DBMS_AUDIT_MGMT.CREATE_PURGE_JOB( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.audit_trail_all, AUDIT_TRAIL_PURGE_INTERVAL => 24 /* hours */, AUDIT_TRAIL_PURGE_NAME => 'DAILY_AUDIT_PURGE_JOB', USE_LAST_ARCH_TIMESTAMP => TRUE ); END; /
刪除DAILY_AUDIT_PURGE_JOB與DAILY_AUDIT_ARCHIVE_TIMESTAMP
exec dbms_scheduler.drop_job( job_name => 'SYS.DAILY_AUDIT_ARCHIVE_TIMESTAMP' , force => TRUE); exec SYS.DBMS_AUDIT_MGMT.DROP_PURGE_JOB( AUDIT_TRAIL_PURGE_NAME => 'DAILY_AUDIT_PURGE_JOB');
5 將審計(jì)權(quán)限賦予其他用戶
sqlplus / as sysdba grant select on sys.aud$ to dataaly; -----賦予新用戶查詢審計(jì)信息 grant select on sys.dba_fga_audit_trail to dataaly; ----賦予新用戶查詢審計(jì)信息
6 查詢所有可以設(shè)定的審計(jì)類型
select user_name,audit_option,success,failure from dba_stmt_audit_opts union select USER_NAME,privilege,success,failure from dba_priv_audit_opts;
7 下表中總結(jié)了Oracle數(shù)據(jù)庫中不同類型的審計(jì)。
審 計(jì) 類 型 | 說 明 |
---|---|
語句審計(jì) | 按照語句類型審計(jì)SQL語句,而不論訪問何種特定的模式對象。也可以在數(shù)據(jù)庫中指定一個或多個用戶,針對特定的語句審計(jì)這些用戶 |
權(quán)限審計(jì) | 審計(jì)系統(tǒng)權(quán)限,例如CREATE TABLE或ALTER INDEX。和語句審計(jì)一樣,權(quán)限審計(jì)可以指定一個或多個特定的用戶作為審計(jì)的目標(biāo) |
模式對象 | 審計(jì)審計(jì)特定模式對象上運(yùn)行的特定語句(例如,DEPARTMENTS表上的UPDATE語句)。模式對象審計(jì)總是應(yīng)用于數(shù)據(jù)庫中的所有用戶 |
細(xì)粒度的審計(jì) | 根據(jù)訪問對象的內(nèi)容來審計(jì)表訪問和權(quán)限。使用程序包DBMS_FGA來建立特定表上的策略 |
下面幾節(jié)介紹DBA如何管理系統(tǒng)和對象權(quán)限使用的審計(jì)。當(dāng)需要一定的粒度時,DBA可以使用細(xì)粒度的審計(jì)來監(jiān)控對表中某些行或列的訪問,而不僅僅是是否訪問表。
和審計(jì)相關(guān)的主要參數(shù)
SQL>show parameter audit audit_file_dest audit_sys_operations audit_trail
audit_sys_operations:
- 默認(rèn)為false,當(dāng)設(shè)置為true時,所有sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會被記錄,audit trail不會寫在aud 表 中 , 這 個 很 好 理 解 , 如 果 數(shù) 據(jù) 庫 還 未 啟 動 a u d 表中,這個很好理解,如果數(shù)據(jù)庫還未啟動aud 表中,這個很好理解,如果數(shù)據(jù)庫還未啟動aud不可用,那么像conn /as sysdba這樣的連接信息,只能記錄在其它地方。如果是windows平臺,audti trail會記錄在windows的事件管理中,如果是linux/unix平臺則會記錄在audit_file_dest參數(shù)指定的文件中。
audit_trail:
- None:是默認(rèn)值,不做審計(jì);
- DB:將audit trail 記錄在數(shù)據(jù)庫的審計(jì)相關(guān)表中,如aud$,審計(jì)的結(jié)果只有連接信息;
- DB,Extended:這樣審計(jì)結(jié)果里面除了連接信息還包含了當(dāng)時執(zhí)行的具體語句;
- OS:將audit trail 記錄在操作系統(tǒng)文件中,文件名由audit_file_dest參數(shù)指定;
7.1 語句審計(jì)
所有類型的審計(jì)都使用audit命令來打開審計(jì),使用noaudit命令來關(guān)閉審計(jì)。對于語句審計(jì),audit命令的格式看起來如下所示:
AUDIT sql_statement_clause BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL;
sql_statement_clause包含很多條不同的信息,例如希望審計(jì)的SQL語句類型以及審計(jì)么人。
此外,希望在每次動作發(fā)生時都對其進(jìn)行審計(jì)(by access)或者只審計(jì)一次(by session)。默認(rèn)是by session。
有時希望審計(jì)成功的動作:沒有生成錯誤消息的語句。對于這些語句,添加whenever successful。而有時只關(guān)心使用審計(jì)語句的命令是否失敗,失敗原因是權(quán)限違犯、用完表空間中的空間還是語法錯誤。對于這些情況,使用 whenever not successful。
對于大多數(shù)類別的審計(jì)方法,如果確實(shí)希望審計(jì)所有類型的表訪問或某個用戶的任何權(quán)限,則可以指定all而不是單個的語句類型或?qū)ο蟆?/p>
表1列出了可以審計(jì)的語句類型,并且在每個類別中包含了相關(guān)語句的簡要描述。如果指定all,則審計(jì)該列表中的任何語句。然而,表2中的語句類型在啟用審計(jì)時不屬于all類別;必須在audit命令中顯式地指定它們。
表1 包括在ALL類別中的可審計(jì)語句
語 句 選 項(xiàng) | SQL操作 |
---|---|
ALTER SYSTEM | 所有ALTER SYSTEM選項(xiàng),例如,動態(tài)改變實(shí)例參數(shù),切換到下一個日志文件組,以及終止用戶會話 |
CLUSTER | CREATE、ALTER、DROP或TRUNCATE集群 |
CONTEXT | CREATE CONTEXT或DROP CONTEXT |
DATABASE LINK | CREATE或DROP數(shù)據(jù)庫鏈接 |
DIMENSION | CREATE、ALTER或DROP維數(shù) |
DIRECTORY | CREATE或DROP目錄 |
INDEX | CREATE、ALTER或DROP索引 |
MATERIALIZED VIEW | CREATE、ALTER或DROP物化視圖 |
NOT EXISTS | 由于不存在的引用對象而造成的SQL語句的失敗 |
PROCEDURE | CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE |
PROFILE | CREATE、ALTER或DROP配置文件 |
PUBLIC DATABASE LINK | CREATE或DROP公有數(shù)據(jù)庫鏈接 |
PUBLIC SYNONYM | CREATE或DROP公有同義詞 |
ROLE | CREATE、ALTER、DROP或SET角色 |
ROLLBACK SEGMENT | CREATE、ALTER或DROP回滾段 |
SEQUENCE | CREATE或DROP序列 |
SESSION | 登錄和退出 |
SYNONYM | CREATE或DROP同義詞 |
SYSTEM AUDIT | 系統(tǒng)權(quán)限的AUDIT或NOAUDIT |
SYSTEM GRANT | GRANT或REVOKE系統(tǒng)權(quán)限和角色 |
TABLE | CREATE、DROP或TRUNCATE表 |
TABLESPACE | CREATE、ALTER或DROP表空間 |
TRIGGER | CREATE、ALTER(啟用/禁用)、DROP觸發(fā)器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE |
TYPE | CREATE、ALTER和DROP類型以及類型主體 |
USER | CREATE、ALTER或DROP用戶 |
VIEW | CREATE或DROP視圖 |
表2 顯式指定的語句類型
語 句 選 項(xiàng) | SQL 操 作 |
---|---|
ALTER SEQUENCE | 任何ALTER SEQUENCE命令 |
ALTER TABLE | 任何ALTER TABLE命令 |
COMMENT TABLE | 添加注釋到表、視圖、物化視圖或它們中的任何列 |
DELETE TABLE | 刪除表或視圖中的行 |
EXECUTE PROCEDURE | 執(zhí)行程序包中的過程、函數(shù)或任何變量或游標(biāo) |
GRANT DIRECTORY | GRANT或REVOKE DIRECTORY對象上的權(quán)限 |
GRANT PROCEDURE | GRANT或REVOKE過程、函數(shù)或程序包上的權(quán)限 |
GRANT SEQUENCE | GRANT或REVOKE序列上的權(quán)限 |
GRANT TABLE | GRANT或REVOKE表、視圖或物化視圖上的權(quán)限 |
GRANT TYPE | GRANT或REVOKE TYPE上的權(quán)限 |
INSERT TABLE | INSERT INTO表或視圖 |
LOCK TABLE | 表或視圖上的LOCK TABLE命令 |
SELECT SEQUENCE | 引用序列的CURRVAL或NEXTVAL的任何命令 |
SELECT TABLE | SELECT FROM表、視圖或物化視圖 |
UPDATE TABLE | 在表或視圖上執(zhí)行UPDATE |
注意:
從Oracle Database 11g開始,只有在初始參數(shù)AUDIT_TRAIL被設(shè)置為DB_EXTENDED時,才填充DBA_AUDIT_TRAIL中的列SQL_TEXT和SQL_BIND。默認(rèn)情況下,AUDIT_TRAIL的值是DB。
SQL> audit index by dataaly; Audit succeeded.
為了關(guān)閉HR.JOBS表上KSHELTON的審計(jì),可以使用noaudit命令,如下所示:
SQL> noaudit index by dataaly; Noaudit succeeded.
也可能希望按常規(guī)方式審計(jì)成功的和不成功的登錄,這需要兩個audit命令:
SQL> audit session whenever successful; Audit succeeded. SQL> audit session whenever not successful; Audit succeeded.
7.2 權(quán)限審計(jì)
審計(jì)系統(tǒng)權(quán)限具有與語句審計(jì)相同的基本語法,但審計(jì)系統(tǒng)權(quán)限是在sql_stateme nt_clause中,而不是在語句中,指定系統(tǒng)權(quán)限。
例如,可能希望將ALTER TABLESPACE權(quán)限授予所有的DBA,但希望在發(fā)生這種情況時生成審計(jì)記錄。啟用對這種權(quán)限的審計(jì)的命令看起來類似于語句審計(jì):
SQL> audit alter tablespace by access whenever successful; Audit succeeded.
每次成功使用ALTER TABLESPACE權(quán)限時,都會將一行內(nèi)容添加到SYS.AUD$。
使用SYSDBA和SYSOPER權(quán)限或者以SYS用戶連接到數(shù)據(jù)庫的系統(tǒng)管理員可以利用特殊的審計(jì)。為了啟用這種額外的審計(jì)級別,可以設(shè)置初始參數(shù)AUDIT_SYS_OPERATIONS為TRUE。
這種審計(jì)記錄發(fā)送到與操作系統(tǒng)審計(jì)記錄相同的位置。因此,這個位置是和操作系統(tǒng)相關(guān)的。當(dāng)使用其中一種權(quán)限時執(zhí)行的所有SQL語句,以及作為用戶SYS執(zhí)行的任何SQL語句,都會發(fā)送到操作系統(tǒng)審計(jì)位置。
7.3 模式對象審計(jì)
審計(jì)對各種模式對象的訪問看起來類似于語句審計(jì)和權(quán)限審計(jì):
AUDIT schema_object_clause BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL;
schema_object_clause指定對象訪問的類型以及訪問的對象。可以審計(jì)特定對象上14種不同的操作類型,下表中列出了這些操作。
對 象 選 項(xiàng) | 說 明 |
---|---|
ALTER | 改變表、序列或物化視圖 |
AUDIT | 審計(jì)任何對象上的命令 |
COMMENT | 添加注釋到表、視圖或物化視圖 |
DELETE | 從表、視圖或物化視圖中刪除行 |
EXECUTE | 執(zhí)行過程、函數(shù)或程序包 |
FLASHBACK | 執(zhí)行表或視圖上的閃回操作 |
GRANT | 授予任何類型對象上的權(quán)限 |
INDEX | 創(chuàng)建表或物化視圖上的索引 |
INSERT | 將行插入表、視圖或物化視圖中 |
LOCK | 鎖定表、視圖或物化視圖 |
READ | 對DIRECTORY對象的內(nèi)容執(zhí)行讀操作 |
RENAME | 重命名表、視圖或過程 |
SELECT | 從表、視圖、序列或物化視圖中選擇行 |
UPDATE | 更新表、視圖或物化視圖 |
如果希望審計(jì)HR.JOBS表上的所有insert和update命令,而不管誰正在進(jìn)行更新,則每次該動作發(fā)生時,都可以使用如下所示的audit命令:
SQL> audit insert, update on hr.jobs by access whenever successful; Audit successful.
7.4 細(xì)粒度的審計(jì)
從Oracle9i開始,通過引入細(xì)粒度的對象審計(jì),或稱為FGA,審計(jì)變得更為關(guān)注某個方面,并且更為精確。由稱為DBMS_FGA的PL/SQL程序包實(shí)現(xiàn)FGA。
使用標(biāo)準(zhǔn)的審計(jì),可以輕松發(fā)現(xiàn)訪問了哪些對象以及由誰訪問,但無法知道訪問了哪些行或列。細(xì)粒度的審計(jì)可解決這個問題,它不僅為需要訪問的行指定謂詞(或where子句),還指定了表中訪問的列。通過只在訪問某些行和列時審計(jì)對表的訪問,可以極大地減少審計(jì)表?xiàng)l目的數(shù)量。
程序包DBMS_FGA具有4個過程:
ADD_POLICY | 添加使用謂詞和審計(jì)列的審計(jì)策略 |
---|---|
DROP_POLICY | 刪除審計(jì)策略 |
DISABLE_POLICY | 禁用審計(jì)策略,但保留與表或視圖關(guān)聯(lián)的策略 |
ENABLE_POLICY | 啟用策略 |
用戶TAMARA通常每天訪問HR.EMPLOYEES表,查找雇員的電子郵件地址。系統(tǒng)管理員懷疑TAMARA正在查看經(jīng)理們的薪水信息,因此他們建立一個FGA策略,用于審計(jì)任何經(jīng)理對SALARY列的任何訪問:
begin dbms_fga.add_policy( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'SAL_SELECT_AUDIT', audit_condition => 'instr(job_id,''_MAN'') > 0', audit_column => 'SALARY' ); end;
可以使用數(shù)據(jù)字典視圖DBA_FGA_AUDIT_TRAIL訪問細(xì)粒度審計(jì)的審計(jì)記錄。如果一般需要查看標(biāo)準(zhǔn)的審計(jì)行和細(xì)粒度的審計(jì)行,則數(shù)據(jù)字典視圖DBA_COMMON_AUDIT_TRAIL結(jié)合了這兩種審計(jì)類型中的行。
繼續(xù)看示例,用戶TAMARA運(yùn)行了如下兩個SQL查詢:
SQL> select employee_id, first_name, last_name, email from hr.employees 2 where employee_id = 114; EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL ----------- ------------------ --------------------- -------------- 114 Den Raphaely DRAPHEAL 1 row selected. SQL> select employee_id, first_name, last_name, salary from hr.employees 2 where employee_id = 114; EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY ----------- ------------------ ----------------------- ---------- 114 Den Raphaely 11000 1 row selected.
第一個查詢訪問經(jīng)理信息,但沒有訪問SALARY列。第二個查詢與第一個查詢相同,但是訪問了SALARY列,因此觸發(fā)了FGA策略,從而在審計(jì)跟蹤中生成了一行:
SQL> select to_char(timestamp,'mm/dd/yy hh24:mi') timestamp, 2 object_schema, object_name, policy_name, statement_type 3 from dba_fga_audit_trail 4 where db_user = 'TAMARA'; TIMESTAMP OBJECT_SCHEMA OBJECT_NAME POLICY_NAME STATEMENT_TYPE -------------- ------------- ------------- ---------------- -------------- 08/12/07 18:07 HR EMPLOYEES SAL_SELECT_AUDIT SELECT 1 row selected.
因?yàn)樵诒菊虑懊娴腣PD示例中建立了細(xì)粒度的訪問控制來阻止對SALARY列的未授權(quán)訪問,因此需要加倍檢查策略函數(shù),確保仍然正確限制了SALARY信息。細(xì)粒度的審計(jì)以及標(biāo)準(zhǔn)審計(jì)是確保首先正確建立授權(quán)策略的好方法。
7.5 與審計(jì)相關(guān)的數(shù)據(jù)字典視圖
下表包含了與審計(jì)相關(guān)的數(shù)據(jù)字典視圖。
數(shù)據(jù)字典視圖 | 說 明 |
---|---|
AUDIT_ACTIONS | 包含審計(jì)跟蹤動作類型代碼的描述,例如INSERT、DROP VIEW、DELETE、LOGON和LOCK |
DBA_AUDIT_OBJECT | 與數(shù)據(jù)庫中對象相關(guān)的審計(jì)跟蹤記錄 |
DBA_AUDIT_POLICIES | 數(shù)據(jù)庫中的細(xì)粒度審計(jì)策略 |
DBA_AUDIT_SESSION | 與CONNECT和DISCONNECT相關(guān)的所有審計(jì)跟蹤記錄 |
DBA_AUDIT_STATEMENT | 與GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM命令相關(guān)的審計(jì)跟蹤條目 |
DBA_AUDIT_TRAIL | 包含標(biāo)準(zhǔn)審計(jì)跟蹤條目。USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已連接用戶的審計(jì)行 |
DBA_FGA_AUDIT_TRAIL | 細(xì)粒度審計(jì)策略的審計(jì)跟蹤條目 |
DBA_COMMON_AUDIT_TRAIL | 將標(biāo)準(zhǔn)的審計(jì)行和細(xì)粒度的審計(jì)行結(jié)合在一個視圖中 |
DBA_OBJ_AUDIT_OPTS | 對數(shù)據(jù)庫對象生效的審計(jì)選項(xiàng) |
DBA_PRIV_AUDIT_OPTS | 對系統(tǒng)權(quán)限生效的審計(jì)選項(xiàng) |
DBA_STMT_AUDIT_OPTS | 對語句生效的審計(jì)選項(xiàng) |
7.6 保護(hù)審計(jì)跟蹤
審計(jì)跟蹤自身需要受到保護(hù),特別是在非系統(tǒng)用戶必須訪問表SYS.AUD$時。內(nèi)置的角色DELETE_ANY_CATALOG是非SYS用戶可以訪問審計(jì)跟蹤的一種方法(例如,歸檔和截取審計(jì)跟蹤,以確保它不會影響到SYS表空間中其他對象的空間需求)。
為了建立對審計(jì)跟蹤自身的審計(jì),以SYSDBA身份連接到數(shù)據(jù)庫,并運(yùn)行下面的命令:
SQL> audit all on sys.aud$ by access; Audit succeeded.
現(xiàn)在,所有針對表SYS.AUD 的 動 作 , 包 括 select 、insert、update 和 delete,都記錄在 SYS.AUD的動作,包括select、insert、update和delete,都記錄在SYS.AUD 的動作,包括select、insert、update和delete,都記錄在SYS.AUD自身中。但是,您可能會問,如果某個人刪除了標(biāo)識對表SYS.AUD 訪 問 的 審 計(jì) 記 錄 , 這 時 會 發(fā) 生 什 么 ? 此 時 將 刪 除 表 中 的 行 , 但 接 著 插 入 另 一 行 , 記 錄 行 的 刪 除 。 因 此 , 總 是 存 在 一 些 針 對 SYS.AUD 訪問的審計(jì)記錄,這時會發(fā)生什么?此時將刪除表中的行,但接著插入另一行,記錄行的刪除。因此,總是存在一些針對SYS.AUD 訪問的審計(jì)記錄,這時會發(fā)生什么?此時將刪除表中的行,但接著插入另一行,記錄行的刪除。因此,總是存在一些針對SYS.AUD表的(有意的或偶然的)活動的證據(jù)。此外,如果將AUDIT_SYS _OPERATIONS設(shè)置為True,使用as sysdba、as sysoper或以SYS自身連接的任何會話將記錄到操作系統(tǒng)審計(jì)位置中,甚至Oracle DBA可能都無法訪問該位置。因此,有許多合適的安全措施,用于確保記錄數(shù)據(jù)庫中所有權(quán)限的活動,以及隱藏該活動的任何嘗試。
7.7 啟用增強(qiáng)的審計(jì)
從Oracle Database 11g開始,數(shù)據(jù)庫配置助手(Database Configuration Assistant,DBCA)很容易啟用默認(rèn)的(增強(qiáng)的)審計(jì)。雖然記錄審計(jì)信息有一些系統(tǒng)開銷,但兼容性需求(例如,Sarbanes-Oxley法案中規(guī)定的兼容性需求)要求嚴(yán)格監(jiān)控所有業(yè)務(wù)操作,包括數(shù)據(jù)庫中與安全相關(guān)的操作。
可以在創(chuàng)建數(shù)據(jù)庫時或在數(shù)據(jù)庫已經(jīng)創(chuàng)建之后使用DBCA配置默認(rèn)審計(jì)。如果已經(jīng)改變了很多審計(jì)設(shè)置,并想要將審計(jì)選項(xiàng)重置為基線值,則在數(shù)據(jù)庫已創(chuàng)建之后使用DBCA配置默認(rèn)審計(jì)就非常有用。
除將初始參數(shù)AUDIT_TRAIL的值設(shè)置為DB外,默認(rèn)審計(jì)設(shè)置還審計(jì)audit role命令本身。另外,在Audited Privileges選項(xiàng)卡的Oracle Enterprise Manager Audit Settings頁面中,可以查看默認(rèn)的審計(jì)權(quán)限。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle跨庫訪問DBLINK使用以及實(shí)際應(yīng)用
這篇文章主要給大家介紹了關(guān)于Oracle跨庫訪問DBLINK使用以及實(shí)際應(yīng)用的相關(guān)資料,DBLink的作用是在局域網(wǎng)內(nèi),通過一臺服務(wù)器上面的數(shù)據(jù)庫訪問另外一臺服務(wù)器上面數(shù)據(jù)庫的功能,需要的朋友可以參考下2024-01-01Navicat for oracle創(chuàng)建數(shù)據(jù)庫的方法
這篇文章主要介紹了Navicat for oracle創(chuàng)建數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11查詢Oracle中正在執(zhí)行和執(zhí)行過的SQL語句
這篇文章主要介紹了查詢Oracle中正在執(zhí)行和執(zhí)行過的SQL語句,需要的朋友可以參考下2016-10-10sql – Oracle中匿名TABLE/VARRAY類型示例詳解
這篇文章主要給大家介紹了關(guān)于Oracle中匿名TABLE/VARRAY類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用oracle具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10Oracle數(shù)據(jù)庫密碼重置、導(dǎo)入導(dǎo)出庫命令示例應(yīng)用
本節(jié)主要介紹了Oracle數(shù)據(jù)庫密碼重置、導(dǎo)入導(dǎo)出庫命令的基本使用,有需要的朋友可以學(xué)習(xí)下2014-07-07Windows 64位下裝安裝Oracle 11g,PLSQL Developer的配置問題,數(shù)據(jù)庫顯示空白的完美解決方
安裝pl sql 后,若下圖的數(shù)據(jù)庫處為空。則需要安裝32位的客戶端,說明pl sql不支持64位客戶端連接。下面通過本文給大家介紹Windows 64位下裝Oracle 11g,PLSQL Developer的配置問題,數(shù)據(jù)庫處顯示為空白的解決方案,需要的朋友可以參考下2016-11-11