Oracle Audit 讀書筆記 --請拍磚

beatony發表於2012-11-06
Oracle Audit 讀書筆記 --請拍磚

1、什麼是審計

簡單來講,就是把對資料庫的操作記錄下來。不管你是否開啟資料庫的審計功能,以下這些作業系統會強制記錄。
l
用管理員許可權連線Instance
l
啟動資料庫
l
關閉資料庫


2、和審計相關的兩個主要引數
Audit_sys_operations
預設為false,當設定為true時,所有(注意是所有!)sys使用者(包括以sysdba,sysoper身份登入的使用者)的操作都會被記錄,audit trail不會寫在aud$表中,這個很好理解,如果資料庫還未啟動aud$不可用,那麼像conn /as sysdba這樣的連線資訊,只能記錄在其它地方。如果是windows平臺,audti trail會記錄在windows的事件管理中,如果是linux/unix平臺則會記錄在audit_file_dest引數指定的檔案中

Audit_trail

有三個取值
       None :預設值,不做審計
       DB :將audit trail 記錄在資料庫的審計相關表中,如aud$
       OS :將audit trail 記錄在作業系統檔案中,檔名由audit_file_dest引數指定

注:這兩個引數是static引數,需要重新啟動資料庫才能生效。


3、審計級別

當開啟審計功能後(audit_trail=DB/OS),可在三個級別對資料庫進行審計:Statement(語句)    Privilege(許可權)、object(物件)

Statement
按語句來審計,比如audit table 會審計資料庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy使用者所有的資料庫連線。

 Privilege
按許可權來審計,當使用者使用了該許可權則被審計,如執行grant select any table to a; audit select any table;語句後,當使用者a 訪問了使用者b的表時(如select * from b.t;)會用到select any table許可權,故會被審計。注意使用者是自己表的所有者,所以使用者訪問自己的表不會被審計

Object
按物件審計,只審計on關鍵字指定物件的相關操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這裡會對cmy使用者的t表進行審計,但同時使用了by子句,所以只會對scott使用者發起的操作進行審計.注意Oracle沒有提供對schema中所有物件的審計功能,只能一個一個物件審計,對於後面建立的物件,Oracle則提供on default子句來實現自動審計,比如執行audit drop on default by access;後, 對於隨後建立的物件的drop操作都會審計。但這個default會對之後建立的所有資料庫物件有效,似乎沒辦法指定只對某個使用者建立的物件有效,想比trigger可以對schemaDDL進行“審計”,這個功能稍顯不足。

4、審計的一些其他選項

by access / by session
by access 每一個被審計的操作都會生成一條audit trail by session,一個會話裡面同型別的操作只會生成一條audit trail 預設為by session

whenever [ not ] successful
whenever successful 操作成功(dba_audit_trailreturncode欄位為0) 才審計,whenever not successful反之。 省略該子句的話,不管操作成功與否都會審計。

5、和審計相關的檢視

dba_audit_trail

儲存所有的audit trail,實際上它只是一個基於aud$的檢視。其它的檢視dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一個子集。

dba_stmt_audit_opts
可以用來檢視statement審計級別的audit options,即資料庫設定過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts檢視功能與之類似


all_def_audit_opts

用來檢視資料庫用on default子句設定了哪些預設物件審計。


6、取消審計

將對應審計語句的audit改為noaudit即可,如audit session whenever successful;取消審計noaudit session whenever successful;
不再贅述。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3.Oracle支援的標準審計條件:
a. SQL:> audit session;
b. SQL:> audit create table by dbmgr;
c. SQL:> audit insert any table by access whenever successful;
記錄在任何表上執行成功的每次insert操作。注意使用者訪問自己的表不會被審計,訪問他人的表將會被審計(基於物件的審計除外.)
d.SQL:> autdit select ,delete on dbmgr.test by access;

4.審計選擇的查詢

select * from dba_stmt_audit_opts;
select * from dba_priv_audit_opts;
select * from dba_obj_audit_opts;

如:
noaudit all;                  ---   取消所有語句的審計
noaudit all privileges;       ---   取消所有許可權審計(不針對使用者)
noaudit all privilege by dbmgr ---  取消所有許可權審計(針對使用者)
noaudit all on dbmgr.test;     ---  取消物件審計(針對使用者)

5. 查詢標準審計結果

select * from sys.aud$;

select * form. dba_audit_trail;

select * from dba_audit_session;

select * from dba_audit_statement;

select * from dba_audit_object;

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-748499/,如需轉載,請註明出處,否則將追究法律責任。

相關文章