DCL(Data Control Laguage)란 데이터베이스 사용자에게 권한을 부여 및 회수하는 언어이다.
GRANT
- 사용자에게 접속권한, 오브젝트 생성 등을 부여할 수 있는 명령어 이다.
REVOKE
- 사용자에게 부여한 권한을 다시 회수하는 명령어이다.
권한의 종류
- SELECT, INSERT, UPDATE, DELETE, REFERENS, ALTER, INDEX, ALL 등이 있다.
먼저 권한부여 및 회수를 하는 방법이다.
GRANT 권한 ON 테이블 TO 유저;
REVOKE 권한 ON 테이블 TO 유저;
한 유저가 컬럼을 업데이트 하고 싶어 한다. 그에 맞는 권한을 부여해보자.
GRANT SELECT, UPDATE
ON 테이블
TO 유저;
UPDATE 문과 WHERE문을 사용하기 위해 SELECT, UPDATE 권한을 부여했다.
GRANT OPTION
권한을 주고받는 상황에서 다음과 같은 상황에 처했다고 가정해보자.
1. root가 "유저1"에게 권한을 부여할 수 있는 권한을 부여 하였다.
2. "유저1"이 "유저2"에게 권한을 주었다.
3. 하지만 root가 "유저1" 의 권한을 회수 했다.
REVOKE 권한 ON 테이블 TO 유저1
이렇게 되면 권한을 받은 "유저2" 가 어떻게 되겠는가?
바로 "유저1" GRANT OPTION에(유저1이 권한을 받은 방식) 따라 바뀔 수 있다.
GRANT 권한 ON 테이블 TO 유저1 WITH GRANT OPTION;
GRANT 권한 ON 테이블 TO 유저1 WITH ADMIN OPTION;
다음과 같은 명령어로 인해 유저2의 권한의 상황은 바뀐다.
바로 아래와 같은 상황이다.
- WITH GRANT OPTION은 권한을 회수 당하면 "유저1"이 권한을 줬던 유저까지 회수 당한다.
- WITH ADMIN OPTION은 권한을 회수 당하여도 권한을 받은 유저들은 그대로 권한을 유지한다.
ROLE
- 개별적으로 권한을 부여하고 관리하는 어려움을 해소하기 위해 다양한 권한을 하나의 그룹으로 묶어서 관리하는 것을 ROLE이라고 한다.
- ROLE의 생성은 CREATE ROLE 권한을 가진 유저가 할 수 있다.
한마디로 ROLE은 권한을 가지고 있는 집합이라 할 수 있으며 유저들이 ROLE이 가지고 있는 권한리스트를 부여 받은 것이다.
ROLE을 생성 한다.
CREATE ROLE 롤;
ROLE에 권한을 부여 한다.
GRANT CREATE SESSION, CREATE TABLE TO ROLE;
(GRANT 권한1, 권한2 TO ROLE;)
권한이 부여된 ROLE을 USER나 ROLE에 부여 한다.
GRANT ROLE1 TO user1, ROLE2;
'Database' 카테고리의 다른 글
DDL(Data Definition Languge) (0) | 2023.05.03 |
---|