AUDIT審計(2)

Davis_itpub發表於2018-06-27

二、審計位置

審計記錄可以傳送到SYS.AUD$資料庫表或作業系統檔案。為了啟用審計並指定記錄審計記錄的位置,將初始引數AUDIT_TRAIL 設定為如下幾個值之一:

NONE, FALSE

 禁用審計

OS

啟用審計將審計記錄傳送到作業系統檔案

DB, TRUE

 啟用審計,將審計記錄傳送到SYS.AUD$

DB_EXTENDED

啟用審計,將審計記錄傳送到SYS.AUD$表,並在CLOB SQLBIND SQLTEXT 中記錄額外的資訊

XML

 啟用審計,以XML 格式寫所有審計記錄

EXTENDED

 啟用審計,在審計跟蹤中記錄所有列,包括SqlText SqlBind 的值

 

引數AUDIT_TRAIL 不是動態的,為了使AUDIT_TRAIL 引數中的改動生效,必須關閉資料庫並重新啟動。在對SYS.AUD$表進行審計時,應該注意監控該表的大小,以避免影響SYS 表空間中其他物件的空間需求。推薦週期性歸檔SYS.AUD$中的行,並且擷取該表。

 

在Oracle11g 中CREATE SESSION 作為受審計的許可權來被記錄,因此當SYSTEM 表空間因磁碟空間而無法擴充套件時將導致這部分審計記錄無法生成,這將最終導致普通使用者的新會話將無法正常建立,普通使用者將無法登陸資料庫。在這種場景中仍可以使用SYSDBA 身份的使用者建立會話,在將審計資料合適備份後刪除一部分記錄,或者TRUNCATE AUD$都可以解決上述問題。在預設情況下會以AUTOEXTEND ON 自動擴充套件選項建立SYSTEM 表空間,因此係統表空間在必要時會自動增長,我們所需注意的是磁碟上的剩餘空間是否能夠滿足其增長需求,以及資料檔案擴充套件的上限,對於普通的8k smallfile 表空間而言單個資料檔案的最大尺寸是32G。

 

三、開戶審計功能

SQL> alter system set audit_trail=db_extended scope=spfile;

重啟資料庫生效:

SQL> startup force

 

四、語句審計:

對於語句審計,audit 命令的格式看起來如下所示:

AUDIT sql_statement_clause BY {SESSION |ACCESS}WHENEVER [NOT] SUCCESSFUL;

引數如下:

sql_statement_clause 包含很多條不同的資訊,例如希望審計的SQL 語句型別以及審計什麼人。

by access 在每次動作發生時都對其進行審計,by session 只審計一次。預設是by session。

whenever successful 審計成功的動作:沒有生成錯誤訊息的語句。

whenever not successful 審計語句的命令是否失敗

 

對於大多數類別的審計方法,如果確實希望審計所有型別的表訪問或某個使用者的任何許可權,則可以指定all 而不是單個的語句型別或物件。

 

表1-1 列出了可以審計的語句型別,並且在每個類別中包含了相關語句的簡要描述。如果指定all,則審計該列表中的任何語句。然而,表1-2 中的語句型別在啟用審計時不屬於all 類別;必須在audit 命令中顯式地指定它們。

 

表1-1 包括在ALL 類別中的可審計語句

 句 選 項

SQL 操作

ALTER SYSTEM

所有ALTER SYSTEM 選項,例如,動態改變例項參

數,切換到下一個日誌檔案組,以及終止使用者會話

CLUSTER

CREATEALTERDROP TRUNCATE 叢集

CONTEXT

CREATE CONTEXT DROP CONTEXT

DATABASE LINK

CREATE DROP 資料庫連結

DIMENSION

CREATEALTER DROP 維數

DIRECTORY

 CREATE DROP 目錄

INDEX

CREATEALTER DROP 索引

MATERIALIZED VIEW

CREATEALTER DROP 物化檢視

NOT EXISTS

由於不存在的引用物件而造成的SQL 語句的失敗

PROCEDURE

 CREATE DROP FUNCTIONLIBRARYPACKAGE

