天天看點

學習Oracle的審計(Auditing)

審計(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&gt;</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&gt;audit </code><code>select</code> <code>table</code> <code>by</code> <code>scott;</code>

<code>Audit succeeded.</code>

<code>sys@TEST&gt;</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&gt;</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&gt;</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&gt;audit </code><code>all</code> <code>privileges</code><code>;</code>

<code>sys@TEST&gt;</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&gt;</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&gt;audit </code><code>select</code> <code>on</code> <code>scott.emp;</code>

<code>sys@TEST&gt;</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&gt;</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 &lt;tablespace_name&gt;;

alter index i_audit rebuild online tablespace &lt;tablespace_name&gt;;

alter table audit_actions move tablespace &lt;tablespace_name&gt;;

alter index i_audit_actions rebuild online tablespace &lt;tablespace_name&gt;;

<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,如需轉載請自行聯系原作者