數(shù)據(jù)庫(kù)安全審計(jì)
用以下的方式可以監(jiān)控登入登出的用戶:
創(chuàng)建如下的兩張表:
create table login_log -- 登入登出信息表 ( session_id int not null, -- sessionid login_on_time date, -- 登入進(jìn)間 login_off_time date, -- 登出時(shí)間 user_in_db varchar2(30), -- 登入的db user machine varchar2(20), -- 機(jī)器名 ip_address varchar2(20), -- ip地址 run_program varchar2(20) -- 以何程序登入 ); create table allow_user -- 網(wǎng)域用戶表 ( ip_address varchar2(20), -- ip地址 login_user_name nvarchar2(20) -- 操作者姓名 ); |
創(chuàng)建如下的兩個(gè)觸發(fā)器:
create or replace trigger login_on_info -- 記錄登入信息的觸發(fā)器 after logon on database Begin insert into login_log(session_id,login_on_time,login_off_time,user_in_db,machine,ip_address,run_program) select AUDSID,sysdate,null,sys.login_user,machine,SYS_CONTEXT('USERENV','IP_ADDRESS'),program from v$session where AUDSID = USERENV('SESSIONID'); --當(dāng)前SESSION END; create or replace trigger login_off_info --記錄登出信息的觸發(fā)器 before logoff on database Begin update login_log set login_off_time = sysdate where session_id = USERENV('SESSIONID'); --當(dāng)前SESSION exception when others then null; END; |
方法二:
用如下的方式可以審記執(zhí)行drop動(dòng)作的事件:
/** * drop語(yǔ)句的審計(jì)日志表 */ create table drop_log ( session_id int not null, -- sessionid drop_time date, -- drop的時(shí)間 ip_address varchar2(20), -- ip地址 object_owner varchar2(30), -- 對(duì)象的所有者 object_name varchar2(30), -- 對(duì)象名稱 object_type varchar2(20), -- 對(duì)象類型 drop_by_user varchar2(30) -- 執(zhí)行drop語(yǔ)句的用戶 ); create or replace trigger drop_info after drop on mfg0513user.schema -- 在mfg0513user用戶上創(chuàng)建審記DROP的觸發(fā)器 begin insert into drop_log (session_id, drop_time, ip_address, object_owner, object_name, object_type, drop_by_user) values(USERENV('SESSIONID'), sysdate, SYS_CONTEXT('USERENV','IP_ADDRESS'), sys.dictionary_obj_owner, sys.dictionary_obj_name, sys.dictionary_obj_type, sys.login_user); end; |
posted on 2014-07-25 13:22 順其自然EVO 閱讀(528) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