본문 바로가기

빅데이터과정/PL/SQL

#14_140702_PL_SQL_AUTHID CURRETN USER

728x90

# AUTHID CURRETN USER



문제165. 아래의 사원번호를 입력받고 이름을 출력하는 프로시져를 authid current user 옵션을 써서 다시 생성하시오

DROP USER jack CASCADE;

CREATE USER jack
IDENTIFIED BY tiger;

GRANT CONNECT, RESOURCE TO jack;


CREATE OR REPLACE PROCEDURE proc_grant
(p_empno number)
IS
 v_ename emp.ename%TYPE;
BEGIN
 SELECT ename INTO v_ename
 FROM scott.EMP
 WHERE empno = p_empno;

 dbms_output.put_line(v_ename);
END;
/



# 각각의 유저 창에서 수행
soctt 창에서 : grant execute on proc_grant to jack;
jack 창에서 : exec scott.proc_grant(7788);





# 위 출력결과처럼 scott이 jack에게 proc_grant의 execute 권한을 부여한 결과 select 할 수 있는 권한도 함께 부여되어 "SCOTT" 이란 결과를 출력하는 것을 확인할 수 있다.

프로시져를 실행할 수 있는 권한만 부여했는데 emp 테이블을 select 할 수 있는 권한이 같이 부여되었다.
그런데 authid current user 옵션을 쓰면 더 엄격하게 권한 관리를 할 수 있다.
이 옵션을 쓰면 emp 테이블을 select 할 수 있는 권한이 함께 부여되지 않는다.


CREATE OR REPLACE PROCEDURE proc_grant
(p_empno number) AUTHID CURRENT_USER
IS
 v_ename emp.ename%TYPE;
BEGIN
 SELECT ename INTO v_ename
 FROM scott.EMP
 WHERE empno = p_empno;

 dbms_output.put_line(v_ename);
END;


/




# authid current_user를 이용해서 프로시져를 생성한 이후 다시 jack이 프로시져를 수행하자 위와 같이 출력이 안되는 것을 확인할 수 있다.

'빅데이터과정 > PL/SQL ' 카테고리의 다른 글

#14_140702_PL_SQL_PARALLEL ENABLE  (0) 2014.07.15
#14_140702_PL_SQL_PRAGMA AUTOMONOUS TRANSACTION  (0) 2014.07.15
#13_140701_PL_SQL_REF CURSOR  (0) 2014.07.14
#13_140701_PL_SQL_동적 SQL  (0) 2014.07.14
#12_140630_PL_SQL_FUNCTION  (0) 2014.07.14