16.審計(筆記)

tonykorn97發表於2006-04-24

16.審計

執行oracle資料庫時,各類人員經常會以資料庫使用者的身份登陸到資料庫,並執行各種資料庫操作(DML,DDL,DCL).為了跟蹤資料庫使用者所執行的各種資料庫操作,防止使用者執行非法操作,可以使用資料庫審計(Audit),審計用於監視使用者所執行的資料庫操作.並且oracle會將審計跟蹤結果放到OS檔案或資料庫中.



審計分為:

特權使用者審計

預設情況下,oracle會自動審計特權使用者所執行的特權操作,並將特權操作的相關資訊記載到作業系統的審計跟蹤記錄中,為了審計特權使用者所執行的其他資料庫操作,必須設定初始化引數audit_sys_operations.

資料庫審計

為了審計資料庫使用者所執行的操作,必須設定初始化引數AUDIT_TRAIL,並且指定要審計的資料庫操作.

應用審計.

使用資料庫審計時,oracle只會記載執行審計操作的使用者名稱,資料庫操作,操作物件以及操作時間等資訊.而不會記載資料的變化.為了審計資料變化,必須使用應用審計.

1,特權使用者審計

預設情況下,oracle只會審計特權使用者的連線,啟動資料庫和關閉資料庫的操作.為了審計特權使用者執行的其他操作資訊.必須將初始化引數AUDIT_SYS_OPERATIONS設定為TRUE.因為該引數是靜態引數,所有修改了該初始化引數戶必須重慶資料庫.

ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;


2,資料庫審計.

啟用資料庫審計

為了啟用資料庫審計,必須修改初始化引數AUDIT_TRAIL.該初始化引數的預設值為NONE,為了啟用資料庫審計,必須將該引數設定為OS或DB.設定初始化引數為DB時,oracle會將審計結果存放到資料字典AUD$中.

ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;


指定審計選項.

BY SESSION:該選項表示在同一個會話中對完全相同的SQL語句只生成一條審計跟蹤記錄,該選項是預設選擇.

BY ACCESS:該選項標識每執行一次語句生成一條審計跟蹤記錄.當審計DDL語句或DDL系統許可權時,無論指定BY ACCESS 還是 BY SESSION選項.oracle總是使用BY ACCESS選項.

BY 使用者名稱:該選項用於指定審計特定的資料庫使用者.如果不指定該選項.oracle會自動審計除特權使用者外的所有其他使用者.

WHENEVER [NOT] SUCCESSFUL: WHENEVER SUCCESSFUL選項用於指定審計執行成功的操作,WHENEVER NOT SUCCESSFUL選項用於指定審計失敗的操作.如果忽略這兩個選項,則操作無論成功與否都會被審計.


語句審計

語句審計用於審計與特定語句相關的SQL操作.例如,當指定審計USER語句時,oracle會審計CREATE USER,ALTER USER和DROP USER等操作

1,設定語句審計

SQL>AUDIT TABLE;

2,執行語句操作

3,顯示審計跟蹤結果.

啟用資料庫審計後,審計跟蹤會被記載到資料字典表SYS.AUD$中.透過查詢資料字典dba_audit_trail,可以取得審計跟蹤結果,包括OS使用者名稱,資料庫使用者名稱,操作名,物件名以及操作時間等資訊.

SELECT username,action_name,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

USERNAME 用於標識執行SQL操作的資料庫使用者名稱,ACTION_NAME用於標識具體的SQL操作,OBJ_NAME用於標識SQL操作對應的資料庫物件,TIMESTAMP用於標識SQL操作的執行時間.

4,顯示以及設定的審計選項.

SELECT user_name,audit_option FROM dba_stmt_audit_opts;

USER_NAME用於標識被審計的資料庫使用者名稱(空表示審計所有使用者),AUDIT_OPTION用於標識以及被設定的選項.

5,禁止語句審計

SQL>NOAUDIT TABLE;

許可權審計

許可權審計用於審計與系統許可權相關的SQL操作

1,指定許可權審計

AUDIT CREATE TABLE;

2,執行語句操作

3,顯示審計跟蹤結果.

啟用資料庫審計後,審計跟蹤會被記載到資料字典表SYS.AUD$中.透過查詢資料字典dba_audit_trail,可以取得審計跟蹤結果,包括OS使用者名稱,資料庫使用者名稱,操作名,物件名以及操作時間等資訊.

SELECT username,action_name,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

USERNAME 用於標識執行SQL操作的資料庫使用者名稱,ACTION_NAME用於標識具體的SQL操作,OBJ_NAME用於標識SQL操作對應的資料庫物件,TIMESTAMP用於標識SQL操作的執行時間.

4,顯示以及設定的審計選項.

SELECT user_name,privilege FROM dba_priv_audit_opts;

USER_NAME用於標識被審計的資料庫使用者名稱(空表示審計所有使用者),PRIVILEGE用於標識以及被設定的選項.

5,禁止語句審計

SQL>NOAUDIT CREATE TABLE;


物件審計

物件審計用於審計特定方案物件上的SQL操作.使用物件審計時,預設情況下,在同一個會話中相同SQL語句只被審計一次,為了審計每條被執行的SQL語句,需要指定BY ACCESS選項.

1,設定物件審計

AUDIT ALL ON scott.emp;

2,執行與物件審計相關的操作

3,查詢審計跟蹤記錄

SELECT username,ses_actions,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

SES_ACTIONS用於標識會話的SQL操作.

4,顯示以及設定的物件審計選項.

SELECT sel, ins, upd, del FROM dba_obj_audit_opts

WHERE owner=’scott’ AND object_name=’EMP’;

SEL用於標識SELECT審計選項,INS用於標識INSERT審計選項,UPD用於標識UPDATE審計選項,DEL用於標識UPDATE審計選項,OWNER用於標識物件所有者,OBJECT_NAME用於標識物件名.

5,禁止物件審計

NOAUDIT ALL ON scott.emp;


刪除審計跟蹤

DELETE FROM sys.aud$;

COMMIT;

使用精細審計(省略)


使用物件審計(省略)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245242/,如需轉載,請註明出處,否則將追究法律責任。

相關文章