11. DCL

CHOISUJIN·2023년 1월 26일
0
post-thumbnail

DCL(Data Control Language)

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

  • 시스템 권한 : DB접속, 객체 생성 권한 (DDL)

    CREATE SESSION : 데이터베이스 접속 권한
    CREATE TABLE : 테이블 생성 권한
    CREATE VIEW : 뷰 생성 권한
    CREATE SEQUENCE : 시퀀스 생성 권한
    CREATE PROCEDURE : 함수(프로시져) 생성 권한
    CREATE USER : 사용자(계정) 생성 권한
    DROP USER : 사용자(계정) 삭제 권한
    DROP ANY TABLE : 임의 테이블 삭제 권한

  • 객체 권한 : 특정 객체 조작 권한 (DML)

    SELECT --> TABLE, VIEW, SEQUENCE
    INSERT --> TABLE, VIEW
    UPDATE --> TABLE, VIEW
    DELETE --> TABLE, VIEW
    ALTER --> TABLE, SEQUENCE
    REFERENCES --> TABLE
    INDEX --> TABLE
    EXECUTE --> PROCEDURE

  • 관리자 계정
    : 데이터베이스의 생성과 관리를 담당하는 계정! 모든 권한과 책임을 가짐
    ex) sys(최고관리자), system(sys에서 권한 몇개 제외된 관리자)

  • 사용자 계정
    : 데이터베이스에 대하여 질의, 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정!
    --> 업무에 필요한 최소한의 권한만을 가지는 것을 원칙으로 함
    ex) kh 계정

☑️ 사용자 계정 작성법

ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;

(sys)

  1. 사용자 계정 생성
    CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
CREATE USER csj_sample IDENTIFIED BY csj1234;
  1. 접속 권한 부여
    GRANT 권한, 권한, ... TO 사용자명
GRANT CREATE SESSION TO csj_sample;
  1. 새 연결 추가
  2. 테이블 생성 권한 + TABLESPACE 할당
GRANT CREATE TABLE TO csj_sample;

ALTER USER csj_sample DEFAULT TABLESPACE
SYSTEM QUOTA UNLIMITED ON SYSTEM;

(csj_sample)

  1. 테이블 생성 가능
CREATE TABLE TB_TEST(
	PK_COL NUMBER PRIMARY KEY,
	CONTENT VARCHAR2(100)
);

☑️ ROLE(역할)

: 권한 묶음 ! --> 묶어둔 권한을 특정 계정에 부여하면 그 계정은 권한을 갖게 된다.

(sys)

GRANT CONNECT, RESOURCE TO csj_sample;
  • CONNECT : DB 접속 관련 권한을 묶어둔 ROLE
  • RESOURCE : DB 사용을 위한 기본 객체 생성 권한을 묶어둔 ROLE

☑️ 객체 권한 부여

GRANT 객체권한 ON 객체명 TO 사용자명;

  1. (kh) sample 계정에 테이블 조회 권한 부여
GRANT SELECT ON EMPLOYEE TO csj_sample;
  1. (sample) kh.EMPLOYEE 조회
SELECT * FROM kh.EMPLOYEE;

** 보통 KH계정(운영용DB)/ SAMPLE(테스트DB)
--> 운영용DB의 데이터를 복사해서 테스트!

  1. (sample) kh.EMPLOYEE 테이블 복사
CREATE TABLE EMP_SAMPLE
AS SELECT * FROM KH.EMPLOYEE;
SELECT * FROM EMP_SAMPLE;

--> 복사본이므로 원본 영향 X

  1. (kh) sample 계정에 부여한 EMPLOYEE 테이블 조회 권한 회수
    REVOKE 객체권한 ON 객체명 FROM 사용자명;
REVOKE SELECT ON EMPLOYEE FROM csj_sample;
profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글