DCL

골블 (Tuscany)·2024년 10월 16일
0

kh교육

목록 보기
3/58
DCL (Data Control Language)
데이터를 다루기 위한 권한을 다루는 언어이다.

사용자 계정에 DB, DB객체에 대한 접근 권한을 부여(GRANT)하고 회수(REVOKE)하는 언어.

* 권한의 종류

1) 시스템 권한 : DB접속, 객체 생성 권한
1-1. CREATE SESSION : 데이터 베이스 접속 권한
1-2. CREATE TABLE : 테이블 생성 권한
1-3. CREATE VIEW : 뷰 생성 권한
1-4. CREATE SEQUENCE : 시퀀스 생성 권한
1-5. CREATE PROCEDURE : 함수(프로시져) 생성 권한
1-6. CREATE USER : 사용자 계정 생성 권한
1-7. DROP USER : 사용자 계정 삭제 권한

2) 객체 권한 : 특정 객체를 조작할 수 있는 권한

(권한 종류)  :  (설정 가능한 객체)
2-1. SELECT : TABLE, VIEW, SEQUENCE
2-2. INSERT : TABLE, VIEW
2-3. UPDATE : TABLE, VIEW
2-4. DELETE : TABLE, VIEW
2-5. ALTER : TABLE, SEQUENCE
2-6. REFERENCES : TABLE
2-7. INDEX : TABLE
2-8. EXECUTE : PROCEDURE


USER - 계정 1. 관리자 계정 : 데이터베이스의 생성과 관리를 담당하는 계정이다. 모든 권한과 책임을 가진 계정이다. 예시) sys(최고관리자), system(sys의 하위 관리자) 2. 사용자 계정 : 데이터베이스에 대해 질의, 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정. 업무에 필요한 최소한의 권한만 가지는 것을 권장한다.

계정 생성과 권한 부여 및 회수

(sys) 최고관리자 계정으로 접속하고 ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE; 를 통해 예전 SQL 방식을 허용하여 계정명을 간단히 작성 가능할 수 있게 한다. [사용자 계정 작성법] CREATE USER 사용자계정 IDENTIFIED BY 비밀번호; (sys) DB 접속 권한을 부여한다. GRANT CREATE SESSION TO 사용자계정; (sys) 사용자계정에게 테이블 생성 권한과 데이터 저장 공간 할당 권한을 부여한다. GRANT CREATE TABLE TO 사용자계정; -- 테이블 생성 권한 부여 ALTER USER 사용자계정 DEFAULT TABLESPACE SYSTEM QUOTA UNLIMITED ON SYSTEM; -- 데이터 저장 공간 할당 * ROLE : 권한의 묶음이다. -> 묶어둔 권한(ROLE)을 특정 계정에 부여한다. -> 해당 계정은 지정된 권한을 이용해 특정 역할을 갖게 된다. CONNECT : DB 접속 관련 권한을 묶어둔 ROLE 예약어이다. RESOURCE : DB 사용을 위한 기본 객체 생성 권한을 묶어둔 ROLE 예약어이다. 예시) GRANT CONNECT, RESOURCE TO 사용자계정; -> DB 접속 관련 권한 및 DB 사용을 위한 기본 객체 생성 권한을 부여함. ( 위의 예시처럼 GRANT CREATE TABLE TO 사용자계정; 과 같이 따로 권한을 부여할 필요가 없다 ) sys 계정을 접속한 상태라면 SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = 'CONNECT'; SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = 'RESOURCE'; 이를 사용할 수 있는데 각각 CONNECT 롤이 포함하고 있는 권한을 조회하거나 RESOURCE 롤이 포함하고 있는 권한을 조회할 수 있다.

다른 사용자 계정에 있는 테이블을 조회하고 싶을 때

sample_10과 sample_20 계정이 있다고 치고 sample_10 계정엔 ALPHABET 테이블이 있다. sample_20 계정을 통해 ALPHABET 테이블을 조회하고 싶다면 sample_10 계정으로 sample_20 계정에게 해당 테이블을 조회할 수 있는 권한을 부여해야 한다. [작성법] GRANT 객체권한 ON 객체명 TO 사용자명; 예시) GRANT SELECT ON ALPHABET TO sample_20;

권한을 다시 회수하고 싶다면

[작성법] REVOKE 객체권한 ON 객체명 FROM 사용자명; 예시) REVOKE SELECT ON ALPHABET FROM sample_20;

0개의 댓글