DBA/Oracle

접속한 유저의 IP확인

da-dba 2024. 4. 4. 15:06
/* 참고 SELECT SYS_CONTEXT('USERENV', 'IP_ADDRESS')||'/'||SYS_CONTEXT('USERENV', 'SESSION_USER') FROM DUAL ;
 접속한 유저의 ID와 IP가져오는 방법
 */
 
1) 유저별 IP 관리 테이블 생성
CREATE TABLE USER_INFO (
USER_ID VARCHAR(30),
USER_IP VARCHAR(15) );
 
 
2) 속도를 위해 인덱스 생성/초기 건이 작아 FULL스캔이 더 효과적이라 인덱스 불필요하지만 향후 많아질 경우를 대비
CREATE INDEX IDX_USER_INFO
      ON USER_INFO (USER_ID)
 
3) 셈플 데이터 입력
INSERT INTO USER_INFO VALUES ('SYSTEM','10.160.29.9')
 
4) 트리거 생성 - 획득한 IP와 접속한 유저의 IP비교 후 다른경우 에러메시지 출력
CREATE OR REPLACE TRIGGER ACCESS_CONTROL_TRIGGER
BEFORE LOGON ON DATABASE
DECLARE
    ALLOWED_IP VARCHAR2(15) ; -- 변수선언
  
BEGIN
        SELECT USER_IP INTO ALLOWED_IP  -- 접속한 USER의 지정된 IP추출
    FROM USER_INFO WHERE USER_ID =SYS_CONTEXT('USERENV', 'SESSION_USER');
     
   -- 획득한 IP와 접속한 유저의 IP비교 후 다른경우 에러메시지 출력 
    IF (SYS_CONTEXT('USERENV', 'IP_ADDRESS') <> ALLOWED_IP) THEN
        RAISE_APPLICATION_ERROR(-20001, 'ACCESS NOT ALLOWED FROM THIS IP ADDRESS.');
    END IF;
END;
/

'DBA > Oracle' 카테고리의 다른 글

Top sql  (0) 2024.04.04
Alertlog 조회  (0) 2024.04.04
통계정보 생성  (0) 2024.04.04
접속 이력 남기기  (0) 2024.04.04
오라클 주요정보 확인 쿼리(세션, CPU ,메모리 등)  (0) 2024.04.04