保證數據庫的安全有兩種方式,一種是通過權限的存取控制機制,即通過預先控制來防止安全事件的發生;另一種是數據庫審計,即對數據庫活動做跟蹤記錄,當發生安全事件時,通過對數據庫活動記錄進行審計來發現並修復安全問題。
Oracle使用大量不同的審計方法來監控使用何種權限,以及訪問哪些對象。審計不會防止使用這些權限,但可以提供有用的信息,用於揭示權限的濫用和誤用。數據庫審計的主要對象包括數據庫鏈接、SQL語句執行、數據庫對象訪問等方面。審計記錄存儲的位置有兩種選擇:一種是存儲在操作系統文件中,一種是存儲在system表空間的sys.aud$表中。
1、和審計相關的參數
(1) audit_sys_operations
(2) audit_trail
(3) audit_file_dest:指定審計信息的文件夾
SQL>show parameter audit –查詢和審計相關的兩個參數
2、audit_sys_operations參數
audit_sys_operations參數審計SYSDBA的活動,默認值false,相關的審計信息記錄在操作系統文件中(因為有可能記錄時數據庫還未啟動)。當參數值為false時,以下操作系統會強制記錄在audit_file_dest指定的文件夾中:
(1) 用管理員權限連接實例
(2) 啟動數據庫
(3) 關閉數據庫
audit_sys_operations參數設置為true後,作為SYSDBA和SYSOPER連接數據庫的用戶所發布的每條語句都會被寫入操作系統的審計中,從而能夠給出DBA所進行操作的完整記錄。設置audit_sys_operations參數的語句如下:
SQL>alter system set audit_sys_operations=TRUE scope=spfile;
SQL>alter system set audit_sys_operations=FALSE scope=spfile;
3、audit_trail 參數
(1)audit_trail 參數的值可以設置為以下幾種:
? NONE:不審計,默認值。
? DB:開啟審計功能,將audit記錄到sys.aud$表(審計的結果只有連接信息,不記錄到SQLBIND和SQLTEXT字段)。
? OS:審計記錄寫入一個操作系統文件。
? DB,extended:開啟審計功能,將audit記錄到sys.aud$表(審計信息除了連接信息還包含了當時執行的具體語句,記錄到SQLBIND和SQLTEXT字段)。
? Xml:審計記錄寫入xml格式的操作系統文件。
? Xml,extended:審計記錄寫入xml格式的操作系統文件,包括SQLBIND和SQLTEXT值。
說明:這個參數是寫到spfile裡面的靜態參數,需要重啟數據庫。
(2)設置參數值
SQL> alter system setaudit_trail='DB' scope=spfile;
說明:參數AUDIT_TRAIL不是動態的,為了使AUDIT_TRAIL參數中的改動生效,必須關閉數據庫並重新啟動。在對SYS.AUD$表進行審計時,應該注意監控該表的大小,以避免影響SYS表空間中其他對象的空間需求。
4、開啟與關閉審計
(1) 開啟審計案例
SQL>conn /as sysdba
SQL>show parameter audit
SQL>alter system set audit_sys_operations=TRUE scope=spfile;
--審計管理用戶(以sysdba/sysoper角色登陸)
SQL>alter system set audit_trail=db,extended scope=spfile;
SQL>startup force --完成審計的開啟
SQL>show parameter audit –對比先後兩次的參照值
(2) 關閉審計案例
SQL>conn /as sysdba
SQL>show parameter audit
SQL>alter system set audit_trail=none scope=spfile;
SQL>startup force --完成審計的關閉
SQL>conn /as sysdba
SQL>show parameter audit –對比先後兩次的參照值
(3)審計相關的表安裝
SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$;
SQLPLUS> select * from dba_audit_trail;
如果做上述查詢的時候發現表不存在,說明審計相關的表還沒有安裝,需要安裝。方法如下:
SQLPLUS> connect / as sysdba
SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql
審計表安裝在SYSTEM表空間。所以要確保SYSTEM表空間又足夠的空間存放審計信息。安裝後要重啟數據庫。
5、審計類型