web-dev-qa-db-ja.com

データポンプのログオンをローカルホストに制限する方法

Oracle 12cデータベースに、完全なデータポンプのエクスポートとインポートを実行するために使用されるユーザーがいます。そのユーザーからローカルホストへのログオンを制限したいと思います。

ログオントリガーを作成しようとしました:

create or replace trigger logon_trigger 
  after logon on database
declare
  Host varchar2(50);
begin 
  Host := trim(lower(sys_context('USERENV', 'Host')));
  if lower(user) = '<data pump user>' then
    if Host <> '<hostname>' then
      raise_application_error(-20000, 'Login not allowed');
    end if;
  end if;
end;
/

監査証跡から、このトリガーが発生したことがわかります(ORA-20000:ログインは許可されていません)が、ユーザーは引き続きリモートホストからのログオンを許可されています。

この制限は通常のユーザーには機能しますが、データポンプユーザーには機能しません。これは、exp_full_databaseロールとimp_full_databaseロールと関係があると思います。

このトリガーを機能させる方法はありますか、それともローカルOS認証を使用する必要がありますか?

1
sjk

ADMINISTER DATABASE TRIGGER特権により、ログオントリガーがエラーをスキップします(ドキュメントID 265012.1)

ADMINISTER DATABASE TRIGGER Privilege Behavior with Database Logon Trigger
--------------------------------------------------------------------------
Logon triggers can be used to mediate database access: when the restrictive 
conditions are not met, an application error with a message is raised that 
causes the logon to be denied.

...

However, we need to keep at least one user who can still connect when there is 
a problem : a fallback mechanism must exist where an administrative user is 
exempt from such errors of a prohibited connection. 

Any user granted the ADMINISTER DATABASE TRIGGER system privilege can still 
connect : instead of getting the error causing the session to be terminated, 
the error is recorded in the alert.log and a trace file in user_dump_dest.

そして:

select * from dba_sys_privs where privilege = 'ADMINISTER DATABASE TRIGGER';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
WMSYS                          ADMINISTER DATABASE TRIGGER              NO 
DBA                            ADMINISTER DATABASE TRIGGER              YES
SYS                            ADMINISTER DATABASE TRIGGER              NO 
IMP_FULL_DATABASE              ADMINISTER DATABASE TRIGGER              NO 

そうです、ローカルOS認証を試すことができます。

1
Balazs Papp