標籤:oracle審計 audit
審計(Audit)用於監視使用者所執行的資料庫操作,審計記錄可存在資料字典表(稱為審計記錄:儲存在system資料表空間中的 SYS.AUD$ 表中,可通過視圖dba_audit_trail查看)或作業系統審計記錄中(audit_file_dest參數決定)。預設情況下審計是沒有開啟的。
1、審計的類型有四種:
Statement Auditing(語句審計):在語句層級進行審計,如審計執行SELECT TABLE的語句,而不針對某一單獨的對象。
Privilege Auditing(許可權審計):審計某一系統許可權的使用方式,如果審計在建立表時用到的CREATE ANY TABLE許可權。
Schema Object Auditing(對象審計):審計對指定對象上的操作,如審計對錶scott.emp的INSERT操作。
Fine-Grained Auditing(細粒度審計):用於指定更細粒度的審計,用DBMS_FGA包來實現。
2、相關參數:
AUDIT_TRAIL參數
這參數決定Database Audit的開啟和關閉。可以被賦與如下值
DB,啟用Database Audit,並把審計記錄記錄到資料庫中的SYS.AUD$
XML,啟用Database Audit,並把審計記錄在檔案系統以XML檔案的開始存放
DB,EXTENDED,具有與DB一樣的功能,並在必要時在SYS.AUD$中記錄SQL bind and SQL text CLOB-type columns。
XML,EXTENDED,具有與XML一樣的功能,並在可用時在XML檔案中記錄SQL bind and SQL text CLOB-type columns。
OS,啟用Database Audit,並把審計記錄記錄到作業系統的檔案中。
NONE,不啟用Database Audit,預設值。
AUDIT_FILE_DEST參數
如果AUDIT_TRAIL=OS,則審計記錄的檔案,存放在AUDIT_FILE_DEST指定的目錄中。
AUDIT_SYS_OPERATIONS參數
指定是否啟用對SYS使用者的審計。預設為FALSE,啟用設定為TRUE。記錄不存放在AUD$中,而是記錄在其它地方。如果是windows平台,audti trail會記錄在windows的事件管理中,如果是linux/unix平台則會記錄在audit_file_dest參數指定的檔案中。
3、啟用和停用Database Audit
使用ALTER SYSTEM語句設定AUDIT_TRAIL參數,這個參數不可線上修改,修改後需重庫資料庫執行個體生效。例句如下:
ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;
停用Database Audit使用如下語句,重啟資料庫生效
ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;
4、啟用和停止審計功能的文法:
1)啟用審計使用AUDIT語句
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/92/4F/wKiom1j-EfDxoTsbAAGXMKVir5E923.png" title="1.png" alt="wKiom1j-EfDxoTsbAAGXMKVir5E923.png" />
2)停止審計功能
要停用審計功能把上面的AUDIT改為NOAUDIT。
在啟用審計功能前,必須先設定AUDIT_TRAIL參數為非NONE,否則資料庫不會進行審計。
5、使用審計功能的樣本
啟用Database Audit
[email protected]>alter system set audit_trail=DB scope=spfile;System altered.
1)Statement Auditing(語句審計)
審計由SCOTT使用者發出的所有SELECT TABLE
[email protected]>audit select table by scott;Audit succeeded.[email protected]>select * from dba_stmt_audit_opts;USER_NAME PROXY_NAME AUDIT_OPTION SUCCESS FAILURE------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------SCOTT SELECT TABLE BY SESSION BY SESSION[email protected]>select count(*) from emp; COUNT(*)----------14[email protected]>select timestamp,sql_text from dba_audit_trail;TIMESTAMP SQL_TEXT------------------- --------------------------------------------------------------------------------2017-04-24 23:07:47 select count(*) from emp
2)Privilege Auditing(許可權審計)
審計所有系統許可權
[email protected]>audit all privileges;Audit succeeded.[email protected]>select * from dba_priv_audit_opts;USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ FLASHBACK ARCHIVE ADMINISTER BY ACCESS BY ACCESS CREATE SESSION BY ACCESS BY ACCESS......[[email protected] ~]$ sqlplus scott/tiger......[email protected]>select username,timestamp,priv_used from dba_audit_trail where priv_used is not null;USERNAME TIMESTAMP PRIV_USED------------------------------ ------------------- ------------------------------------------------------------------------------------------------------------------------SCOTT 2017-04-24 23:18:02 CREATE SESSION
3)Schema Object Auditing(對象審計)
審計對SCOTT.EMP表的select操作
[email protected]>audit select on scott.emp;Audit succeeded.[email protected]>select * from dba_obj_audit_opts;OWNER OBJECT_NAM OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE CRE REA WRI FBK---------- ---------- ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----SCOTT EMP TABLE -/- -/- -/- -/- -/- -/- -/- -/- -/- S/S -/- -/- -/- -/- -/- -/- -/-[email protected]>select ename from emp;ENAME------------------------------SMITHALLEN......[email protected]>select timestamp,sql_text from dba_audit_trail;TIMESTAMP SQL_TEXT------------------- --------------------------------------------------------------------------------2017-04-24 23:24:28 select ename from emp
AUD$位於SYSTEM資料表空間,基於Oracle的穩定性及效能考慮,可以將審計相關的表移動到其他資料表空間。
alter table audit$ move tablespace <tablespace_name>;
alter index i_audit rebuild online tablespace <tablespace_name>;
alter table audit_actions move tablespace <tablespace_name>;
alter index i_audit_actions rebuild online tablespace <tablespace_name>;
官方文檔:http://docs.oracle.com/cd/B19306_01/network.102/b14266/auditing.htm#CHDJBDHJ
http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073
參考:http://blog.itpub.net/9399028/viewspace-712457/
本文出自 “DBA Fighting!” 部落格,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1919030
學習Oracle的審計(Auditing)