본문 바로가기
Computer Science/데이터베이스

[데이터베이스] ep4-3) SQL: DCL

by 클레어몬트 2024. 6. 30.

ㅁDCL(Data Control Language): 데이터 제어어

GRANT로 객체 권한 및 시스템 권한을 부여한다

 

 

 

 

 

① GRANT문: DB 사용자의 사용 권한 부여

2가지 타입이 있다

1. 객체 권한 부여 by 객체소유자

GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];

객체 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여한다

(여러 권한을 한 번에 부여할 수도 있으나 GRANT문으로 부여된 권한은 기본적으로 다른 사용자에게 재부여가 불가능하다)

부여하는 주요 권한 5가지

 

(옵션)

PUBLIC 키워드: 모든 사용자에게 똑같은 권한을 부여하는 키워드 ("사용자" 대신 작성)

WITH GRANT OPTION: 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있도록 허락하는 옵션

 

 

예제 1

 

예제 2

사용자 Lee는 고객 테이블에 대한 검색 권한을 또 다른 사람들에게 부여 가능

 

 

 

2. 시스템 권한 부여 by DBA(데이터베이스 관리자)

데이터베이스 관리와 관련된 작업에 대한 권한 부여

GRANT CREATE TABLE TO 사용자 -- 1. 테이블 생성 권한
GRANT CREATE VIEW TO 사용자 -- 2. 뷰 생성 권한

(특정 객체에 대한 권한 부여가 아니므로 객체 지정 불필요)

 

 

예제

 

 

역할기반 접근제어(RBAC, Role-Based Access Control)

역할(ROLE)을 생성하고, 특정 객체에 ROLE을 부여하고, 사용자에게 다수의 ROLE을 부여함으로써 다양한 권한을 사용자에게 부여

 

 

 

 

 

 

 

② REVOKE문: 권한 취소 

GRANT 명령을 통해 부여했던 권한을 취소하는 것, 이것도 역시 2가지 타입이 있다

1. 객체 권한 취소 by 권한소유자

REVOKE 권한 ON 객체 FROM 사용자 CASCADE | RESTRICT;

 

CASCADE: 전체 취소

RESTRICT: 부분 취소

 

 

예제 상황

예제 1

 

예제 2

 

 

 

2. 시스템 권한 취소 by DBA(데이터베이스 관리자)

REVOKE CREATE TABLE FROM 사용자 -- 1. 테이블 생성 권한 취소
REVOKE CREATE VIEW FROM 사용자 -- 2. 뷰 생성 권한 취소

 

 

예제

 

 

 

 

 

 

 

 

 

 

 

 

출처 및 참고: 세종대학교 K-MOOC 데이터베이스 보안(김영갑)