現在、特定のアプリケーション(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;