[Oracle 7-2] DCL(DATA CONTROL LANGUAGE) : 데이터 제어어

임승현·2022년 11월 1일

Oracle

목록 보기
19/20

🐧DCL(DATA CONTROL LANGUAGE)

: 데이터 제어어

◈ 계정에게 권한을 부여하거나 회수하는 명령
◈ 오라클 권한(PROVOLEGE) : 시스템 권한(관리자)과 객체 권한(일반 사용자)으로 구분

◈ 시스템 권한을 계정에게 부여
◈ 시스템 권한 : 강사님 파일 참고
형식) GRANT {PRIVILEGE|ROLL},{PRIVILEGE|ROLL,... TO {계정명|PUBLIC} [WITH ADMIN OPTION][IDENTIFIED BY 암호]
◈ 롤(ROLL) : 시스템 권한을 그룹화하여 표현한 명칭
◈ 계정명 대신 PUBLIC 키워드를 사용하면 모든 계정에게 일괄적으로 시스템 권한 부여
◈ WITH ADMIN OPTION : 부여받은 시스템 권한을 다른 계정에게 부여하거나 회수하는 권한을 제공하는 옵션
◈ 시스템 권한을 부여받을 계정이 없는 경우 자동으로 계정 생성
◈ GRANT 명령으로 계정이 생성될 경우 반드시 IDENTIFIED BY를 이용하여 암호 설정

🎨KIM 계정 생성 - 관리자 세션에서 작업

📤CREATE USER KIM IDENTIFIED BY 1234

🎨KIM 계정으로 오라클 서버에 접속 - SQLPLUS 사용 : 접속 불가능

◈ 명령 프로프트로 아래 명령어 입력

SQLPLUS/NOLOG >> 로그인을 시도하지 않고 SQLPLUS 프로그램 실행


─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

SQL > CONN KIM > 1234 >> 오라클 서버에서 접속하기 위해 계정과 비밀번호를 입력 - 로그인 처리


ORA-01045: 사용자 KIM는 CREATE SESSION 권한을 가지고 있지 않음; 로그온이 거절되었습니다.

🎨KIM 계정으로 CREATE SESSION 시스템 권한 부여 - 관리자 세션에서 작업

📤GRANT CREATE SESSION TO KIM;

🎨KIM 계정으로 오라클 서버에 접속 - SQLPLUS 사용 : 접속 가능

◈ 명령 프롬프트로 아래 명령어 입력

SQLPLUS/NOLOG >> 로그인을 시도하지 않고 SQLPLUS 프로그램 실행

SQL > CONN KIM > 1234 >> 오라클 서버에서 접속하기 위해 계정과 비밀번호를 입력 - 로그인 처리


연결되었습니다.

🎨KIM 계정으로 SAWON 테이블 생성 - 사원번호(숫자형-PRIMARY KEY),사원이름(문자형),급여(숫자형) - SQLPLUS 사용 : 생성 불가능

◈ 명령 프롬프트에 아래 명령어 입력

SQL > CREATE TABLE SAWON(NO NUMBER(4) PRIMARY KEY,NAME VARCHAR2(20),PAY NUMBER);


ORA-01031: 권한이 불충분합니다

🎨KIM 계정에게 CREATE TABLE 시스템 권한 부여 - 관리자 세션에서 작업

📤GRANT CREATE TABLE TO KIM;

🎨KIM 계정으로 SAWON 테이블 생성 - 사원번호(숫자형-PRIMARY KEY),사원이름(문자형),급여(숫자형) - SQLPLUS 사용 : 생성 불가능

◈ 명령 프롬프트에 아래 명령어 입력

SQL > CREATE TABLE SAWON(NO NUMBER(4) PRIMARY KEY,NAME VARCHAR2(20),PAY NUMBER);


테이블이 생성되었습니다.

📌객체 권한을 계정에게 부여

◈ 객체 권한 : 사용자 스키마의 객체 관련 명령(DQL 및 DML) 사용에 대한 권한
형식) GRANT {ALL|PRIVILEGE,PRIVILEGE,...} ON 객체명 TO 계정명 [WITH GRANT OPTION]
◈ 객체 권한은 INSERT,UPDATE,DELETE,SELECT 등 키워드로 표현
◈ ALL : 객체에 관련된 모든 명령 사용 권한 표현
◈ WITH GRANT OPTION : 부여받은 객체 권한을 다른 계정에게 부여하거나 회수하는 기능을 제공하는 옵션

