Database/개념정리

[DataBase] Oracle SQL - DCL (데이터 제어어) GRANT / REVOKE

Sehyeok20 2021. 3. 17. 20:50
반응형

출처 : 네이버 지식백과

데이터 제어어(Data Control Language)는 말 그대로 데이터를 제어하기 위한 언어이다.

이 데이터 제어어에는 권한을 관리하기위한 GRANT / REVOKE 등의 언어가 있다.

 

권한에는 시스템 권한과 객체 권한이 있는데 각 권한별로 권한을 어떻게 부여하고 회수하는지 알아보자.

 

 

 

1. 시스템 권한

 -오라클 데이터베이스의 시스템 권한은 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 등의 권한을 포함한다.

 - 데이터베이스 접속, 사용자 및 오브젝트 생성 등

 

기본적으로 다음과 같은 권한들이 있다.

시스템 권한 분류 시스템 권한 설명
USER (사용자) 관련 권한 CREATE USER 사용자 생성 권한
ALTER USER 생성된 사용자의 정보 수정 권한
DROP USER 생성된 사용자의 삭제 권한
SESSION (접속) 관련 권한 CREATE SESSION 데이터베이스 접속 권한
ALTER SESSION 데이터베이스 접속 상태에서 환경 값 변경 권한
TABLE 관련 권한 CREATE TABLE 자신의 테이블 생성 권한
CREATE ANY TABLE 임의의 스키마 소유 테이블 생성 권한
ALTER ANY TABLE 임의의 스키마 소유 테이블 수정 권한
DROP ANY TABLE 임의의 스키마 소유 테이블 삭제 권한
INSERT ANY TABLE 임의의 스키마 소유 테이블 데이터 삽입 권한
UPDATE ANY TABLE 임의의 스키마 소유 테이블 데이터 수정 권한
DELETE ANY TABLE 임의의 스키마 소유 테이블 데이터 삭제 권한
SELECT ANY TABLE 임의의 스키마 소유 테이블 데이터 조회 권한
INDEX (인덱스) 관련 권한 CREATE ANY INDEX 임의의 스키마 소유 테이블의 인덱스 생성 권한
ALTER ANY INDEX 임의의 스키마 소유 테이블의 인덱스 수정 권한
DROP ANY INDEX 임의의 스키마 소유 테이블의 인덱스 삭제 권한

1 - 1 권한 부여

 - GRANT [시스템 권한 / ROLE ] TO [사용자 이름 / ROLE 이름 / PUBLIC] [WITH ADMIN OPTION]

 - PUBLIC : 시스템 권한 및 ROLE 을 모든 사용자에게 부여

 - WITH ADMIN OPTION : 부여받은 권한을 다른 사용자 및 ROLE에게 부여할 수 있는 권한도 함께 부여받는다.

                                   (현재 사용자 권한이 사라져도 권한을 재부여한 다른사용자의 권한은 유지된다.)

 

GRANT CREATE TABLE, CREATE USER TO SCOTT WITH ADMIN OPTION;

테이블 생성과 유저 생성 권한을 SCOTT라는 유저에게 부여하고 이를 재부여할 수 있는 권한을 주는 구문이다.

 

 

1 - 2 권한 회수

 - REVOKE [시스템 권한 / ROLE] FROM [사용자 이름 / ROLE 이름 / PUBLIC]

REVOKE CREATE TABLE, CREATE USER FROM SCOTT;

부여한 테이블 생성 권한과 유저 생성 권한을 SCOTT이라는 유저에게서 회수한다.

 

 


2. 오브젝트 권한 (객체 권한)

 - 객체 사용에 대한 권한

 - 객체 권한은 테이블이나 뷰, 시퀀스, 함수 등과 같은 객체별로 DML(SELECT, INSERT, DELETE)을 사용할 수 있는 권한 설정

 

OBJECT 권한 설명
ALTER 객체에 대해 변경 할 수 있는 권한
COMMENT 객체에 대해 COMMENT 할 수 있는 권한
DELETE  객체에 대해 자료를 삭제할 수 있는 권한
GRANT 객체에 대해 GRANT 할 수 있도록 하는 권한
INDEX 인덱스를 생성할 수 있는 권한
RENAME 이름을 변경할 수 있는 권한
INSERT 데이터를 삽입할 수 있는 권한
SELECT 데이터를 조회할 수 있는 권한
UPDATE 데이터를 갱신할 수 있는 권한
EXECUTE 프로시저, 함수, 패키지를 실행할 수 있는 권한
REFERENCES 데이터를 참조할 수 있는 권한


객체별 권한 정리

객체 권한 TABLE VIEW SEQUENCE PROCEDURE
SELECT O O O  
INSERT O      
DELETE O O    
ALTER O   O  
INDEX O      
UPDATE O O    
REFERENCE O      
EXECUTE       O

 

2 - 1 객체 권한 부여

 - GRANT [객체 권한] ON [스키마.객체이름] TO [사용자 이름 / ROLE 이름 / PUBLIC] [WITH GRANT OPTION] 

 - WITH ADMIN OPTION : 부여받은 권한을 다른 사용자 및 ROLE에게 부여할 수 있는 권한도 함께 부여받는다.

                                   (현재 사용자 권한이 사라지면 다른 사용자에게 재부여된 권한도 함께 사라진다.)

GRANT INSERT ON EMP_TEST TO SCOTT WITH ADMIN OPTION;

EMP_TEST 객체의 삽입 권한을 SCOTT에게 부여하고 재부여할 수 있는 권한도 함께 부여한다.

 

2 - 2 권한 회수

 - REVOKE [권한 / ALL] ON [스키마.객체이름] FROM [USER / ROLE / PUBLIC] [CASCADE CONSTRAINTS]

 - CASCADE CONSTRAINTS : 참조 객체에 사용된 참조 무결성 제약을 함께 삭제할 수 있음.

 - 객체권한의 회수는 부여한 사용자만이 할 수 있음.

REVOKE INSERT ON EMP_TEST FROM SCOTT;

EMP_TEST 의  삽입 권한을 SCOTT유저로부터 회수한다.

반응형