數(shù)據(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, -- 登出時間
    user_in_db varchar2(30), -- 登入的db user
    machine varchar2(20), -- 機器名
    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)建如下的兩個觸發(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動作的事件:
    /**
    * 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) -- 執(zhí)行drop語句的用戶
    );
    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;