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]
↓ (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 |