1.什么是審計
審計是用來監控和記錄用戶的數據庫操作的
2.未開啟審計
即使未開啟審計,Oracle數據庫也會將以下三種操作記錄在OS的$ORACLE_BASE/admin/$ORACLE_SID/adump/
- 以sysdba或者sysoper等管理員用戶連接數據庫實例(不管實例是否打開)
- 關閉數據庫操作
- 打開數據庫操作
3.標准審計
3.1.數據庫參數
-
audit_file_dest
OS中審計信息存放位置
-
audit_sys_operations
默認值為FALSE,即不審計,修改后需要重啟數據庫
審計sys(或者以sysdba,sysoper身份登錄)用戶的所有操作(查詢表,更新表等等)
審計信息放在OS中
-
audit_trail
none:關閉標准審計,11G之前的默認值
db:將審計信息記錄在數據庫中(sys.aud$),只包含連接信息(LOGON,LOGOFF),但不包含以sysdba或者sysoper連接的信息(記錄在OS中)
db,extended:將審計信息記錄在數據庫中,同時包含執行的SQL以及綁定變量
os:將審計信息記錄在OS中
xml:以XML的形式將審計信息記錄在OS中
xml,extended:以XML的形式將審計信息記錄在OS中,同時記錄執行的SQL以及綁定變量
3.2.審計級別
3.1節中,audit_trail為db,extended或者xml,extended時,可以記錄額外的SQL信息,前提是開啟了語句,權限或者對象審計
-
語句級別
對某種類型的SQL語句進行審計但並不包含具體的對象
-
權限級別
任何使用了這個權限的都會被審計
-
對象級別
對數據庫對象進行審計
3.3.審計用SQL
/*語句級別*/
-- 審計所有對表的操作,例如修改,創建,刪除表
audit table;
-- 取消審計
noaudit table;
/*權限級別*/
-- 審計所有使用此權限的操作
audit select any table;
-- 取消審計
noaudit select any table;
/*對象級別*/
-- 審計某個表增刪改查的操作
aduit select,update,insert,delete on monkey.test;
-- 取消審計
noaudit select,update,insert,delete on monkey.test;
/*通用部分*/
by access --每一個被審計的操作都會生成一條audit trail
by session --一個會話里面同類型的操作只會生成一條audit trail,默認為by session
whenever successful --操作成功才審計
whenever not successful --操作失敗才審計
3.4.標准審計相關視圖
-
DBA_OBJ_AUDIT_OPTS
對象級別標准審計的策略
-
DBA_STMT_AUDIT_OPTS
語句級別標准審計的策略
-
DBA_PRIV_AUDIT_OPTS
權限級別標准審計策略
-
DBA_AUDIT_OBJECT
對象級別標准審計記錄
-
DBA_AUDIT_STATEMENT
語句級別標准審計記錄
-
DBA_AUDIT_SESSION
登錄登出標准審計記錄(普通用戶,以SYSDBA或者SYSOPER的用戶不記錄)
-
DBA_AUDIT_TRAIL
所有的標准審計記錄
4.精細審計
FGA(fine grained auditing),可以指定更加精細的審計策略
參考:FGA審計