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" 이란 결과를 출력하는 것을 확인할 수 있다.
l 프로시져를 실행할 수 있는 권한만 부여했는데 emp 테이블을 select 할 수 있는 권한이 같이 부여되었다.
l 그런데 authid current user 옵션을 쓰면 더 엄격하게 권한 관리를 할 수 있다.
l 이 옵션을 쓰면 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 |