【審計】標準資料庫審計
(預設位置為$ ORACLE_BASE/admin/$ORACLE_SID/adump/)或資料庫(儲存在system表空間中的
SYS.AUD$表中,可透過檢視 dba_audit_trail檢視)中。預設情況下審計是沒有開啟的。
強制審計:不管你是否開啟資料庫的審計功能,以下這些作業系統會強制記錄:
用管理員許可權連線Instance;啟動資料庫;關閉資料庫。
和審計相關的兩個主要引數:
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:是10g預設值,不做審計;11g預設值DB,將審計結果記錄到aud$表中;
審計:
.1 強制性審計
啟停資料庫等動作,都記錄在了 alert 日誌中,這些就是強制審計,是 oracle 自動開啟的。
.2 標準資料庫審計
show parameter audit_trail
.3 基於值審計
這個是透過我們自己編寫的觸發器來完成的。
.4 細粒度審計 (FGA)
可以針對某一列進行更細緻的審計
.5 DBA 審計
安全管理員對 DBA 的審計
標準資料庫審計
- 審計語法:
audit sql_statement_clause by {session | access} whenever [not]
successful;
by session,在一個會話中,同型別的操作只審計一條
by access,每個符合審計的操作全部審計
- 審計相關引數( audit_trail):
audit_trail = { none | os | db [,
extended] | xml [, extended] }
none: 10g 預設值,不做審計;
os:將 audit trail 記錄在作業系統檔案中,檔名由 audit_file_dest 引數指定;
db: 11g 預設值,將審計結果記錄到 aud$表中;
db,extended:將審計結果記錄到 aud$表中,同時包括繫結變數及 CLOB 欄位;
xml:記錄 OS 檔案的是 XML 格式的審計記錄;
xml,extended:記錄OS 檔案的是 XML 格式的審計記錄,同時包括繫結變數及 CLOB 欄位。
oracle10g:預設審計引數為 NONE,即未開啟
Oracle11g:預設審計引數為 DB
實驗開始:
——檢視審計是否開啟: (DB表示為11g預設引數)
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------
audit_trail string DB
注:儲存審計資訊的表( aud$)的預設表空間為 system, system 表空間是不建議用的,所以最好為表aud$單獨建立一個表空間用於儲存審計資料。
——驗證:
SYS@ORA11GR2>select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ SYSTEM
1) 建立 ts_audit 表空間,用於儲存審計資訊
SYS@ORA11GR2>create tablespace ts_audit datafile '/u01/app/oracle/oradata/ORA11GR2/ts_audit_01.dbf' size 10m autoextend on next 10m;
Tablespace created.
2) 將儲存審計資訊的表 move 到 ts_audit 表空間
SYS@ORA11GR2>alter table aud$ move tablespace ts_audit;
Table altered.
——驗證:
SYS@ORA11GR2>select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ TS_AUDIT
【考慮將 aud$中 clob 欄位單獨儲存一個表空間,如下
alter table sys.aud$ move lob(sqlbind) store as( tablespace USERS);
alter table sys.aud$ move lob(SQLTEXT) store as( tablespace USERS);
oracle10g 中,還可以考慮將索引 move 一個新的表空間, oracle11g 中 aud$表已無索引
alter index sys.I_AUD1 rebuild tablespace users;】
3) 檢視審計引數並對其修改,改為儲存到資料庫並記錄繫結變數
--檢視當前資料庫中引數 audit_trail 的值
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB
--修改為審計記錄儲存到資料庫中並且包含 clob 欄位
SYS@ORA11GR2>alter system set audit_trail=db,extended scope=spfile;
System altered.
SYS@ORA11GR2>startup force;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 503319672 bytes
Database Buffers 322961408 bytes
Redo Buffers 2392064 bytes
Database mounted.
Database opened.
——驗證:
SYS@ORA11GR2>show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string DB, EXTENDED
4) 登入 scott 使用者,建立 t 表並開啟 update 審計,使用 by access 子句,每次 update 都審計
SCOTT@ORA11GR2>create table t(x int);
Table created.
SCOTT@ORA11GR2>insert into t values(9);
1 row created.
SCOTT@ORA11GR2>commit;
Commit complete.
——在scott使用者下對t表進行access級別的審計
SCOTT@ORA11GR2>audit update on t by access; 表示對t表的每次更新操作進行審計
(by access,每個符合審計的操作全部審計;by session,在一個會話中,同型別的操作只審計一條)
Audit succeeded.
5) 使用繫結變數的 sql 進行 update 測試
SCOTT@ORA11GR2>var v_num number;
SCOTT@ORA11GR2>exec :v_num:=1000; (:v_num繫結變數,:v_num:=給繫結變數授予一個值)
PL/SQL procedure successfully completed.
SCOTT@ORA11GR2>update t set x=:v_num;
1 row updated.
SCOTT@ORA11GR2>commit;
Commit complete.
6) 返回 sys 賬戶,驗證結果
SYS@ORA11GR2>select username,sql_text,sql_bind from dba_audit_trail where sql_text='update t set x=:v_num';
USERNAME SQL_TEXT SQL_BIND
---------- ------------------------- ---------------
SCOTT update t set x=:v_num #1(4):1000
7) 另: sql 語句中“&變數”非繫結變數,在審計表中也可以清晰的看出來
SYS@ORA11GR2>conn scott/tiger
Connected.
SCOTT@ORA11GR2>select * from t;
X
----------
1000
SCOTT@ORA11GR2>update t set x=&val;
Enter value for val: 9
old 1: update t set x=&val
new 1: update t set x=9
1 row updated.
SCOTT@ORA11GR2>commit;
Commit complete.
——檢視:
SCOTT@ORA11GR2>conn / as sysdba
SYS@ORA11GR2>select username,sql_text,sql_bind from dba_audit_trail where sql_text like 'update t set x=%';
USERNAME SQL_TEXT SQL_BIND
---------- ------------------------- ---------------
SCOTT update t set x=:v_num #1(4):1000
SCOTT update t set x=9
8) 取消審計(取消語句無需寫 by access 子句)
SYS@ORA11GR2>conn scott/tiger
Connected.
SCOTT@ORA11GR2>noaudit update on t;
Noaudit succeeded.
實驗結束!!!!!!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2126850/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE資料庫標準審計Oracle資料庫
- 標準資料審計
- oracle標準審計Oracle
- 【安全】oracle 標準審計Oracle
- Oracle Database標準審計和細粒度審計功能OracleDatabase
- 資料庫審計-hexorbase資料庫HexoORB
- 拍拍貸資料庫審計資料庫
- 資料庫DDL操作審計資料庫
- MySQL資料庫審計系統MySql資料庫
- Access資料庫審計工具mdbtools資料庫
- ORACLE 資料庫審計詳解Oracle資料庫
- 審計Oracle資料庫的使用Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(一)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(二)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(三)Oracle資料庫
- 資料庫審計技術進化資料庫
- 開啟mysql 資料庫審計功能。MySql資料庫
- Oracle資料庫審計功能介紹Oracle資料庫
- openGauss 設定資料庫審計資料庫
- 安全管理:polardb資料庫審計功能資料庫
- 【FGA】將FGA細粒度審計功能的審計結果記錄在資料庫中資料庫
- 【實驗】【審計】【FGA】使用Oracle的審計功能監控資料庫中的可疑操作Oracle資料庫
- 資料庫安全審計在資料安全中的功能資料庫
- 審計資料庫登陸登出觸發器資料庫觸發器
- 資料庫審計(create/alter/drop table、user、tablespace)資料庫
- limanmanExp資料庫審計設計思路與重要程式碼資料庫
- 某銀行私有云資料庫審計專案資料庫
- 審計資料庫登陸失敗觸發器資料庫觸發器
- 舉例說明Oracle資料庫審計的用法Oracle資料庫
- DM7審計之物件審計物件
- Oracle 標準審計,設定AUDIT_SYSLOG _LEVEL引數Oracle
- 管理AUDIT_TRAIL初始化引數配置標準審計AI
- 雲審計與大資料審計:區別、優勢與應用場景大資料
- 資料庫審計是什麼意思?作用是什麼?資料庫
- 沒有審計系統就沒有資料庫安全資料庫
- DBA必讀:Oracle資料庫審計七宗罪Oracle資料庫
- Oracle審計Oracle
- audit審計