고래씌

[Oracle] 9. DCL(GRANT, REVOKE) 본문

Database/Oracle

[Oracle] 9. DCL(GRANT, REVOKE)

고래씌 2023. 11. 30. 11:03

1. DCL(Data Control Language) :데이터 제어 언어

- 계정에게 시스템권한 또는 객체접근권한을 부여(GRANT)하거나 회수(REVOKE)하는 언어

 

 

▶ 권한부여(GRANT)
   - 시스템권한 : 특정 DB에 접근하는 권한
                        객체들을 생성할 수 있는 권한
   - 객체접근권한 : 특정 객체들에 접근해서 조작할 수 있는 권한
      
▶ 시스템 권한
    [표현법]

GRANT 권한1, 권한2, ... TO 계정명;

 

▶ 시스템 권한의 종류
    - CREATE SESSION : 계정에 접속할 수 있는 권한
    - CREATE TABLE : 테이블을 생성할 수 있는 권한
    - CREATE VIEW : 뷰를 생성할 수 있는 권한
      ...

 

 

1) 계정 생성

CREATE USER SAMPLE IDENTIFIED BY SAMPLE;

 

 

☞ 아직 CREATE SESSION 권한부여를 안줘서 오류 발생

 

 

2) SAMPLE계정에 접속하기 위한 CREATE SESSION 권한 부여

GRANT CREATE SESSION TO SAMPLE;

 

 

3) SAMPLE 계정에 테이블을 생성

① SAMPLE 계정에 CREATE TABLE 권한 부여받기 전

 

☞ 오류 발생. TABLE 생성이 안된다.

불충분한 권한 : SAMPLE계정에 테이블 생성 권한을 부여하지 않아서 발생

 

 

 

② CREATE TABLE 권한 부여받은 후

▶ 시스템 계정에서 SMAPLE계정에 CREATE TABLE 권한 부여 (시스템 계정)

 

☞ SAMPLE 계정에 다시 CREATE TABLE을 실행해보면 오류발생.

☞ SAMPLE 계정에 TABLESPACE가 아직 할당되지 않아서 오류 발생

 

 

 

③ SAMPLE 계정에 테이블 스페이스를 할당해주기(SAMPLE계정변경)(시스템 계정)

ALTER USER SAMPLE QUOTA 2M ON SYSTEM;

 

- QUOTA : 몫 나누어주다, 할당하다.

=> SYSTEM 계정에서 2M만큼의 저장공간을 할당시켜줌

 

TABLESPACE 할당받은 후 SAMPLE 계정에서 정상적으로 CREATE TABLE 실행됨

 

 

 

☞ SAMPLE 계정에서 테이블 생성 권한을 부여받으면 현재 계정이 소유하고 있는 테이블들을 조작(DML)하는 것도 가능해진다!!

 

 

 

4) 뷰 만들어 보기

① 권한 부여받기 전

 

☞ 에러발생.

 

 

 

② SAMPLE 계정에 뷰를 생성할 수 있는 CREATE VIEW 권한 부여(시스템 계정)

 

(SMAPLE 계정)

☞ 권한 부여 후, 정상적으로 실행됨

 

 


2. 객체권한

: 특정 객체들을 조작할 수 있는 권한
   조작 : SELECT, INSERT, UPDATE, DELETE
    
    [표현법]

GRANT 권한종류 ON 특정객체 TO 계정명;

 

권한종류 특정객체
SELECT  TABLE, VIEW, SEQUENCE
INSERT   TABLE, VIEW
UPDATE   TABLE, VIEW
DELETE    TABLE, VIEW

 

 

1) SAMPLE 계정에서 KH계정의 테이블에 접근해서 조회해보기

 

DEPARTMENT 테이블 조회권한을 부여받지 않으면 접근 불가

 

 

▶ SAMPLE 계정에 KH.EMPLOYEE 테이블을 조회할 수 있는 권한 부여(시스템 계정)

 

 

EMPLOYEE 테이블 접근권한 부여받은 후(SAMPLE 계정)

 

 

☞ 권한 부여 후, SAMPLE 계정에서 조회 되는 것 확인

 

 

 

2) SMAPLE계정에서 KH계정의 테이블에 접근해서 행 삽입

▶ SAMPLE 계정에 KH.DEPARTMENT 테이블에 행을 삽입할 수 있는 권한 부여(시스템 계정)

 

▶ KH의 DEPARTMENT 테이블에 회계부 부서 추가(SAMPLE 계정)

 

☞ 권한 부여 전 오류 발생했지만, 권한부여 후에는 정상적으로 추가됨

 

 


3. 권한 회수(REVOKE)

: 권한을 회수할 때 사용하는 명령어
    
    [표현법]

    REVOKE 권한1, 권한2, ... FROM 계정명;

 

 

1) 권한 회수 후, 테이블 생성해보기

SAMPLE 계정에서 테이블을 생성할 수 없도록 권한 회수(시스템 계정)

 

 

▶ 권한 회수 후, 테이블 생성해보기(SAMPLE 계정)

 

☞ 테이블 생성권한 회수로 인한 권한 불충분 에러

 

 


4. 일반 개발자가 개발을 하기위한 최소한의 권한

- GRANT CONNECT, RESOURCE TO 계정명;

 


롤 ROLE
  - 특정 권한들을 하나의 집합으로 모아놓은 것
  - RESOURCE : CREATE TABLE, CREATE SEQUENCE, SELECT, INSERT, ...
                         (특정 객체들을 생성 및 조작할 수 있는 권한)
   

  -  CONNECT : CREATE SESSION (데이터베이스에 접속할 수 있는 권한)