qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

数据库安全审计

 用以下的方式可以监控登入登出的用户:
  创建如下的两张表:
create table login_log -- 登入登出信息表
(
session_id int not null, -- sessionid
login_on_time date, -- 登入进间
login_off_time date, -- 登出时间
user_in_db varchar2(30), -- 登入的db user
machine varchar2(20), -- 机器名
ip_address varchar2(20), -- ip地址
run_program varchar2(20) -- 以何程序登入
);
create table allow_user -- 网域用户表
(
ip_address varchar2(20), -- ip地址
login_user_name nvarchar2(20) -- 操作者姓名
);
  创建如下的两个触发器:
create or replace trigger login_on_info -- 记录登入信息的触发器
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'); --当前SESSION
END;
create or replace trigger login_off_info --记录登出信息的触发器
before logoff on database
Begin
update login_log set login_off_time = sysdate
where session_id = USERENV('SESSIONID'); --当前SESSION
exception
when others then
null;
END;

 方法二:
  用如下的方式可以审记执行drop动作的事件:
/**
* drop语句的审计日志表
*/
create table drop_log
(
session_id int not null, -- sessionid
drop_time date, -- drop的时间
ip_address varchar2(20), -- ip地址
object_owner varchar2(30), -- 对象的所有者
object_name varchar2(30), -- 对象名称
object_type varchar2(20), -- 对象类型
drop_by_user varchar2(30) -- 执行drop语句的用户
);
create or replace trigger drop_info
after drop on mfg0513user.schema -- 在mfg0513user用户上创建审记DROP的触发器
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 阅读(493) 评论(0)  编辑  收藏 所属分类: 测试学习专栏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