標籤:
1、審計(Audit):
對使用者所執行的資料庫活動的追蹤記錄,便於事後監督、檢查。
審計資訊存放位置:
審計記錄資訊,儲存在system資料表空間中的SYS.AUD$資料字典表;
或作業系統預設位置$ORACLE_BASE/admin/$ORACLE_SID/adump/;
審計參數AUDIT_TRAIL
參數值取值列表:
(1).DB/TRUE ---- 啟用審計,並且把審計結果存放在資料庫的SYS.AUD$表中
(2).OS ---- 啟用審計,並把審計結果存放在作業系統的審計資訊中
(3).DB_EXTENDED ---- 啟用審計,把審計結果存放在資料庫SYS.AUD$表中,並在CLOB列的SQLBIND和SQLTEXT欄位記錄額外的資訊;
(4).XML ---- 啟用審計,以XML格式寫所有審計記錄;
(5).EXTENDED ---- 啟用審計,在審計跟蹤中記錄所有列,包括SQLTEXT和SQLBIND值
(6).NONE/FALSE ---- 禁用審計
以下步驟設定Oracle的審計功能:
(1).修改審計參數AUDIT_TRAIL:
Alter system set AUDIT_TRAIL=DB scope=spfile;
(2).初始化Database Audit功能:
以connect /as sysdba執行指令碼cataudit.sql,指令碼位置D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN;
(3).重啟資料庫:
由於參數AUDIT_TRAIL不是動態,需要關閉資料庫重啟生效。
2、審計分類和用法:語句審計:
--文法
AUDIT sql_statement_clause [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
參數說明:
sql_statement_clause ---- SQL語句或選項;
BY ACCESS ---- 存取方式,每條語句被執行一次都要審計,不管語句是否相同;
BY SESSION ---- 會話方式,相同的語句只被審計一次,這也是系統預設;
WHENEVER SUCCESSFUL ---- 表示只對成功語句進行審計;
WHENEVER NOT SUCCESSFUL ---- 表示只對不成功語句進行審計。
--舉例:
--(1).審計使用者對對象的操作:
Audit table by scott;
--(2).審計使用者執行的SQL語句:
Audit create table by scott;
Audit insert table by u0007; ---- 審計insert into表或視圖;
Audit delete table by u0007; ---- 審計刪除表或視圖中的行;
--(3).指定審計方式:
Audit delete table by u0007 by access; ---- 存取方式,每條語句執行一次都要審計;
--(4).審計成功與不成功的會話:
Audit session by u007 whenever not successful; ---- 只對不成功語句進行審計;
--(5).瞭解哪些使用者進行了審計,可查詢資料字典視圖DBA_STMT_AUDIT_OPTS
select * from dba_stmt_audit_opts where user_name=‘U007‘;
--(6).停止語句審計:
Noaudit alter table by U007;
許可權審計:
--文法:
AUDIT privilege [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
對象審計:
--文法:
AUDIT schema_object_clause ON schema
[BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
Audit select,insert,delete on scott.dept by access;
3、細粒度審計(FGA)
是由DBMS_FGA的PL/SQL程式實現的
5、OracleDatabase Audit