DCL·권한 관리 완벽 정리

SQLD 시험 출제 범위의 GRANT·REVOKE와 시스템/객체 권한, ROLE을 구문 예시와 함께 정리

1. DCL 개요

DCL이란?

DCL(Data Control Language)은 데이터베이스 접근 권한을 부여하거나 회수하는 SQL 명령어입니다. 데이터의 보안, 무결성, 병행 제어를 위해 사용합니다. DCL도 DDL처럼 AUTO COMMIT됩니다.

DCL 명령어

명령어설명
GRANT사용자에게 권한 부여
REVOKE사용자로부터 권한 회수

2. 권한의 종류

시스템 권한 vs 객체 권한

구분시스템 권한객체 권한
대상데이터베이스 전체특정 객체(테이블, 뷰 등)
부여자DBA (관리자)객체 소유자 또는 권한 보유자
예시CREATE TABLE, CREATE SESSIONSELECT, INSERT, UPDATE, DELETE
전달 옵션WITH ADMIN OPTIONWITH GRANT OPTION

주요 시스템 권한

권한설명
CREATE SESSIONDB 접속 권한
CREATE TABLE테이블 생성 권한
CREATE VIEW뷰 생성 권한
CREATE PROCEDURE프로시저 생성 권한
CREATE USER사용자 생성 권한

주요 객체 권한

권한TABLEVIEWPROCEDURE
SELECTOO-
INSERTOO-
UPDATEOO-
DELETEOO-
ALTERO--
EXECUTE--O

3. GRANT (권한 부여)

시스템 권한 부여

GRANT CREATE SESSION, CREATE TABLE
TO USER1
[WITH ADMIN OPTION];

WITH ADMIN OPTION: 부여받은 권한을 다른 사용자에게 다시 부여할 수 있음

객체 권한 부여

GRANT SELECT, INSERT
ON SCHEMA1.EMP
TO USER2
[WITH GRANT OPTION];

WITH GRANT OPTION: 부여받은 객체 권한을 다른 사용자에게 다시 부여할 수 있음

WITH ADMIN OPTION vs WITH GRANT OPTION

항목WITH ADMIN OPTIONWITH GRANT OPTION
적용 대상시스템 권한객체 권한
권한 전파다른 사용자에게 재부여 가능다른 사용자에게 재부여 가능
회수 시 연쇄연쇄 회수 안됨 (A→B→C에서 A 회수해도 B,C 유지)연쇄 회수됨 (A→B→C에서 A 회수 시 B,C도 회수)

연쇄 회수(CASCADE) 여부가 시험의 핵심 포인트입니다!

4. REVOKE (권한 회수)

시스템 권한 회수

REVOKE CREATE TABLE
FROM USER1;

객체 권한 회수

REVOKE SELECT, INSERT
ON SCHEMA1.EMP
FROM USER2;

연쇄 회수 예시

DBA가 USER_A에게 WITH GRANT OPTION으로 SELECT 권한을 부여하고, USER_A가 USER_B에게, USER_B가 USER_C에게 재부여한 경우:

-- 객체 권한 (WITH GRANT OPTION)
DBA → USER_A → USER_B → USER_C
REVOKE FROM USER_A → USER_B, USER_C도 함께 회수

-- 시스템 권한 (WITH ADMIN OPTION)
DBA → USER_A → USER_B → USER_C
REVOKE FROM USER_A → USER_B, USER_C는 유지

5. ROLE (역할)

ROLE이란?

ROLE은 관련 권한을 묶어서 관리하는 권한의 집합입니다. 여러 권한을 개별적으로 부여하는 대신 ROLE에 권한을 할당하고, ROLE을 사용자에게 부여하면 관리가 편리해집니다.

ROLE 생성 및 사용

-- 1. ROLE 생성
CREATE ROLE MANAGER_ROLE;

-- 2. ROLE에 권한 부여
GRANT CREATE TABLE, CREATE VIEW TO MANAGER_ROLE;
GRANT SELECT, INSERT ON EMP TO MANAGER_ROLE;

-- 3. 사용자에게 ROLE 부여
GRANT MANAGER_ROLE TO USER1, USER2, USER3;

-- 4. ROLE 회수
REVOKE MANAGER_ROLE FROM USER1;

Oracle 기본 제공 ROLE

ROLE포함 권한
CONNECTCREATE SESSION (DB 접속 권한)
RESOURCECREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURE 등
DBA모든 시스템 권한 (관리자용)

일반적으로 새 사용자에게 CONNECT + RESOURCE ROLE을 부여합니다.

ROLE의 장점

  • 1. 권한 관리 간소화 — 개별 사용자 대신 ROLE 단위로 관리
  • 2. 일괄 변경 용이 — ROLE의 권한 변경 시 모든 할당 사용자에 반영
  • 3. ROLE 중첩 가능 — ROLE에 다른 ROLE을 부여할 수 있음
  • 4. 동적 권한 관리 — SET ROLE로 세션 중 활성/비활성 전환 가능

6. 시험 빈출 포인트

반드시 알아야 할 포인트

  • 1. GRANT ... TO / REVOKE ... FROM — 부여는 TO, 회수는 FROM 사용
  • 2. WITH GRANT OPTION은 연쇄 회수 — 객체 권한은 REVOKE 시 전파된 권한도 함께 회수
  • 3. WITH ADMIN OPTION은 연쇄 회수 안됨 — 시스템 권한은 REVOKE 시 전파된 권한이 유지
  • 4. DCL은 AUTO COMMIT — GRANT/REVOKE 실행 시 즉시 커밋 (이전 미커밋 DML도 함께)
  • 5. 객체 권한에는 ON 절 필수 — GRANT SELECT ON 테이블명 TO 사용자
  • 6. CONNECT = CREATE SESSION — Oracle 10g부터 CONNECT 롤에는 CREATE SESSION만 포함
  • 7. ROLE은 권한의 묶음 — ROLE 자체는 권한이 아니라 권한의 집합
  • 8. PUBLIC에게 권한 부여 — GRANT ... TO PUBLIC은 모든 사용자에게 부여

개념을 확인했다면 문제로 실력을 검증해보세요