[Oracle] 프록시 접근 권한 부여 및 해제 방법

SYSTEM(관리자)라도 Private Database Link를 삭제할 수 없습니다(Drop Database Link DB링크). Private Database Link 삭제하기 위해서 해당 DB Link의 소유자로 데이터베이스에 접속해야 합니다(sqlplus 사용자/비밀번호). 그런데 프록시 접속를 사용하면 SYSTEM(관리자) 권한으로 데이터베이스에 접속하더라도 Private Database Link를 삭제할 수 있습니다. 또한 관리자가 사용자의 업무를 대신 처리해주기 위해 사용자 비밀번호를 물어볼 필요가 없습니다. (비밀번호 공유 금지 원칙 준수)

  1. SYSTEM 권한으로 데이터베이스에 접속합니다.
    $ sqlplus system/비밀번호
    
  2. SQL 프롬프트에서 특정 유저(예 COM)가 SYSTEM(관리자)를 통해 접속할 수 있도록 프록시 권한을 부여합니다.
    SQL> ALTER USER COM GRANT CONNECT THROUGH SYSTEM;
    User altered.
    
    SQL> SELECT * FROM PROXY_USERS;
    PROXY	CLIENT	AUTHENTICATION	FLAGS
    ------  ------  --------------  ----------------------------------- 
    SYSTEM	COM	NO	        PROXY MAY ACTIVATE ALL CLIENT ROLES
    
    * AUTHENTICATION : NO -> SYSTEM이 COM으로 변신할 때, COM의 비밀번호를 추가로 물어보지 않는다는 뜻입니다.
    
  3. 설정이 끝났으니 SYSTEM(관리자) 세션을 종료하고, 프록시 방식을 사용해서 COM 사용자 권한으로 접속합니다. 아래 비밀번호는 SYSTEM(관리자)의 비밀번호입니다. 이 방식으로 접속하면 실제 권한은 COM이 되며, DROP DATABASE LINK 같은 소유자 전용 명령어를 실행할 수 있게 됩니다.
    SQL> EXIT;
    
    $ sqlplus system[com]/비밀번호
    
    SQL> show user;
    USER is "COM"
    
  4. SYSTEM에게 부여했던 COM 사용자로의 프록시 접근 권한을 회수합니다. 권한을 회수한다고 해서 이미 접속해서 작업 중인 SYSTEM[COM] 세션이 강제로 끊기지는 않습니다. 권한 회수 이후에 새롭게 시도하는 프록시 접속부터 차단됩니다.
    SQL> ALTER USER COM REVOKE CONNECT THROUGH SYSTEM;
    User altered.
    
    SQL> SELECT * FROM PROXY_USERS;
    no rows selected
    

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다