Oracle11g audit審計配置全過程
一、audit是什么?
Oracle的審計功能允許數(shù)據(jù)庫管理員跟蹤和記錄對數(shù)據(jù)庫的操作,以確保數(shù)據(jù)庫的安全性、合規(guī)性和完整性。
Oracle提供了多種審計功能和方法,可以針對不同的需求和場景進行配置和使用,主要包括:
- 標準審計(Standard Auditing):用于審計特定的SQL語句、特權、對象和操作。
- 細粒度審計(Fine-Grained Auditing, FGA):允許對表級別的數(shù)據(jù)訪問進行細粒度控制和審計。
- 統(tǒng)一審計(Unified Auditing):Oracle 12c引入的新特性,整合了標準審計、FGA等多種審計方式。
二、啟用audit
要啟用數(shù)據(jù)庫審計,需要初始化參數(shù) AUDIT_TRAIL :
| 參數(shù)值 | 含義 |
|---|---|
| none | 默認值,不做審計 |
| db | 啟用數(shù)據(jù)庫審計并將所有審計記錄指向數(shù)據(jù)庫審計跟蹤 (SYS.AUD$) 中 |
| db_extended | 完成 AUDIT_TRAIL=DB 的全部操作并填充 SYS.AUD$ 表的 SQL 綁定和 SQL 文本列 |
| xml | 啟用數(shù)據(jù)庫審計并將所有審計記錄以 XML 格式指向一個操作系統(tǒng)文件 |
| os | 啟用數(shù)據(jù)庫審計并將所有審計記錄指向一個操作系統(tǒng)文件 |
此外,還應設置以下數(shù)據(jù)庫參數(shù):
- AUDIT_FILE_DEST :指定操作系統(tǒng)審計跟蹤位置的動態(tài)參數(shù),默認位置為 $ORACLE_BASE/admin/$ORACLE_SID/adump。
- AUDIT_SYS_OPERATIONS :啟用對用戶 SYS 以及使用 SYSDBA、SYSOPER、SYSASM、SYSBACKUP、SYSKM 和 SYSDG 權限進行連接的用戶發(fā)出的操作的審計,該參數(shù)應當設為 true。
可以通過以下命令修改參數(shù)
alter system set audit_sys_operations=TRUE scope=spfile; alter system set audit_trail=db_extended scope=spfile;
重啟數(shù)據(jù)庫才能生效
shutdown immediate; startup;
查看是否啟動了審計功能
show parameter audit;
三、配置標準審計
標準審計是 Oracle 數(shù)據(jù)庫的基本審計級別,可對數(shù)據(jù)庫對象(如表、視圖、過程等)的操作進行審計。
審計記錄包括對 DDL 和 DML 操作的記錄,例如對表的 SELECT、UPDATE、INSERT 或 DELETE 操作進行記錄。
標準審計可以通過 AUDIT 和 NOAUDIT 命令進行配置。
AUDIT語法
AUDIT action [, action, ...] on object_name [by user] [whenever condition];
- action: 指定要審計的操作,可以是單個操作(如 SELECT、INSERT、UPDATE、DELETE)或多個操作的組合。
- object_name: 指定要審計的對象,可以是表、視圖、過程等數(shù)據(jù)庫對象。
- BY user: 可選項,指定要審計的用戶。如果不指定,默認為當前用戶。
- WHENEVER condition: 可選項,指定觸發(fā)審計的條件,例如成功或失敗。
AUDIT 參數(shù)說明 - action:
單個操作:SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、SYSTEM AUDIT、SESSION AUDIT等。
多個操作組合:用逗號分隔,例如 SELECT, INSERT, UPDATE 表示同時審計這三種操作。 - object_name:
表示要審計的對象,可以是表名、視圖名、過程名等數(shù)據(jù)庫對象。
也可以使用 ALL 來審計所有對象,或者使用通配符 % 來匹配多個對象。 - by user:
指定要審計的用戶,可以是具體用戶名或者 PUBLIC(對所有用戶生效)。
如果不指定 BY user,默認為當前用戶。 - whenever condition:
可以用來指定觸發(fā)審計的條件,常見的條件包括 SUCCESSFUL(成功操作)和 NOT SUCCESSFUL(失敗操作)。
例如,WHENEVER SUCCESSFUL 表示只審計成功的操作,而 WHENEVER NOT SUCCESSFUL 表示只審計失敗的操作。
示例:
審計對特定表的SELECT操作:
AUDIT SELECT ON employees;
審計特定用戶對特定表的SELECT操作:
AUDIT SELECT ON employees BY hr_user;
審計對特定表的失敗的SELECT操作:
AUDIT SELECT ON employees WHENEVER NOT SUCCESSFUL;
可以通過以下查詢顯示已啟用的審計選項和配置,以及審計的狀態(tài)信息。
SELECT * FROM DBA_PRIV_AUDIT_OPTS; -- 查看特權操作的審計配置 SELECT * FROM DBA_STMT_AUDIT_OPTS; -- 查看語句級操作的審計配置 SELECT * FROM DBA_OBJ_AUDIT_OPTS; -- 查看對象級操作的審計配置
通過使用 AUDIT 語句,管理員可以靈活地配置審計策略,跟蹤和記錄數(shù)據(jù)庫中特定操作的執(zhí)行情況,以確保數(shù)據(jù)庫的安全性和合規(guī)性。
四、審計記錄管理
審計記錄管理包括查看、存檔和清理審計記錄。
1.查看審計記錄
可以通過以下視圖查看審計記錄:
DBA_AUDIT_TRAIL:查看標準審計記錄。 DBA_FGA_AUDIT_TRAIL:查看細粒度審計記錄。 UNIFIED_AUDIT_TRAIL:查看統(tǒng)一審計記錄。
2.清理審計記錄
可以定期清理過期的審計記錄,以避免占用過多的存儲空間。
例如:
- 刪除30天前的標準審計記錄:
DELETE FROM SYS.AUD$ WHERE TIMESTAMP# < SYSDATE - 30;
- 刪除30天前的細粒度審計記錄:
DELETE FROM DBA_FGA_AUDIT_TRAIL WHERE TIMESTAMP < SYSDATE - 30;
請注意,開啟審計功能可能會對數(shù)據(jù)庫性能產(chǎn)生一定影響,因此應根據(jù)實際需求和安全政策來配置審計選項,并定期維護審計記錄以保證數(shù)據(jù)庫的安全性和合規(guī)性。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
在Oracle數(shù)據(jù)庫中添加外鍵約束的方法詳解
這篇文章主要介紹了在Oracle數(shù)據(jù)庫中添加外鍵約束的方法,需要的朋友可以參考下2016-01-01
Oracle連接出現(xiàn)ora-12154無法解析指定的連接標識符
這篇文章主要介紹了Oracle連接出現(xiàn)ora-12154無法解析指定的連接標識符,需要的朋友可以參考下2017-03-03
[Oracle] Data Guard 之 三種保護模式介紹
Data Guard提供如下三種數(shù)據(jù)保護模式,以下是對這三種保護模式進行了詳細的分析介紹,需要的朋友可以參考下2013-07-07
Oracle 實現(xiàn)類似SQL Server中自增字段的一個辦法
由于Oracle中沒有類似SQL Server中的自增字段,所以我們?nèi)绻胍ㄟ^設定類似ID性質(zhì)的唯一列的話,需要借助Oracle的sequence,先建立一個序列,然后在每次插入數(shù)據(jù)的時候,通過前觸發(fā)器來更新ID值,并將序列的序號加1,這樣的迂回方式來實現(xiàn)。2009-07-07
Oracle數(shù)據(jù)庫把多行轉一列逗號分割兩種方法
Oracle將行轉換為列是指將關系型數(shù)據(jù)庫中的行數(shù)據(jù)轉換為列數(shù)據(jù)的操作,這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫把多行轉一列逗號分割兩種方法的相關資料,需要的朋友可以參考下2024-07-07

