標籤:cat 錯誤 object 問題 trail 原理 好的 效果 許可權
一、何謂Database Audit?Database Audit,就是對資料庫的活動做追蹤記錄,主要包括資料庫連接,SQL語句執行,資料庫物件訪問這些方面的追蹤記錄。 二、審記記錄的儲存方式分為兩種:一種是儲存在作業系統檔案中,一種是儲存在system資料表空間中的SYS.AUD$表中。 三、對資料庫效能影響的考慮審計必然需要佔用CPU,因此,需要綜合平衡審計需求與效能之間的平衡性問題,以確定出最好的審許策略。 四、審記結果中包含哪些資訊前面講到審許結果的儲存分資料庫儲存和檔案儲存體兩種方式。對於資料庫儲存的情況,SYS.AUD$表中包含以下資訊:1) ·作業系統使用者名稱2) ·資料庫使用者名稱3) ·串連會話標識4) ·終端標識5) ·被訪問的schema對象名6) ·嘗試的操作7) ·操作的完整代碼8) ·日期和時間戳記 若審計記錄儲存在外部操作檔案中,則該檔案可能包含以下資訊:1) ·作業系統產生的審計記錄2) ·資料庫的審計記錄3) ·被審計到的資料庫操作4) ·超級管理員(SYS)的審計記錄其中,被寫到檔案中的審計記錄是以編碼的方式儲存的,如果要理解這些編碼所對應的資訊,可以查詢以下資料字典表:編碼資訊資料字典表-------------------------------資料庫作業碼表示嘗試的操作。它的相關描述可以從資料字典表AUDIT_ACTIONS表中查詢到操作所使用的許可權可以在字典表SYSTEM_PRIVILEGE_MAP中查詢到對應的說明完整的作業碼操作成功時將返回0,失敗時返回相關oracle錯誤資訊,錯誤資訊碼所對應的說明可以從oracle官方文檔中獲得-------------------------------- 五、預設的審計不論當前是否已經開啟的審計功能,資料庫都會把一些資料庫相關的操作寫入外部審計檔案中(注意:不是寫入SYS.AUD$表),這些被預設審計的操作是:1) ·以超級管理員權限對資料庫的串連(connectASSYSDBA或connectASSYSOPER)2) ·資料庫啟動3) ·資料庫停止 六、對超級管理使用者的操作行為的審計超級管理使用者指的是以ASSYSDBA或ASSYSOPER方式串連資料庫的使用者。初始化參數AUDIT_SYS_OPERATIONS用來指定是超級管理員的審計選項,如果將AUDIT_SYS_OPERATIONS設定為TRUE,那麼所有超級管理員的操作都將被審計,而不管當前是否有開啟審計功能,而且所有的審計資訊都被寫入外部審計檔案中(注意:不是寫入SYS.AUD$表)。 七、執行審計1.設定審計記錄的存放位置初始化參數AUDIT_TRAIL指定了審計記錄的存放位置,該參數有三個取值:1) ·DB審計記錄存放在資料庫的SYS.AUD$表中2) ·OS審計記錄存放在外部的作業系統檔案中3) ·NONE關閉審計(預設值)初始化參數AUDIT_FILE_DEST指定了當審外部審記檔案目標儲存路徑,其預設值是$ORACLE_HOME/rdbms/audit2.審計選項這個審計選項指的是執行審計的AUDIT語句的可選項。AUDIT語句的文法請參考oracle官方SQL參考。 3.以執行個體說明審計a.審計某使用者的會話的建立與結束AUDITSESSIONBYscott,fey;b.審計所有使用者的會話的建立與結束AUDITSESSION;c.審計刪除表的操作AUDITDELETEANYTABLE;c.審計刪除表的操作(限制:只審計刪除失敗的情況)AUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;d.審計刪除表的操作(限制:只審計刪除成功的情況)AUDITDELETEANYTABLEWHENEVERSUCCESSFUL;e.審計刪除表的操作(限制:同一個會話中相同的動作陳述式只審計一次)AUDITDELETEANYTABLEBYSESSION;(註:對於這種情況,如果審計記錄被設定為儲存在外部檔案中時,這個效果是體現不出來的,因為oracle無法判斷是否已經審計過相同的動作陳述式。)f.審計刪除表的操作(限制:每支刪除語句都審計,不論同一會話中是否有多條相同的動作陳述式)AUDITDELETEANYTABLEBYACCESS;g.審計對fey.employee表的delete操作AUDITDELETEONfey.employee;h.審計對fey.employee表的delete、updet、insert操作AUDITDELETE,UPDATE,INSERTONfey.employee; 八、停止審計停止審計使用NOAUDIT語句,該語句的文法請參考oracle官方SQL參考。下面以執行個體說明NOAUDIT的使用:a.停止所有對會話的建立與結束的審計NOAUDITSESSION;b.停止對使用者fey,scott的會話的建立與結束的審計NOAUDITSESSIONBYfey,scott;c.停止審計刪除表的操作NOAUDITDELETEANYTABLE;c.停止審計刪除表的操作(限制:停止審計刪除失敗的情況)NOAUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;d.停止審計刪除表的操作(限制:停止審計刪除成功的情況)NOAUDITDELETEANYTABLEWHENEVERSUCCESSFUL;g.停止審計對fey.employee表的delete操作NOAUDITDELETEONfey.employee;h.停止審計對fey.employee表的delete、updet、insert操作NOAUDITDELETE,UPDATE,INSERTONfey.employee; 九、對審計記錄表SYS.AUD$的管理當SYS.AUD$表的審計記錄越來越多的時候,以至達到儲存極限時,會因為審計記錄無法寫入而產生錯誤。或許我還也需要對該表的資料進行一些轉儲或者片段的整理,或是刪除一些我們認為不再需要的審計記錄。這些都是要考慮的事情。下面給出一個對該表進行儲存片段的整理的一個方法:a.將該表的資料selectinto到另一個表中,或利用export匯出到外部檔案b.truncate這張表(要以超級管理員登入才行)c.再將原先轉儲的資料再載入進來。 也許我們需要對針對SYS.AUD$表的操作進行審計,如:AUDITINSERT,UPDATE,DELETEONsys.aud$BYACCESS; 十、Fine-Grained審計如前面所述,審計的記錄中並沒有含操作所作用的資料,比如說,需要審計針對一個表的select,而且需要在審計記錄中包含select語句所返回的資料。這時,就需要用到Fine-Grained審計。Fine-Grained審計是基於oracle的事件,其原理是在insert,update或delete相關的事件中截取相關的資料。屬於orale程式開發的範疇。具體可以參考相關oracle文檔。 十一、審計相關的資料字典視圖STMT_AUDIT_OPTION_MAPAUDIT_ACTIONSALL_DEF_AUDIT_OPTSDBA_STMT_AUDIT_OPTSDBA_PRIV_AUDIT_OPTSDBA_OBJ_AUDIT_OPTSUSER_OBJ_AUDIT_OPTSDBA_AUDIT_TRAILUSER_AUDIT_TRAILDBA_AUDIT_OBJECTUSER_AUDIT_OBJECTDBA_AUDIT_SESSIONUSER_AUDIT_SESSIONDBA_AUDIT_STATEMENTUSER_AUDIT_STATEMENTDBA_AUDIT_EXISTS DBA_AUDIT_POLICIESDBA_FGA_AUDIT_TRAIL
oracle 審計(一)