본문으로 바로가기

[DataBase] DCL

category Programming/ DataBase 2018. 4. 23. 21:43


DCL(Data Control Language) : 데이터 조작 언어



- DCL은 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어


- DBA가 데이터 관리를 목적으로 사용


- DCL의 유형으로 GRANT, RVOKE가 있다.


----------------------------------------------------------------------------------------


1. Grant (권한 부여)


시스템 - 유저에게 여러 권한을 주는 명령어


ex) GRANT [권한명 | 롤 | ALL] TO [유저명 | 롤 | PUBLIC] [WITH ADMIN OPTION];


대표적 시스템 권한 종류

- CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한

- CREATE ROLE : 오라클 데이터베이스 역할을 생성할 수 있는 권한

- CREATE VIEW : 뷰의 생성 권한

- ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한

- DROP USER : 생성한 사용자를 삭제시키는 권한

※ 권한을 동시에 여러 개 줄 때는 콤마를 사용해 구분한다.



객체 - 특정 객체에 조작을 할 수 있는 권한 (OBJECT 권한)


ex) GRANT [권한명 | ALL] ON [객체명 | PUBLIC] TO [유저명] [WITH GRANT OPTION];


- 테이블이나 뷰, 시퀀스, 프로시저, 함수 또는 패키지 중 지정된 한 객체에 특별한 작업을 수행 할 수 있게 한다.

- 객체 소유자는 다른 사용자들에게 특정 객체권한을 부여할 수 있다.

- PUBLIC으로권한을 부여하면 회수할 때도 PUBLIC으로 해야 한다.

- 기본적으로 소유한 객체에 대해서는 모든 권한이 자동적으로 획득된다.

- WITH GRANT OPTION은 ROLE에 권한을 부여할 때 사용할 수 없다.




----------------------------------------------------------------------------------------


2. REVOKE (권한 해제)


유저에게 권한을 해제하는 명령어

ex) 시스템 권한 해제

REVOKE [권한명 | ALL] FROM [유저명 | 롤 | PUBLIC];


 객체 권한 해제

REVOKE [권한명 | ALL] ON [객체명] FROM [유저명 | 롤 | PUBLIC];


- CASCADE CONSTRAINTS 옵션을 사용하지 않으면  외래키 관계의 TABLE을 REVOKE할 수 없다.

이 명렁어의 사용으로 참조 객체 권한에서 사용 된 참조 무결성 제한을 같이 삭제 할 수 있다.


WITH ADMIN OPTION을 사용했을 시,

A --> B 권한부여, B --> C 권한부여

A가 B의 권한을 제거 시 C의 권한은 유지


WITH GRANT OPTION을 사용했을 시,

A가 B의 권한을 제거 시 C의 권한도 같이 제거


----------------------------------------------------------------------------------------


3. ROLE


- 사용자에게 허가 할 수 있는 권한들의 집합.

- 권한 부여와 회수를 쉽게 할 수 있다.

- CREATE ROLE권한을 가진 USER에 의해 생성

- 한 사용자가 여러 개의 ROLL을 ACCESS할 수 있고, 여러 개의 사용자에게 같은 ROLE의 부여가 가능하다.

- 시스템 권한을 부여하고, 취소할 때와 동일한 명령을 사용하여 사용자에게 부여하고, 취소할 수 있다.

- 사용자는 ROLE에 ROLE을 부여할 수 있다.

- 오라클엔 기본적으로 CONNECT, RESOURCE, DBA ROLE이 제공된다.







- 생성한 ROLE에 부여된 권한을 확인하는 방법

ex) SELECT * FROM ROLE_SYS_PRIVS

 WHERE ROLE='생성한 롤 이름';


- 모든 사용자 권한 확인

SELECT * FROM DBA_ROLE_PRIVS;


- 현재 세션에 부여된 권한

SELECT * FROM USER_SYS_PRIVS


- 사용자에 의해 엑세스 가능한 ROLE

SELECT * FROM USER_ROLE_PRIVS;


'Programming > DataBase' 카테고리의 다른 글

[DataBase] PL/SQL 각 변수선언 방식들의 차이점  (1) 2018.04.23
[DataBase] 스키마  (0) 2018.04.23
[DataBase] SYNONYM - 동의어  (0) 2018.04.23
[DataBase] Oracle SQL 서브쿼리  (3) 2018.04.21
[DataBase] 인덱스  (1) 2018.04.21