茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1671863 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00207.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2019/6/25 12:57:13

Oracle 審計功能

Oracle 審計功能

一. 簡介

審計(Audit)用於監視用戶所執行的數據庫操作,審計記錄可存在數據字典表(稱為審計記錄:存儲在system表空間中的 SYS.AUD$表中,可通過視圖dba_audit_trail查看)或操作系統審計記錄中(默認位置為 $ORACLE_BASE/admin/$ORACLE_SID/adump/).。默認情況下審計是沒有開啟的。

審計記錄包含有審計的操作、用戶執行的操作、操作的日期和時間等信息。

不管你是否打開數據庫的審計功能,以下這些操作系統會強制記錄:用管理員權限連接Instance;啟動數據庫;關閉數據庫。

二. 配置

2.1. 審計是否安裝

SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$; --沒有記錄返回
SQLPLUS> select * from dba_audit_trail; - 沒有記錄返回

如果做上述查詢的時候發現表不存在,說明審計相關的表還沒有安裝,需要安裝, 安裝後要重啟數據庫

SQLPLUS> connect / as sysdba
SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql

2.2. 審計表空間遷移

審計表默認安裝在SYSTEM表空間。可以將相關表遷移到其他表空間


SQL>connect / as sysdba;
SQL> alter table aud$ move tablespace new_tablespace;
SQL> alter index I_aud1 rebuild online tablespace new_tablespace;
SQL> alter table audit$ move tablespace new_tablespace;
SQL> alter index i_audit rebuild online tablespace new_tablespace;
SQL> alter table audit_actions move tablespace new_tablespace;
SQL> alter index i_audit_actions rebuild online tablespace new_tablespace;

2.3. 審計參數

Audit_sys_operations

是否對sysdba用戶做審計 ,關於sysdba用戶審計的結果,linux存放在audit_file_dest參數指定位置的aud文件中,windows存放在事件查看器的系統日誌中

Audit_trail

None:是默認值,不做審計;
DB:將audit trail 記錄在數據庫的審計相關表中,如aud$,審計的結果只有連接信息;
DB,Extended:這樣審計結果裡面除了連接信息還包含了當時執行的具體語句;
OS:將audit trail 記錄在操作系統文件中,文件名由audit_file_dest參數指定;
XML:10g裡新增的。
註:這兩個參數是static參數,需要重新啟動數據庫才能生效

2.4. 審計級別

當開啟審計功能後,可在三個級別對數據庫進行審計:Statement(語句)、Privilege(權限)、object(對像)。

Statement
按語句來審計,比如audit table 會審計數據庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy用戶所有的數據庫連接。

Privilege
按權限來審計,當用戶使用了該權限則被審計,如執行grant select any table to a,當執行了audit select any table語句後,當用戶a 訪問了用戶b的表時(如select * from b.t)會用到select any table權限,故會被審計。注意用戶是自己表的所有者,所以用戶訪問自己的表不會被審計。

Object

按對像審計,只審計on關鍵字指定對象的相關操作,如aduit alter,delete,drop,insert on cmy.t by scott; 這裡會對cmy用戶的t表進行審計,但同時使用了by子句,所以只會對scott用戶發起的操作進行審計。

注意Oracle沒有提供對schema中所有對象的審計功能,只能一個一個對像審計,對於後面創建的對象,Oracle則提供on default子句來實現自動審計,比如執行audit drop on default by access;後, 對於隨後創建的對象的drop操作都會審計。但這個default會對之後創建的所有數據庫對像有效,似乎沒辦法指定只對某個用戶創建的對象有效,想比trigger可以對schema的DDL進行「審計」,這個功能稍顯不足。

2.5. 其他審計選項

by access 每一個被審計的操作都會生成一條audit trail。

by session 一個會話裡面同類型的操作只會生成一條audit trail,默認為by session。

whenever successful 操作成功(dba_audit_trail中returncode字段為0) 才審計,

whenever not successful 反之。省略該子句的話,不管操作成功與否都會審計。

2.6. 審計相關視圖

dba_audit_trail:保存所有的audit trail,實際上它只是一個基於aud$的視圖。其它的視圖dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一個子集。

dba_stmt_audit_opts:可以用來查看statement審計級別的audit options,即數據庫設置過哪些statement級別的審計。dba_obj_audit_opts,dba_priv_audit_opts視圖功能與之類似

all_def_audit_opts:用來查看數據庫用on default子句設置了哪些默認對像審計。


三. 使用

3.1. 開啟/關閉審計

開啟審計
alter system set audit_sys_operations=TRUE scope=spfile;

alter system set audit_trail=db,extended scope=spfile;

關閉審計
alter system set audit_trail=none;

3.2. 表操作審計

設置審計內容
audit all by lyj by access;
audit select table, update table, insert table, delete table by lyj by access;
audit execute procedure by lyj by access;

AUDIT DELETE ANY TABLE; --審計刪除表的操作

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL; --只審計刪除失敗的情況

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL; --只審計刪除成功的情況

AUDIT DELETE,UPDATE,INSERT ON user.table by SYSTEM; --審計SYSTEM用戶對表user.table的delete,update,insert操作

如果在命令後面添加by user則只對user的操作進行審計,如果省去by用戶,則對系統中所有的用戶進行審計(不包含sys用戶).

noaudit all on t_test; 撤銷審計

truncate table aud$; 清空審計表內容

附錄

http://www.cnblogs.com/CodingArt/articles/1653315.html
http://www.dbase.cc/2017/09/13/oracle/oracle%E5%AE%A1%E8%AE%A1/


原文出處:
Oracle 审计功能 - Xuty - 博客园
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|