2011-12-15 21 views
0

現在、特定のアプリケーション(SQL Plus、SQL Developerなど)からOracleにログインするセッションのユーザー情報をトラップするログインtriggerがあります。この情報は監査の目的でテーブルに挿入されます。ログインユーザー入力を受け入れるトリガー

私たちがトラップしているこれらのアプリケーションの1つを介してユーザーがログインした場合、ログインする理由を誤った情報を入力し、その同じテーブルに監査目的で書き込むように求めます。

これを私たちがどのように行うことができるか、あるいはこれと同じことを達成するための他のアイデアはありますか?現在Login Trigger

begin 
    if (dba_monitor.get_program_name = 1) 
    then 
     insert into dba_monitor.logon_table2 
     (username,machine,program, logon_date) 
     select username,machine,program,sysdate 
     from v$session 
     where username=(select user from dual) 
     and username not in ('SYSMAN','DBSNMP'); 
    else 
     insert into dba_monitor.logon_table 
     (user_name,logon_date) 
     select username,sysdate 
     from v$session 
     where username=(select user from dual) 
     and username not in ('SYSMAN','DBSNMP'); 
    end if; 
end; 

DBA_MONITOR.GET_PROGRAM機能:

return varchar2 
is 
    audit_program number :=0; 
    audit_select number :=0; 
begin 
    select 1 
    into audit_program 
    from v$session 
    where audsid = sys_context('USERENV','sessionid') 
     and (upper(program) in ('SQLPLUS.EXE', 'SQLPLUSW.EXE', 'TOAD.EXE', 'GOLDEN32.EXE', 'MSACCESS.EXE')); 
    return(audit_program); 
exception 
    WHEN NO_DATA_FOUND 
    then 
     return(audit_select); 
end; 

答えて

4

ない可能 - トリガーがユーザーの入力を取ることができません。

常時ロックされているブレイク・ザ・グラス・ユーザー・アカウントを持っていて、ブレイク・ザ・グラス・ユーザー・アカウントをチェックアウトするときに、その時点でその正当性を入力させる方がよいでしょう。

ああ、あなたのアプリケーションのリストはセキュリティで保護されています。 osアプリケーション名をsqlplus.exeからfluffybunnies.exeに変更するのは簡単です。

関連する問題