基礎知識6——標準資料庫稽核——未完

與刃爭鋒發表於2014-01-08
使用標準資料庫稽核
有必要稽核所有的sysdba活動,也應跟蹤其他使用者的違規行為.

除了sysdba稽核外,還有以下三種稽核技術

資料庫稽核:能跟蹤特定許可權的使用,特定命令的執行,對特定表的訪問及登入嘗試.
基於值的稽核:使用資料庫觸發器.插入,更新或刪除記錄時,就會執行一個包括記錄事件全部細節的PL/SQL程式碼塊.
細粒度稽核:允許根據所訪問的記錄(或該記錄的列)來跟蹤對錶的訪問,與資料庫稽核或基於值的稽核相比,細粒度稽核更為精確,並且可以將生成的稽核記錄的範圍限制為感興趣的稽核記錄.

任何一種稽核都會增加資料庫必須完成的工作量,為了限制工作量,應進行重點稽核,同時不跟蹤不重要的事件.

稽核SYSDBA活動
例項引數audit_sys_operation設定為true(預設是false),那麼作為sysdba或sysope連線到資料庫的使用者所發的每條語句都會被寫入作業系統的稽核跟蹤,
從而給出DBA所進行操作的完整記錄. 稽核跟蹤必須手動保護,不能被DBA刪除.
需要對系統進行設定,使DBA不能訪問跟蹤DBA活動的稽核記錄,只能被其他管理員訪問.
優秀的計算機稽核人員應:DBA不擁有unix系統中超級使用者的口令(或windows管理員的口令)


sys稽核記錄的目標資料夾:
windows目標資料夾為windows application log
unix中目標資料夾為audit_file_dest引數所列位置


資料庫稽核
首先必須設定audit_trail例項引數,允許的值為:
none(或false):兩者都禁用資料庫稽核
os:稽核記錄被寫至作業系統的稽核跟蹤目錄
db:稽核記錄會寫入資料字典表sys.aud$,可通過某些檢視檢視這個表的內容
db_extended:與db的作用大體相同,不過包含生成稽核記錄的,具有繫結變數的SQL語句
xml:類似os,但使用xml標記設定格式
xml_extended:與xml類似,但使用sql語句和繫結變數


設定 audit_trail引數後,就可使用資料庫稽核來捕獲登入嘗試,系統許可權與物件許可權的使用及sql命令的執行.


下列命令可稽核許可權的使用:
sql>audit create any trigger;
sql>audit select any table by session;


因為可能在其它模式的表上建立觸發器,所以需要授予程式設計人員create any trigger許可權,但該許可權可能成為一個被惡意使用的危險許可權.因此資料庫管理員顯然需要知道程式設計人員在何時使用這個許可權,以便根據需要檢視程式碼.同樣,為了找出發生錯誤的事務所存在的問題,某個使用者需要具有select any table和update any table許可權,不過只要使用這些許可權就會生成記錄,使他們直郵擁有合理的理由時才能訪問資料.


預設方式下,稽核會為違反稽核條件的每一個會話生成一條稽核記錄,而不考慮違反條件的次數.這相當於為audit命令追加關鍵字by session.為audit命令追加關鍵字by access時,會為每次違反條件的情況生成一條記錄.

預設的by session語句可能不是想要的設定,但此設定將生成的稽核記錄數量限制為更易於管理的數量.

如下所示,稽核也可以是物件導向的:

sql>audit insert on ar.hz_parties whenever successful;
sql>audit all on ar.ra_interface_lines_all;

第一個命令中,只要會話在指定表中插入一行就會生成稽核記錄.whenever successful關鍵字將稽核記錄限制為操作成功的記錄,
whenever not successful是替換語法.預設方式下會稽核所有操作,不論操作成功與否,都如此.第二個示例稽核針對指定表執行select,DML或
DDL語句的每個會話.


audit session命令可以稽核登入,例如:
sql>audit session whenever not successful;


這與稽核使用create session許可權的效果相同.會話稽核記錄針對資料庫的每次連線.not successful關鍵字將輸出內容限制為
失敗的嘗試.這十分有用:記錄的故障可以指示嘗試是否在侵入資料庫.






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

相關文章