공든탑앱 열기

DCL(GRANT·REVOKE)과 ROLE

SQLD (SQL 개발자) · 관리 구문 · 약 11분

쉽게 말하면

DCL은 누가 무엇을 할 수 있는지 권한을 주고(GRANT) 빼앗는(REVOKE) 명령이에요. 데이터베이스 전체에 대한 권한(접속하기, 표 만들기)과 특정 표에 대한 권한(이 표 조회하기)이 있어요. 여러 권한을 한 묶음으로 만든 것이 ROLE이라, 신입에게 기본 권한 세트를 한 번에 줄 수 있어요.

시험용 정의

DCL(Data Control Language)은 사용자에게 권한을 주고(GRANT) 회수(REVOKE)하는 명령이다. 권한에는 DB 전체에 대한 시스템 권한(CREATE SESSION, CREATE TABLE…)과 특정 객체에 대한 객체 권한(emp에 대한 SELECT, INSERT…)이 있다. 여러 권한을 묶은 ROLE을 만들어 한꺼번에 줄 수 있다.

비유로 이해하기

회사 출입증이다. 시스템 권한은 '건물 출입', '회의실 예약' 같은 전반적 권한, 객체 권한은 '3층 서류함 열람' 같은 특정 물건 권한, ROLE은 '신입사원 기본 출입증 세트'다.

자세히

먼저 알아 둘 말

말뜻
사용자(USER)DB에 접속하는 계정. 자기가 만든 객체(테이블 등)의 주인이 된다
CREATE SESSIONDB에 접속(로그인)할 수 있는 시스템 권한. 이것이 없으면 접속도 못 한다
ROLE권한 묶음. 사용자에게 ROLE을 주면 묶음 안의 권한을 모두 얻는다
HR, SCOTT연습용 사용자 이름

권한 종류

종류예주는 법
시스템 권한CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE USERGRANT CREATE TABLE TO hr
객체 권한SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALLGRANT SELECT, INSERT ON emp TO hr

옵션 비교

옵션붙는 권한받은 사람이회수할 때
WITH GRANT OPTION객체 권한다른 사람에게 다시 줄 수 있다다시 준 권한도 연쇄 회수
WITH ADMIN OPTION시스템 권한·ROLE다른 사람에게 다시 줄 수 있다다시 준 권한은 남는다

ROLE 쓰는 순서

  1. CREATE ROLE clerk_role 역할 만들기
  2. GRANT CREATE SESSION, CREATE TABLE TO clerk_role 역할에 권한 담기
  3. GRANT clerk_role TO hr 사용자에게 역할 주기

Oracle에는 CONNECT(접속), RESOURCE(객체 생성), DBA 같은 기본 ROLE이 있다. 사람마다 권한을 일일이 주는 것보다 관리가 쉽다.

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. A가 B에게 WITH GRANT OPTION으로 객체 권한을 주고, B가 C에게 그 권한을 다시 줬다. A가 B의 권한을 REVOKE하면 C의 권한은?

  1. 그대로 남는다
  2. 함께 회수된다
  3. A에게 넘어간다
  4. 오류가 난다
정답 보기

2번 함께 회수된다

WITH GRANT OPTION(객체 권한)으로 받은 권한을 회수하면, 그 사람이 다시 준 권한도 연쇄적으로 회수된다. 반대로 시스템 권한의 WITH ADMIN OPTION은 연쇄 회수되지 않는다.

Q2. HR에게 EMP의 SELECT 권한을 회수하는 올바른 문장은?

  1. DELETE GRANT SELECT ON emp FROM hr
  2. REVOKE SELECT ON emp TO hr
  3. REVOKE SELECT ON emp FROM hr
  4. GRANT NO SELECT ON emp TO hr
정답 보기

3번 REVOKE SELECT ON emp FROM hr

REVOKE SELECT ON emp FROM hr다. 권한을 줄 때는 GRANT … TO, 거둘 때는 REVOKE … FROM을 쓴다.

Q3. 객체 권한이 아닌 것은?

  1. REFERENCES
  2. SELECT
  3. CREATE TABLE
  4. UPDATE
정답 보기

3번 CREATE TABLE

CREATE TABLE은 시스템 권한이다.

Q4. ROLE에 대한 설명으로 틀린 것은?

  1. ROLE에 다른 ROLE을 담을 수 있다
  2. 여러 권한을 묶어 한 번에 줄 수 있다
  3. 권한 관리를 쉽게 한다
  4. ROLE은 사용자에게만 줄 수 있고 다른 ROLE에는 줄 수 없다
정답 보기

4번 ROLE은 사용자에게만 줄 수 있고 다른 ROLE에는 줄 수 없다

ROLE을 다른 ROLE에 담을 수 있다.

Q5. A가 WITH GRANT OPTION으로 받은 SELECT 권한을 B에게 주었다. A의 권한을 회수하면 B의 권한은?

  1. 그대로 남는다
  2. 함께 회수된다
  3. 오류가 난다
  4. A가 다시 받으면 회수된다
정답 보기

2번 함께 회수된다

객체 권한의 WITH GRANT OPTION은 연쇄로 회수된다. 시스템 권한의 WITH ADMIN OPTION은 연쇄 회수되지 않는다.

Q6. 데이터베이스에 접속하려면 꼭 필요한 시스템 권한은?

  1. CREATE SESSION
  2. SELECT ANY TABLE
  3. DROP ANY TABLE
  4. CREATE TABLE
정답 보기

1번 CREATE SESSION

CREATE SESSION이 없으면 로그인할 수 없다.

헷갈리기 쉬운 O·X

GRANT로 권한을 줄 때는 FROM, REVOKE로 회수할 때는 TO를 쓴다.

정답 보기

X 반대다. GRANT … TO, REVOKE … FROM.

WITH ADMIN OPTION으로 받은 시스템 권한을 회수해도, 그 사람이 다시 준 권한은 남는다.

정답 보기

O 연쇄 회수는 객체 권한의 WITH GRANT OPTION에서 일어난다.

새 사용자는 CREATE USER만 하면 바로 DB에 접속할 수 있다.

정답 보기

X CREATE SESSION 권한(또는 CONNECT 롤)이 있어야 접속된다.

함께 보면 좋은 개념