ORACLE 資料庫審計詳解
http://guestart.blog.51cto.com/1510660/1896340
http://www.itpub.net/thread-454252-1-1.html
一、何謂資料庫審計?
資料庫審計,就是對資料庫的活動做跟蹤記錄,主要包括資料庫連線,SQL語句執行,資料庫物件訪問這些方面的跟蹤記錄。
二、審記記錄的儲存方式
分為兩種:一種是儲存在作業系統檔案中,一種是儲存在system表空間中的SYS.AUD$表中。
三、對資料庫效能影響的考慮
審計必然需要佔用CPU,因此,需要綜合平衡審計需求與效能之間的平衡性問題,以確定出最好的審許策略。
四、審記結果中包含哪些資訊
前面講到審許結果的儲存分資料庫儲存和檔案儲存兩種方式。對於資料庫儲存的情況,SYS.AUD$表中包含以下資訊:
1)·作業系統使用者名稱 2)·資料庫使用者名稱
3)·連線會話標識
4)·終端標識
5)·被訪問的schema物件名
6)·嘗試的操作
7)·操作的完整程式碼
8)·日期和時間戳
若審計記錄儲存在外部操作檔案中,則該檔案可能包含以下資訊:
1)·作業系統產生的審計記錄
2)·資料庫的審計記錄
3)·被審計到的資料庫操作
4)·超級管理員(SYS)的審計記錄
其中,被寫到檔案中的審計記錄是以編碼的方式儲存的,如果要理解這些編碼所對應的資訊,可以查詢以下資料字典表:
2)·資料庫的審計記錄
3)·被審計到的資料庫操作
4)·超級管理員(SYS)的審計記錄
其中,被寫到檔案中的審計記錄是以編碼的方式儲存的,如果要理解這些編碼所對應的資訊,可以查詢以下資料字典表:
編碼資訊資料字典表
-------------------------------
資料庫操作程式碼表示嘗試的操作。它的相關描述可以從資料字典表AUDIT_ACTIONS表中查詢到
操作所使用的許可權可以在字典表SYSTEM_PRIVILEGE_MAP中查詢到對應的說明
完整的操作程式碼操作成功時將返回0,失敗時返回相關oracle錯誤資訊,錯誤資訊碼所對應的說明可以從oracle官方文件中獲得
--------------------------------
五、預設的審計
不論當前是否已經開啟的審計功能,資料庫都會把一些資料庫相關的操作寫入外部審計檔案中(注意:不是寫入SYS.AUD$表),這些被預設審計的操作是:
1)·以超級管理員許可權對資料庫的連線(connectASSYSDBA或connectASSYSOPER)
2)·資料庫啟動
3)·資料庫停止
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/audit
2.審計選項
這個審計選項指的是執行審計的AUDIT語句的可選項。AUDIT語句的語法請參考oracle官方SQL參考。
3.以例項說明審計
a.審計某使用者的會話的建立與結束
AUDIT SESSION BY scott,fey;
b.審計所有使用者的會話的建立與結束
AUDIT SESSION;
c.審計刪除表的操作
AUDIT DELETE ANY TABLE;
d.審計刪除表的操作(限制:只審計刪除失敗的情況)
AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;
e.審計刪除表的操作(限制:只審計刪除成功的情況)
AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;
f.審計刪除表的操作(限制:同一個會話中相同的操作語句只審計一次)
AUDIT DELETE ANY TABLE BY SESSION;
(注:對於這種情況,如果審計記錄被設定為儲存在外部檔案中時,這個效果是體現不出來的,因為oracle無法判斷是否已經審計過相同的操作語句。)
g.審計刪除表的操作(限制:每支刪除語句都審計,不論同一會話中是否有多條相同的操作語句)
AUDIT DELETE ANY TABLE BY ACCESS;
h.審計對fey.employee表的delete操作
AUDIT DELETE ON fey.employee;
i.審計對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;
d.停止審計刪除表的操作(限制:停止審計刪除失敗的情況)
NOAUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;
e.停止審計刪除表的操作(限制:停止審計刪除成功的情況)
NOAUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;
f.停止審計對fey.employee表的delete操作
NOAUDIT DELETE ON fey.employee;
g.停止審計對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,DELETE ON sys.aud$ BY ACCESS;
十、Fine-Grained審計
如前面所述,審計的記錄中並沒有含操作所作用的資料,比如說,需要審計針對一個表的select,而且需要在審計記錄中包含select語句所返回的資料。這時,就需要用到Fine-Grained審計。Fine-Grained審計是基於oracle的事件,其原理是在insert,update或delete相關的事件中擷取相關的資料。屬於orale程式開發的範疇。具體可以參考相關oracle文件。
十一、審計相關的資料字典檢視
STMT_AUDIT_OPTION_MAP
AUDIT_ACTIONS
ALL_DEF_AUDIT_OPTS
DBA_STMT_AUDIT_OPTS
DBA_PRIV_AUDIT_OPTS
DBA_OBJ_AUDIT_OPTS
USER_OBJ_AUDIT_OPTS
DBA_AUDIT_TRAIL
USER_AUDIT_TRAIL
DBA_AUDIT_OBJECT
USER_AUDIT_OBJECT
DBA_AUDIT_SESSION
USER_AUDIT_SESSION
DBA_AUDIT_STATEMENT
USER_AUDIT_STATEMENT
DBA_AUDIT_EXISTS
DBA_AUDIT_POLICIES
DBA_FGA_AUDIT_TRAIL
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2142909/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫審計功能介紹Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 拍拍貸資料庫審計資料庫
- Oracle資料庫備份還原詳解XKUSOracle資料庫
- openGauss 設定資料庫審計資料庫
- MySQL資料庫審計系統MySql資料庫
- 達夢資料庫統計資訊詳解資料庫
- 開啟mysql 資料庫審計功能。MySql資料庫
- 安全管理:polardb資料庫審計功能資料庫
- 資料庫審計技術進化資料庫
- 23_Oracle資料庫全表掃描詳解(三)Oracle資料庫
- 22_Oracle資料庫全表掃描詳解(二)Oracle資料庫
- 21_Oracle資料庫全表掃描詳解(一)Oracle資料庫
- Oracle資料庫啟動過程及狀態詳解Oracle資料庫
- 資料庫安全審計在資料安全中的功能資料庫
- AI輔助資料庫設計評審AI資料庫
- Oracle資料庫不同損壞級別的恢復詳解Oracle資料庫
- Oracle:審計清理Oracle
- Oracle審計(轉)Oracle
- MySQL資料庫-鎖詳解MySql資料庫
- 資料庫設計的 6 個階段詳解資料庫
- limanmanExp資料庫審計設計思路與重要程式碼資料庫
- 【YashanDB知識庫】資料庫審計shutdown immediate操作導致資料庫異常退出資料庫
- ORACLE AUDIT審計(1)Oracle
- 某銀行私有云資料庫審計專案資料庫
- Django資料庫類庫MySQLdb使用詳解Django資料庫MySql
- 資料庫篇:mysql鎖詳解資料庫MySql
- 資料庫中介軟體詳解資料庫
- MySQL資料庫基礎詳解MySql資料庫
- 資料庫分片(Database Sharding)詳解資料庫Database
- 美創資料庫審計助力中原銀行資料安全建設資料庫
- oracle資料庫連續相同資料的統計方法Oracle資料庫
- 「Oracle」Oracle 資料庫安裝Oracle資料庫
- 資料庫審計是什麼意思?作用是什麼?資料庫
- oracle 細粒度審計(fga)Oracle
- oracle審計-細粒度(轉)Oracle
- (7) MySQL資料庫備份詳解MySql資料庫
- 資料庫框架Sugar的使用詳解資料庫框架
- SYBASE資料庫dbcc命令詳解(zt)資料庫