Oracle的審計功能概述

來源:互聯網
上載者:User

1、什麼是審計

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

當資料庫的審計是使能的,在語句執行階段產生審計記錄。審計記錄包含有審計的操作、使用者執行的操作、操作的日期和時間等資訊。

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

(1)Oracle審計功能

審計是對選定的使用者動作的監控和記錄,通常用於:

審查可疑的活動。例如:資料被非授權使用者所刪除,此時安全性系統管理員可決定對該 資料庫的所有串連進行審計,以及對資料庫的所有表的成功地或不成功地刪除進行審計。

監視和收集關於指定資料庫活動的資料。例如:DBA可收集哪些被修改、執行了多少次邏輯的I/O等統計資料。

ORACLE所允許的審計選擇限於下列方面:

審計語句的成功執行、不成功執行,或者其兩者。

對每一使用者會話審計語句執行一次或者對語句每次執行審計一次。

對全部使用者或指定使用者的活動的審計。

(2)審計相關的表安裝

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

審計表安裝在SYSTEM資料表空間。所以要確保SYSTEM資料表空間又足夠的空間存放審計資訊。

安裝後要重啟資料庫

將審計相關的表移動到其他資料表空間

由於AUD$表等審計相關的表存放在SYSTEM資料表空間,因此為了不影響系統的效能,保護SYSTEM資料表空間,最好把AUD$移動到其他的資料表空間上。可以使用下面的語句來進行移動:

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、和審計相關的兩個主要參數

(1)Audit_sys_operations:

預設為false,當設定為true時,所有sys使用者(包括以sysdba, sysoper身份登入的使用者)的操作都會被記錄,audit trail不會寫在aud$表中,這個很好理解,如果資料庫還未啟動aud$不可用,那麼像conn /as sysdba這樣的串連資訊,只能記錄在其它地方。如果是windows平台,audti trail會記錄在windows的事件管理中,如果是linux/unix平台則會記錄在audit_file_dest參數指定的檔案中。

(2)Audit_trail:

None:是預設值,不做審計;

DB:將audit trail 記錄在資料庫的審計相關表中,如aud$,審計的結果只有串連資訊;

DB,Extended:這樣審計結果裡面除了串連資訊還包含了當時執行的具體語句;

OS:將audit trail 記錄在作業系統檔案中,檔案名稱由audit_file_dest參數指定;

XML:10g裡新增的。

註:這兩個參數是static參數,需要重新啟動資料庫才會生效。

3、審計層級

當開啟審計功能後,可在三個層級對資料庫進行審計:Statement(語句)、Privilege(許可權)、object(對象)。

(1)Statement:

語句審計,對某種類型的SQL語句審計,不指定結構或對象。比如audit table 會審計資料庫中所有的create table,drop table,truncate table語句,alter session by cmy會審計cmy使用者所有的資料庫連接。

(2)Privilege:

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

(3)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進行“審計”,這個功能稍顯不足。

4、審計的一些其他選項

(1)by access / by session:

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

by session 一個會話裡面同類型的操作只會產生一條audit trail,預設為by session。

(2)whenever [not] successful:

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

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

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45406.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.