PACKAGE BODY PROCEDURE

PROFILE

 CREATEALTER DROP 配置檔案

PUBLIC DATABASE LINK

CREATE DROP 公有資料庫連結

PUBLIC SYNONYM

 CREATE DROP 公有同義詞

ROLE

CREATEALTERDROP SET 角色

ROLLBACK

SEGMENT CREATEALTER DROP 回滾段

SEQUENCE

 CREATE DROP 序列

SESSION

 登入和退出

SYNONYM

 CREATE DROP 同義詞

SYSTEM

 AUDIT 系統許可權的AUDIT NOAUDIT

SYSTEM GRANT

 GRANT REVOKE 系統許可權和角色

TABLE

CREATEDROP TRUNCATE 

TABLESPACE

 CREATEALTER DROP 表空間

TRIGGER

 CREATEALTER(啟用/禁用)DROP 觸發器;具有

ENABLE ALL TRIGGERS DISABLE ALL

TRIGGERS ALTER TABLE

TYPE

CREATEALTER DROP 型別以及型別主體

USER

CREATEALTER DROP 使用者

VIEW

CREATE DROP 檢視

 

 

 

表1-2 顯式指定的語句型別

 句 選 項

SQL 操 作

ALTER SEQUENCE

 任何ALTER SEQUENCE 命令

ALTER TABLE

任何ALTER TABLE 命令

COMMENT TABLE

 新增註釋到表、檢視、物化檢視或它們中的任何列

DELETE TABLE

 刪除表或檢視中的行

EXECUTE PROCEDURE

 執行程式包中的過程、函式或任何變數或遊標

GRANT DIRECTORY

 GRANT REVOKE DIRECTORY 物件上的許可權

GRANT PROCEDURE

 GRANT REVOKE 過程、函式或程式包上的許可權

GRANT SEQUENCE

GRANT REVOKE 序列上的許可權

GRANT TABLE

 GRANT REVOKE 表、檢視或物化檢視上的許可權

GRANT TYPE

 GRANT REVOKE TYPE 上的許可權

INSERT TABLE

 INSERT INTO 表或檢視

LOCK TABLE

 表或檢視上的LOCK TABLE 命令

SELECT SEQUENCE

 引用序列的CURRVAL NEXTVAL 的任何命令

SELECT TABLE

 SELECT FROM 表、檢視或物化檢視

UPDATE TABLE

 在表或檢視上執行UPDATE

 

注意:

從Oracle Database 11g 開始,只有在初始引數AUDIT_TRAIL 被設定為DB_EXTENDED 時,才填充DBA_AUDIT_TRAIL 中的列SQL_TEXT 和SQL_BIND。預設情況下,AUDIT_TRAIL 的值是DB。

 

示例

[oracle@ocp Desktop]$ rlwrap sqlplus / as sysdba

SYS@orcl>show parameter audit_trail

SYS@orcl> alter system set audit_trail=db_extended

scope=spfile;

SYS@orcl> startup force

SYS@orcl>show parameter audit_trail

SYS@orcl> alter user scott account unlock identified by

scott;

SYS@orcl> audit create table by scott by access;

SYS@orcl>select user_name,audit_option,success,failure from

dba_stmt_audit_opts where user_name='SCOTT';

SYS@orcl> conn scott/scott

SCOTT@orcl> create table tt(id int);

SCOTT@orcl> conn / as sysdba

SYS@orcl>select username,to_char(timestamp,'MM/DD/YY

HH24:MI') Timestamp,obj_name, action_name, sql_text from

dba_audit_trail where username= 'SCOTT';

 

使用noaudit 命令關閉審計,如下所示:

SYS@orcl> noaudit create table by scott;

SYS@orcl> conn scott/scott

SCOTT@orcl> create table ee(id int);

SCOTT@orcl> conn / as sysdba

SYS@orcl>select username,to_char(timestamp,'MM/DD/YY

HH24:MI') Timestamp,obj_name, action_name, sql_text from

dba_audit_trail where username= 'SCOTT';

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

相關文章