oracle Database Audit

來源:互聯網
上載者:User
一、何謂數據庫審計?    數據庫審計,就是對數據庫的活動做跟蹤記錄,主要包括數據庫連接,SQL語句執行,數據庫對象訪問這些方面的跟蹤記錄。  二、審記記錄的存儲方式    分為兩種:一種是存儲在操作系統檔案中,一種是存儲在system表空間中的SYS.AUD$表中。  三、對數據庫效能影響的考慮    審計必然需要佔用CPU,因此,需要綜合平衡審計需求與效能之間的平衡性問題,以確定出最好的審許策略。  四、審記結果中包含哪些資訊    前面講到審許結果的存儲分數據庫存儲和檔案存儲兩種方式。對於數據庫存儲的情況,SYS.AUD$表中包含以下資訊:·    操作系統用戶名·    數據庫用戶名·    連接會話標識·    終端標識·    被訪問的schema對象名·    嘗試的操作·    操作的完整代碼·    日期和時間戳     若審計記錄存儲在外部操作檔案中,則該檔案可能包含以下資訊:·    操作系統產生的審計記錄·    數據庫的審計記錄·    被審計到的數據庫操作·    超級管理員(SYS)的審計記錄其中,被寫到檔案中的審計記錄是以編碼的方式存儲的,如果要理解這些編碼所對應的資訊,可以查詢以下數據字典表:編碼資訊             數據字典表-------------------------------數據庫操作代碼       表示嘗試的操作。它的相關描述可以從數據字典表AUDIT_ACTIONS表中查詢到操作所使用的權限     可以在字典表SYSTEM_PRIVILEGE_MAP中查詢到對應的說明完整的操作代碼       操作成功時將返回0,失敗時返回相關oracle錯誤資訊,錯誤資訊碼所對應的說明可以從oracle官方文檔中獲得--------------------------------  五、預設的審計    不論當前是否已經開啟的審計功能,數據庫都會把一些數據庫相關的操作寫入外部審計檔案中(注意:不是寫入SYS.AUD$表),這些被預設審計的操作是:·    以超級管理員權限對數據庫的連接(connect AS SYSDBA或connect AS SYSOPER)·    數據庫啟動·    數據庫停止  六、對超級管理員用戶的操作行為的審計    超級管理員用戶指的是以AS SYSDBA 或 AS SYSOPER方式連接數據庫的用戶。初始化參數AUDIT_SYS_OPERATIONS用來指定是超級管理員的審計選項,如果將AUDIT_SYS_OPERATIONS設置為TRUE,那麼所有超級管理員的操作都將被審計,而不管當前是否有開啟審計功能,而且所有的審計資訊都被寫入外部審計檔案中(注意:不是寫入SYS.AUD$表)。  七、執行審計 1.設定審計記錄的存放位置初始化參數AUDIT_TRAIL指定了審計記錄的存放位置,該參數有三個取值:·    DB 審計記錄存放在數據庫的SYS.AUD$表中·    OS 審計記錄存放在外部的操作系統檔案中·    NONE 關閉審計(預設值)初始化參數AUDIT_FILE_DEST指定了當審外部審記檔案目標存儲路徑,其預設值是$ORACLE_HOME/rdbms/audit 2.審計選項這個審計選項指的是執行審計的AUDIT語句的可選項。AUDIT語句的語法請參考oracle官方SQL參考。   3.以實例說明審計a.審計某用戶的會話的創建與結束AUDIT SESSION BY scott,fey;b.審計所有用戶的會話的創建與結束AUDIT SESSION;c.審計刪除表的操作AUDIT DELETE ANY TABLE;c.審計刪除表的操作(限制:只審計刪除失敗的情況)AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;d.審計刪除表的操作(限制:只審計刪除成功的情況)AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;e.審計刪除表的操作(限制:同一個會話中相同的操作語句只審計一次)AUDIT DELETE ANY TABLE BY SESSION;(註:對於這種情況,如果審計記錄被設定為存儲在外部檔案中時,這個效果是體現不出來的,因為oracle無法判斷是否已經審計過相同的操作語句。)f.審計刪除表的操作(限制:每支刪除語句都審計,不論同一會話中是否有多條相同的操作語句)AUDIT DELETE ANY TABLE BY ACCESS;g.審計對fey.employee表的delete操作AUDIT DELETE ON fey.employee;h.審計對fey.employee表的delete、updet、insert操作AUDIT DELETE,UPDATE,INSERT ON fey.employee;  八、停止審計    停止審計使用NOAUDIT語句,該語句的語法請參考oracle官方SQL參考。下面以實例說明NOAUDIT的使用:a.停止所有對會話的創建與結束的審計NOAUDIT SESSION;b.停止對用戶fey,scott的會話的創建與結束的審計NOAUDIT SESSION BY fey,scott;c.停止審計刪除表的操作NOAUDIT DELETE ANY TABLE;c.停止審計刪除表的操作(限制:停止審計刪除失敗的情況)NOAUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;d.停止審計刪除表的操作(限制:停止審計刪除成功的情況)NOAUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;g.停止審計對fey.employee表的delete操作NOAUDIT DELETE ON fey.employee;h.停止審計對fey.employee表的delete、updet、insert操作NOAUDIT DELETE,UPDATE,INSERT ON fey.employee;  九、對審計記錄表 SYS.AUD$ 的管理    當SYS.AUD$表的審計記錄越來越多的時候,以至達到存儲極限時,會因為審計記錄無法寫入而產生錯誤。或許我還也需要對該表的數據進行一些轉儲或者片段的整理,或是刪除一些我們認為不再需要的審計記錄。這些都是要考慮的事情。下面給出一個對該表進行存儲片段的整理的一個方法:a.將該表的數據select into到另一個表中,或利用export導出到外部檔案b.truncate這張表(要以超級管理員登錄才行)c.再將原先轉儲的數據再加載進來。     也許我們需要對針對SYS.AUD$表的操作進行審計,如:AUDIT INSERT,UPDATE,DELETEON sys.aud$ BY ACCESS;  十、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官方參考手冊。   

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.