Oracle的Audit功能是Oracle數(shù)據(jù)庫(kù)提供的一種審計(jì)功能。這個(gè)功能可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作層面進(jìn)行記錄和監(jiān)管,從而保障數(shù)據(jù)庫(kù)的安全性和完整性。
舉個(gè)例子,某個(gè)數(shù)據(jù)庫(kù)管理員在某個(gè)時(shí)間點(diǎn)刪除了某個(gè)表,導(dǎo)致某個(gè)程序報(bào)錯(cuò)了。如果此時(shí)數(shù)據(jù)庫(kù)管理員無(wú)法確定是哪個(gè)人或者哪個(gè)程序刪除了表,那么就沒(méi)有辦法查找到這個(gè)問(wèn)題的根本原因。如果開(kāi)啟了Oracle的Audit功能,當(dāng)管理員刪除數(shù)據(jù)表時(shí)就會(huì)被記錄下來(lái),這樣就有跟蹤和解決問(wèn)題的依據(jù)。
Oracle的Audit功能支持對(duì)多個(gè)對(duì)象進(jìn)行記錄,包括:
? 用戶 ? 角色 ? 用戶組 ? 表、索引 ? 視圖、存儲(chǔ)過(guò)程 ? 用戶定義類(lèi)型、序列等
具體而言,可以對(duì)數(shù)據(jù)庫(kù)的DCLS操作(包括CREATE DATABASE、DROP DATABASE、ALTER DATABASE以及CREATE TABLESPACE、DROP TABLESPACE等等)進(jìn)行審計(jì)。
這里以AUDIT CREATE TABLE BY access;舉例。這條命令可以將對(duì)于ACCESS用戶自建表對(duì)象的創(chuàng)建進(jìn)行審計(jì)。當(dāng)AUDIT功能打開(kāi)時(shí),ACCESS用戶創(chuàng)建一個(gè)表,這個(gè)對(duì)象的創(chuàng)建記錄就會(huì)被寫(xiě)入到 AUD$ 表中。等到另一個(gè)管理員需要查看這個(gè)審計(jì)信息時(shí),可以利用SELECT語(yǔ)句進(jìn)行查詢,如下:
SELECT os_username,username,terminal,To_char(timestamp,'HH:MI:SS MM/DD/YYYY'),obj_name,action_name FROM sys.aud$ WHERE obj$creator='ACCESS' AND action='112' ORDER BY timestamp;
此時(shí)就可以查詢到所有的記錄,包括用戶名、操作行為、時(shí)間戳、對(duì)象名等信息。
除了將審計(jì)信息插入到AUD$表中外,還可以使用 Oracle自帶的DBMS_FGA包進(jìn)行審計(jì)。這個(gè)包的優(yōu)勢(shì)在于支持對(duì)SQL語(yǔ)句進(jìn)行審計(jì),是一個(gè)更為強(qiáng)大的審計(jì)工具。
綜上所述,Oracle的Audit功能可以為數(shù)據(jù)庫(kù)提供安全性和完整性保障。管理員可以通過(guò)這個(gè)功能來(lái)跟蹤和處理問(wèn)題,切實(shí)提高數(shù)據(jù)庫(kù)的可靠性和安全性。