数据库安全审计

用以下的方式可以监控登入登出的用户

用以下的方式可以监控登入登出的用户:

创建如下的两张表:

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;

你可能感兴趣的:(数据库,职场,休闲)