Admin

WITH GRANT OPTION이 필요한 진짜 이유 – VIEW와 PROCEDURE에서의 차이

돼지와함께춤을 2026. 1. 28. 09:29

WITH GRANT OPTION 이란?

WITH GRANT OPTION은 단순히

“권한을 받았다” 가 아니라

내가 받은 권한을, 다른 사용자에게도 사용하게 할 수 있는 권리를 의미한다.

 

이 “사용하게 한다”는 것은 두 가지 방식이 있다.


1️⃣ 권한 위임의 두 가지 형태

🔹 명시적 위임 (Explicit Grant)

구분설명
방식 GRANT ... TO USER DDL 실행
형상 ✔ 남음
조회 위치 DBA_TAB_PRIVS, DBA_OBJECT_PRIVS
특징 제3자가 직접 권한을 소유

 

[OWNER2]
GRANT SELECT ON OWNER2.TABLE TO OWNER1 WITH GRANT OPTION;

[OWNER1]
GRANT SELECT ON OWNER2.TABLE TO USER1;

🔹 암묵적 위임 (Implicit Delegation)

구분설명
방식 뷰 / 프로시저를 통해 간접 접근
형상 ❌ 남지 않음
특징 권한은 OWNER가 보유, 사용만 위임

 

 

 

이 글의 핵심은 이 암묵적 위임에서
왜 어떤 경우는 WITH GRANT OPTION이 필요하고, 어떤 경우는 필요 없는가
다.

 

2️⃣ 케이스

USER1 계정이 OWNER2.TABLE에 접근해야 한다
단, 직접 접근은 금지
OWNER1이 만든 뷰 또는 프로시저를 통해서만 접근한다

USER1 → OWNER1.VIEW / PROCEDURE → OWNER2.TABLE

 

 이때 권한 구성은 어떻게 달라질까?


3️⃣ 핵심 차이 요약

같은 테이블을 참조하더라도

  • VIEW냐
  • PROCEDURE냐

에 따라 권한 계승 필요 여부가 갈린다

구분                                                                                                 권한 계승
VIEW ⭕ 발생      
PROCEDURE (FUNCTION 포함) ❌ 발생 안 함                           

이 차이 때문에
WITH GRANT OPTION 필요 여부가 갈린다


4️⃣ VIEW를 통한 접근 ( WITH GRANT OPTION ⭕ 필요 )

구조

[OWNER2.TABLE]
        ↓ (SELECT + 권한 계승)
    [OWNER1.VIEW]
        ↓ (SELECT)
    [USER1]

권한 구성

GRANT SELECT ON OWNER2.TABLE TO OWNER1 WITH GRANT OPTION;; 
GRANT SELECT ON OWNER1.VIEW TO USER1;

특징

  • VIEW는 실행 시점에 권한을 재검증
  • USER1이 VIEW를 통해 TABLE을 접근하려면
  • OWNER1이 받은 SELECT 권한이 USER1에게 계승되어야 함

WITH GRANT OPTION 필요


5️⃣ PROCEDURE를 통한 접근 (WITH GRANT OPTION  불필요)

구조

[OWNER2.TABLE]
        ↓ (SELECT)
    [OWNER1.PROCEDURE]
        ↓ (EXECUTE)
    [USER1]

권한 구성

GRANT SELECT ON OWNER2.TABLE TO OWNER1 ; 

GRANT EXECUTE ON OWNER1.PROCEDURE TO USER1;

특징

  • PROCEDURE는 DEFINER RIGHTS(기본값) 로 실행
  • 테이블 접근 권한은 항상 OWNER1 기준으로 체크
  • USER1에게 테이블 권한이 전달되지 않는다
  • 권한 재위임 자체가 발생하지 않는다

WITH GRANT OPTION 불필요


 

6️⃣ 한 줄 요약

VIEW는 실행자 기준으로 테이블 접근 권한을 재검증하며,
PROCEDURE/FUNCTION는 정의자(OWNER) 권한으로 테이블을 접근한다

 

 

'Admin' 카테고리의 다른 글

Oracle 관련 약어 정리  (0) 2026.03.11
ORACLE LogMiner  (0) 2026.02.11
Flashback query, Flashback Versions Query  (0) 2026.01.05
분산 트랜잭션, 2PC PENDING  (0) 2026.01.05
ORACLE 청크 공간 재사용 테스트, clob  (1) 2025.12.30