您好,登錄后才能下訂單哦!
數據庫版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
一、審計類型
ORACLE的審計技術,除了SYSDBA審計之外,還有數據庫審計、基于值的審計、細粒度審計。
SQL> show parameter audit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/orcl/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string DB
1.1 SYSDBA審計
audit_sys_operations(默認為false)設置為TRUE,那么作為SYSDBA或SYSOPER連接數據庫的用戶所發(fā)布的每條語句都會被寫入操作系統(tǒng)審核跟蹤,從而能夠給出DBA所進行操作的完整記錄。
alter system set audit_sys_operations=TRUE scope=spfile;
之后重啟數據庫。
之后DBA的操作都會被記錄在審計文件中。
1.2 數據庫審計
設置數據庫審計之前,必須設置audit_trail的值,這個參數可以具有以下值:
NONE(或者FALSE):禁用數據庫審計
OS:審計記錄會被寫至操作系統(tǒng)的文件中;
DB:審計記錄寫到SYS.AUD$中。
DB_EXTENDED:與DB作用大體相同,不過包含生成審計記錄的、具有綁定變量的SQL語句。
XML:與OS作用大體相同,但使用XML標記設置格式。
XML_EXTENDED:與XML作用大體相同,但使用SQL語句和綁定變量。
例如對scott上的emp表做審核
如果audit_trail的值是“DB",那么就看不到執(zhí)行的語句,因此修改成:
alter system set audit_trail=DB_EXTENDED scope=spfile;
重啟數據庫。
audit select,delete,update on scott.emp by access;
--關閉審計:noaudit
select * from emp;
update emp
set comm=1500
where empno=7900;
insert into emp
select 7935,ename,job,mgr,hiredate,sal,comm,deptno
from emp
where empno=7934;
delete from emp
where empno=7935;
--查看審計信息
select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,
sessionid,os_process,sql_text
from dba_audit_trail
where obj_name='EMP'
order by timestamp desc;
如果audit_trail的值是DB,則看不到sql_text的信息,因此將audit_trail修改成db_extended,重新運行一次。
1.3 基于觸發(fā)器執(zhí)行基于值的審計
使用觸發(fā)器配合審計,將變更的值記錄到某個表中。即使不配置審計策略,也可以執(zhí)行。
例如,我們對scott.emp表上comm列的變更值比較感興趣,就可以建立一個觸發(fā)器,將操作的值寫入到表中。
create table AUDIT_VALUE_TRAIL
(
terminal VARCHAR2(256),
sessionid VARCHAR2(256),
isdba VARCHAR2(256),
current_user VARCHAR2(256),
os_user VARCHAR2(256),
ip_address VARCHAR2(256),
obj_user VARCHAR2(10),
obj_name VARCHAR2(22),
act_value VARCHAR2(255)
);
create or replace trigger tri_emp_audit
after update of comm on scott.emp
referencing new as new old as old
for each row
begin
if :old.comm !=:new.comm then
insert into sys.audit_value_trail
values(SYS_CONTEXT('USERENV','TERMINAL'),
SYS_CONTEXT('USERENV','sessionid'),
SYS_CONTEXT('USERENV','ISDBA'),
SYS_CONTEXT('USERENV','CURRENT_USER'),
SYS_CONTEXT('USERENV','OS_USER'),
SYS_CONTEXT('USERENV','IP_ADDRESS'),
'scott','emp',:new.empno||' comm is changed from '||:old.comm ||'to '||:new.comm );
end if;
end;
/
執(zhí)行:
update emp
set comm=2000
where empno=7900;
commit;
對比dba_audit_trail、audit_value_trail的結果是否一樣。
1.4 細粒度審計(FGA)
細粒度審計可以配置為只在訪問特定行或特定行的特定列時生成審計記錄,此外還可以配置為在違反審計條件時運行一個PL/SQL代碼塊。
配置FGA將會涉及包DBMS_FGA,為了創(chuàng)建一個FGA審計策略,需要使用add_policy過程,這個過程接受下表所示的參數:
參考資料:《OCP/OCA 認證考試指南全冊》 第六章:ORACLE安全性 第6節(jié)使用標準數據庫審核
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。