🎨SCOTT 계정의 DEPT 테이블에 저장된 모든 행 검색 - 계정 소유의 객체는 [계정명.객체명]으로 표현

SELECT * FROM SCOTT.DEPT;


─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
◈ 현재 접속 계정의 객체인 경우 계정명 생략 가능
→ 현재 접속 계정의 객체가 아닌 경우에만 계정명을 표현

SELECT * FROM DEPT;

🎨KIM 계정으로 SCOTT 계정의 DEPT 테이블에 저장된 모든 행 검색 - SQLPLUS 사용 : 검색 불가능

SQL > SELECT * FROM SCOTT.DEPT; 
→ 현재 접속된 계정의 객체가 아닌 경우 반드시 [계정명.객체명]으로 표현


ORA-00942: 테이블 또는 뷰가 존재하지 않습니다.
◈ KIM 계정은 SCOTT 계정에 존재하는 DEPT 테이블에 접근할 수 있는 객체 권한이
없으므로 에러 발생
◈ KIM 계정이 SCOTT 계정에게 DEPT 테이블에 접근할 수 있는 객체 권한 요청

🎨SCOTT 계정이 KIM 계정에게 DEPT 테이블에 저장된 행을 검색할 수 있는 권한 부여

GRANT SELECT ON DEPT TO KIM;


───────────────────────────────────────
◈ 객체 권한을 부여 받은 후 KIM 계정으로 SCOTT 계정의 DEPT 테이블에 저장된 모든 행 검색 - SQLPLUS 사용 : 검색 가능

SQL > SELECT * FROM SCOTT.DEPT;

🎨다른 계정에게 부여한 객체 권한 확인 - USER_TAB_PRIVS_MADE : 부여한 객체 권한 정보를 제공하는 딕셔너리

SELECT * FROM USER_TAB_PRIVS_MADE;

🎨다른 계정에게 부여한 객체 권한 확인 - USER_TAB_PRIVS_RECD : 부여한 객체 권한 정보를 제공하는 딕셔너리

SELECT * FROM USER_TAB_PRIVS_RECD;

📌객체 권한 회수

형식) REVOKE {ALL|PRIVILEGE,PRIVILEGE,...} ON 객체명
FROM 계정명 [WITH GRANT OPTIONSELECT]

🎨SCOTT 계정이 KIM 계정에게 DEPT 테이블에 저장된 행을 검색할 수 있는 권한 회수

REVOKE SELECT ON DEPT FROM KIM;


─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

SELECT * FROM USER_TAB_PRIVS_MADE;

📌시스템 권한 회수 - 모든 시스템 권한을 회수해도 계정 미삭제

형식) REVOKE {PRIVILEGE|ROLL},{PRIVILEGE|ROLL},... TO {계정명|PUBLIC} [WITH ADMIN OPTION]

🎨관리자가 KIM 계정에게 부여한 CREATE SESSION 시스템 권한 회수 - 관리자 세션에서 작업

📤REVOKE CREATE SESSION FROM KIM;

◈ 롤(ROLL) : 관리자가 일반 계정의 시스템 권한을 효율적으로 부여하거나 회수하기 위해 사용하는 시스템 권한 그룹
◈ 오라클에는 기본적으로 제공되는 롤 존재
◈ CONNECT : 기본적인 시스템 권한 그룹
→ CREATE SESSION,CREATE TABLE,ALTER SESSION,CREATE SYNONYM 등
◈ RESOURCE : 객체 관련 시스템 권한 그룹
→ CREATE TABLE,CREATE SEQUENCE,CREATE TRIGGER 등
◈ DBA : 시스템 관리에 필요한 모든 시스템 권한 그룹 - 관리자 관련 롤

🎨관리자가 LEE 계정에게 CONNECT,RESOURCE 롤 부여 - 관리자 세션에서 작업

📤GRANT CONNECT,RESOURCE TO LEE IDENTIFIED BY 1234;

🎨LEE 계정으로 오라클 서버에 접속하여 SAWON 테이블 생성 - SQLPLUS 사용 : 서버 접속 및 테이블 생성 가능

SQL> CONN LEE/1234


연결되었습니다.
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

SQL> CREATE TABLE SAWON(NO NUMBER(4) PRIMARY KEY,NAME VARCHAR2(20),PAY NUMBER);


테이블이 생성되었습니다

🎨관리자가 LEE 계정에게 CONNECT와 RESOURCE 롤 회수 - 관리자 세션 작업

📤REVOKE CONNECT,RESOURCE FROM LEE;

0개의 댓글