DCL(GRANT·REVOKE)과 ROLE
쉽게 말하면
DCL은 누가 무엇을 할 수 있는지 권한을 주고(GRANT) 빼앗는(REVOKE) 명령이에요. 데이터베이스 전체에 대한 권한(접속하기, 표 만들기)과 특정 표에 대한 권한(이 표 조회하기)이 있어요. 여러 권한을 한 묶음으로 만든 것이 ROLE이라, 신입에게 기본 권한 세트를 한 번에 줄 수 있어요.
시험용 정의
DCL(Data Control Language)은 사용자에게 권한을 주고(GRANT) 회수(REVOKE)하는 명령이다. 권한에는 DB 전체에 대한 시스템 권한(CREATE SESSION, CREATE TABLE…)과 특정 객체에 대한 객체 권한(emp에 대한 SELECT, INSERT…)이 있다. 여러 권한을 묶은 ROLE을 만들어 한꺼번에 줄 수 있다.
비유로 이해하기
회사 출입증이다. 시스템 권한은 '건물 출입', '회의실 예약' 같은 전반적 권한, 객체 권한은 '3층 서류함 열람' 같은 특정 물건 권한, ROLE은 '신입사원 기본 출입증 세트'다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 사용자(USER) | DB에 접속하는 계정. 자기가 만든 객체(테이블 등)의 주인이 된다 |
| CREATE SESSION | DB에 접속(로그인)할 수 있는 시스템 권한. 이것이 없으면 접속도 못 한다 |
| ROLE | 권한 묶음. 사용자에게 ROLE을 주면 묶음 안의 권한을 모두 얻는다 |
| HR, SCOTT | 연습용 사용자 이름 |
권한 종류
| 종류 | 예 | 주는 법 |
|---|---|---|
| 시스템 권한 | CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE USER | GRANT CREATE TABLE TO hr |
| 객체 권한 | SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, ALL | GRANT SELECT, INSERT ON emp TO hr |
옵션 비교
| 옵션 | 붙는 권한 | 받은 사람이 | 회수할 때 |
|---|---|---|---|
| WITH GRANT OPTION | 객체 권한 | 다른 사람에게 다시 줄 수 있다 | 다시 준 권한도 연쇄 회수 |
| WITH ADMIN OPTION | 시스템 권한·ROLE | 다른 사람에게 다시 줄 수 있다 | 다시 준 권한은 남는다 |
ROLE 쓰는 순서
CREATE ROLE clerk_role역할 만들기GRANT CREATE SESSION, CREATE TABLE TO clerk_role역할에 권한 담기GRANT clerk_role TO hr사용자에게 역할 주기
Oracle에는 CONNECT(접속), RESOURCE(객체 생성), DBA 같은 기본 ROLE이 있다. 사람마다 권한을 일일이 주는 것보다 관리가 쉽다.
시험에 이렇게 나와요
- GRANT … TO / REVOKE … FROM 문법
- 시스템 권한 vs 객체 권한 구분
- WITH GRANT OPTION(연쇄 회수) vs WITH ADMIN OPTION(연쇄 회수 안 됨)
- ROLE을 만드는 순서와 장점, CONNECT·RESOURCE
- 접속하려면 CREATE SESSION 필요
출제 범위·공식 안내 기반
확인 문제
Q1. A가 B에게 WITH GRANT OPTION으로 객체 권한을 주고, B가 C에게 그 권한을 다시 줬다. A가 B의 권한을 REVOKE하면 C의 권한은?
- 그대로 남는다
- 함께 회수된다
- A에게 넘어간다
- 오류가 난다
정답 보기
2번 함께 회수된다
WITH GRANT OPTION(객체 권한)으로 받은 권한을 회수하면, 그 사람이 다시 준 권한도 연쇄적으로 회수된다. 반대로 시스템 권한의 WITH ADMIN OPTION은 연쇄 회수되지 않는다.
Q2. HR에게 EMP의 SELECT 권한을 회수하는 올바른 문장은?
- DELETE GRANT SELECT ON emp FROM hr
- REVOKE SELECT ON emp TO hr
- REVOKE SELECT ON emp FROM hr
- 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. 객체 권한이 아닌 것은?
- REFERENCES
- SELECT
- CREATE TABLE
- UPDATE
정답 보기
3번 CREATE TABLE
CREATE TABLE은 시스템 권한이다.
Q4. ROLE에 대한 설명으로 틀린 것은?
- ROLE에 다른 ROLE을 담을 수 있다
- 여러 권한을 묶어 한 번에 줄 수 있다
- 권한 관리를 쉽게 한다
- ROLE은 사용자에게만 줄 수 있고 다른 ROLE에는 줄 수 없다
정답 보기
4번 ROLE은 사용자에게만 줄 수 있고 다른 ROLE에는 줄 수 없다
ROLE을 다른 ROLE에 담을 수 있다.
Q5. A가 WITH GRANT OPTION으로 받은 SELECT 권한을 B에게 주었다. A의 권한을 회수하면 B의 권한은?
- 그대로 남는다
- 함께 회수된다
- 오류가 난다
- A가 다시 받으면 회수된다
정답 보기
2번 함께 회수된다
객체 권한의 WITH GRANT OPTION은 연쇄로 회수된다. 시스템 권한의 WITH ADMIN OPTION은 연쇄 회수되지 않는다.
Q6. 데이터베이스에 접속하려면 꼭 필요한 시스템 권한은?
- CREATE SESSION
- SELECT ANY TABLE
- DROP ANY TABLE
- 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 롤)이 있어야 접속된다.