審計(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參數
這參數決定資料庫審計的開啟和關閉。可以被賦與如下值
DB,啟用資料庫審計,并把審計記錄記錄到資料庫中的SYS.AUD$
XML,啟用資料庫審計,并把審計記錄在檔案系統以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,啟用資料庫審計,并把審計記錄記錄到作業系統的檔案中。
NONE,不啟用資料庫審計,預設值。
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、啟用和停用資料庫審計
使用ALTER SYSTEM語句設定AUDIT_TRAIL參數,這個參數不可線上修改,修改後需重庫資料庫執行個體生效。例句如下:
ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;
停用資料庫審計使用如下語句,重新開機資料庫生效
ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;
4、啟用和停止審計功能的文法:
1)啟用審計使用AUDIT語句
<a href="https://s2.51cto.com/wyfs02/M01/92/4F/wKiom1j-EfDxoTsbAAGXMKVir5E923.png" target="_blank"></a>
2)停止審計功能
要停用審計功能把上面的AUDIT改為NOAUDIT。
在啟用審計功能前,必須先設定AUDIT_TRAIL參數為非NONE,否則資料庫不會進行審計。
5、使用審計功能的示例
啟用資料庫審計
<code>sys@TEST></code><code>alter</code> <code>system </code><code>set</code> <code>audit_trail=DB scope=spfile;</code>
<code>System altered.</code>
1)Statement Auditing(語句審計)
審計由SCOTT使用者發出的所有SELECT TABLE
<code>sys@TEST>audit </code><code>select</code> <code>table</code> <code>by</code> <code>scott;</code>
<code>Audit succeeded.</code>
<code>sys@TEST></code><code>select</code> <code>* </code><code>from</code> <code>dba_stmt_audit_opts;</code>
<code>USER_NAME PROXY_NAME AUDIT_OPTION SUCCESS FAILURE</code>
<code>------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------</code>
<code>SCOTT </code><code>SELECT</code> <code>TABLE</code> <code>BY</code> <code>SESSION </code><code>BY</code> <code>SESSION</code>
<code>scott@TEST></code><code>select</code> <code>count</code><code>(*) </code><code>from</code> <code>emp;</code>
<code> </code><code>COUNT</code><code>(*)</code>
<code>----------</code>
<code> </code><code>14</code>
<code> </code>
<code>sys@TEST></code><code>select</code> <code>timestamp</code><code>,sql_text </code><code>from</code> <code>dba_audit_trail;</code>
<code>TIMESTAMP</code> <code>SQL_TEXT</code>
<code>------------------- --------------------------------------------------------------------------------</code>
<code>2017-04-24 23:07:47 </code><code>select</code> <code>count</code><code>(*) </code><code>from</code> <code>emp</code>
2)Privilege Auditing(權限審計)
審計所有系統權限
<code>sys@TEST>audit </code><code>all</code> <code>privileges</code><code>;</code>
<code>sys@TEST></code><code>select</code> <code>* </code><code>from</code> <code>dba_priv_audit_opts;</code>
<code>USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE</code>
<code> </code><code>FLASHBACK ARCHIVE ADMINISTER </code><code>BY</code> <code>ACCESS </code><code>BY</code> <code>ACCESS</code>
<code> </code><code>CREATE</code> <code>SESSION </code><code>BY</code> <code>ACCESS </code><code>BY</code> <code>ACCESS</code>
<code>......</code>
<code>[oracle@rhel6 ~]$ sqlplus scott/tiger</code>
<code>sys@TEST></code><code>select</code> <code>username,</code><code>timestamp</code><code>,priv_used </code><code>from</code> <code>dba_audit_trail </code><code>where</code> <code>priv_used </code><code>is</code> <code>not</code> <code>null</code><code>;</code>
<code>USERNAME </code><code>TIMESTAMP</code> <code>PRIV_USED</code>
<code>------------------------------ ------------------- ------------------------------------------------------------------------------------------------------------------------</code>
<code>SCOTT 2017-04-24 23:18:02 </code><code>CREATE</code> <code>SESSION</code>
3)Schema Object Auditing(對象審計)
審計對SCOTT.EMP表的select操作
<code>sys@TEST>audit </code><code>select</code> <code>on</code> <code>scott.emp;</code>
<code>sys@TEST></code><code>select</code> <code>* </code><code>from</code> <code>dba_obj_audit_opts;</code>
<code>OWNER OBJECT_NAM OBJECT_TYPE ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE CRE REA WRI FBK</code>
<code>---------- ---------- ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----</code>
<code>SCOTT EMP </code><code>TABLE</code> <code>-/- -/- -/- -/- -/- -/- -/- -/- -/- S/S -/- -/- -/- -/- -/- -/- -/-</code>
<code>scott@TEST></code><code>select</code> <code>ename </code><code>from</code> <code>emp;</code>
<code>ENAME</code>
<code>------------------------------</code>
<code>SMITH</code>
<code>ALLEN</code>
<code>2017-04-24 23:24:28 </code><code>select</code> <code>ename </code><code>from</code> <code>emp</code>
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>;
<a href="http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB" target="_blank">http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB</a>
<a href="http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073" target="_blank">http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073</a>
本文轉自hbxztc 51CTO部落格,原文連結:http://blog.51cto.com/hbxztc/1919030,如需轉載請自行聯系原作者