'log in trigger'에 해당되는 글 1건

  1. 2015.05.09 LOGON ON TRIGGER를 이용한 접속제한 | TRACE 설정
ORACLE/ADMIN2015. 5. 9. 17:57
반응형

제품 : ORACLE SERVER

작성날짜 : 2003-12-03


LOGON ON TRIGGER를 이용한 접속제한 | TRACE 설정
===============================================

PURPOSE
-------
데이터베이스에 접속하는 IP, USERNAME으로 접속을 제한하거나, TRACE를 설정하는 방법에 
대하여 알아본다.

Explanation
-----------
DB를 접속하는 사용자를 USER/ROLE로 구분하여 관리하는 Accecs Policy 라면 관계 없지만 
하나의 USER/PASSWORD로 Application을 이용하는 경우에는 Application을 통해서만 
DB에 접속하도록 통제하는 것이 불가능하게 된다.

즉 일부 사용자가 PC에 설치된 SQL*Net을 통하여 SQL*Plus나 3rd party TOOL로 DB에 접속하여 
데이터의 열람/조작을 한다면 이를 방지하거나 추적하기가 어렵다.

아래 예제는 DB server로의 TELNET접속을 통한 특정 DB User(SCOTT)의 접속을 원천적으로 막고, 
특정 IP(152.69.41.232)로부터 접속하는 Session에 trace를 설정하는 예제이다.

REM ------------------------------------------------------------------------ 
REM DISCLAIMER: 
REM This script is provided for educational purposes only. It is NOT 
REM supported by Oracle World Wide Technical Support. 
REM The script has been tested and appears to work as intended. 
REM You should always run new scripts on a test instance initially. 
REM ------------------------------------------------------------------------ 
REM Main text of script follows: 

-- Use an error number in the range of -20000 to -20999 --

CREATE OR REPLACE TRIGGER SCOTT_LOGON_TRACE
AFTER LOGON ON SCOTT.SCHEMA
BEGIN
-- LOCAL=YES로 접속 못 하도록 설정 --
IF ( ORA_CLIENT_IP_ADDRESS IS NULL ) THEN
RAISE_APPLICATION_ERROR ( -20001
, 'Local connection as SCOTT is not allowed!'
);
-- LOOPBACK으로 접속 못 하도록 설정(DB server IP:152.69.41.21) --
ELSIF ( ORA_CLIENT_IP_ADDRESS = '152.69.41.21' ) THEN
RAISE_APPLICATION_ERROR ( -20002
, 'IP '
|| ORA_CLIENT_IP_ADDRESS
|| ' is not allowed to connect database as SCOTT!'
);
-- 특정 IP에 대하여 TRACE 설정 --
ELSIF ( ORA_CLIENT_IP_ADDRESS = '152.69.41.232' ) THEN
SYS.DBMS_SESSION.SET_SQL_TRACE(TRUE);
END IF;
END;
/
----------- cut ---------------------- cut -------------- cut -------------- 


Example
-------
sqlplus /nolog

SQL*Plus: Release 8.1.7.0.0 - Production on Wed Nov 6 17:16:57 2002

(c) Copyright 2000 Oracle Corporation. All rights reserved.

SQL> conn scott/tiger
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: Local connection as SCOTT is not allowed!
ORA-06512: at line 3


SQL> conn scott/tiger@kyulee
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20002: IP 152.69.41.21 is not allowed to connect database as SCOTT!
ORA-06512: at line 7


SQL> conn system/manager
Connected.


Reference Documents
-------------------
1.
<Note:178924.1>
http://metalink.oracle.com/metalink/plsql/ml2_documents.showNot?p_id=178924.1&p_font=

2.
Bulletin No: 11848
Product: ORACLE_SERVER
Subject: ORACLE 8I SYSTEM EVENT TRIGGER ( ORACLE 8.1.6 )


    반응형
    Posted by [PineTree]