Backend/Oracle

[DB] DCL :: 권한, 사용자 계정 생성하는 법

Deeb 2021. 9. 28. 17:53

✍DCL(Data Control Language)

:  데이터 제어 언어
데이터 베이스, 데이터베이스 내의 객체에 대한 접근 권한을 제어(부여, 회수)하는 언어
  • GRANT : 권한 부여
  • REVOKE : 권환 회수, 취소
조작
ex) 시험 성적 조작(점수라는 데이터를 바꿈)
제어
: 자동차 제어(자동차라는 물체의 움직임을 바꿈)

🚩1.  시스템 권한 부여

사용자에게 시스템 권한을 부여할 때 사용

표기법

GRANT 권한1, 권한2, ... -- TO 사용자 이름;

[ 시스템 권한 종류 ]


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

 

⭐ [ 계정의 종류 ]

 

- 관리자 계정 : 데이터베이스의 생성과 관리를 담당하는 계정이며 모든 권한과 책임을 가지는 계정

 ex) sys -- 모든게 다 있고,  system --SYS에서 몇개 빠짐
 

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

ex) 임의로 정한 사용자 계정명

 


🚩2. ROLE

권한의 묶음
여러 가지 관련된 권한들을 묶어서 한번에 부여, 회수하는 용도로 사용

 

1) CONNECT

데이터베이스 접속 권한 ( ==  CREATE SESSION)
SELECT * FROM 테이블명
WHERE ROLE = 'CONNECT'; 

CONNECT ROLE에 포함된 권한 모든 조회

 

2) RESOURCE

데이터베이스를 사용하기 위한 기본 객체 생성 권한을 묶어둔 롤
SELECT * FROM ROLE_SYS_PRIVS
WHERE ROLE = 'RESOURCE';

➡ TABLE 외 7가지 생성 권한 + 테이블 스페이스를 기본값으로 자동 부여

 

예제

CREATE USER 생성한 계정명 IDENTIFIED BY 비밀번호;
GRANT CONNECT, RESOURCE TO 생성한 계정명

➡ 관리자 계정에서 진행 -> 접속 창에서 생성한 계정 추가


🚩3. 객체 권한

특정 객체를 조작할 수 있는 권한을 부여

표기법

GRANT 권한 종류 [(컬럼명)] | ALL
ON 객체명 | ROLE 이름 | PUBLIC
TO 사용자 이름;

[ 객체 권한 종류 ]


권한 종류 설정 객체 (on뒤에 객체명 자리)
SELECT TABLE, VIEW, SEQUENCE
INSERT  TABLE, VIEW
UPDATE 
TABLE, VIEW
 DELETE  TABLE, VIEW
ALTER  TABLE, SEQUENCE
REFERENCES  TABLE
INDEX TABLE
EXECUTE  PROCEDURE

예제

더보기

두 개다 권한을 부여할 계정에서 진행 

GRANT SELECT ON 테이블명 TO 권한받을 계정명; 

➡ 권한 부여

REVOKE SELECT ON 테이블명 FROM 권한받은 계정명;

➡ 권환 회수


📝 실습

👉 계정 생성해서 권한 부여, 테이블 복사, 제약조건 추가

더보기

1) 계정 생성
- 사용자 계정명 : testuser
- 비밀번호 : test1234
- 부여 권한 : 데이터베이스 접속 권한, 
                  기본 객체 생성 권한, 
                  DD 계정 EMP 테이블 조회 권한

2) 생성된 사용자 testuser로 접속
3) DD 계정의 EMP 테이블을 복사한 TEST_EMP 테이블을 생성
4) 복사한 TEST_EMP 테이블의 EMP_ID 컬럼에 PRIMARY KEY 제약조건 추가

- 관리자 계정에서 진행

1) 계정 생성
CREATE USER testuser IDENTIFIED BY test1234;
1) 권한 부여
GRANT CONNECT, RESOURCE TO testuser;
GRANT SELECT ON EMPLOYEE TO testuser;

2) testuser 접속
좌상단에서 + 진행

- test 계정에서 진행

3)  DD계정의 EMP 테이블 복사 (조회 권한이 부여되어있기 때문에 복사 가능)
CREATE TABLE TEST_EMP AS
SELECT * FROM DD.EMPLOYEE;

4) constraint 제약조건명 붙여도 되고 안해도 되고 
ALTER TABLE TEST_EMP ADD PRIMARY KEY(EMP_ID);
반응형