Back-End/Oracle

Oracle ■ DCL GRANT, REVOKE

SIKIDA 2024. 8. 2. 17:38
728x90

 

 

DCL 

 

• DCL

계정에겐 권한을 부여하거나 회수하는 역할을 가진 언어

DB의 데이터 접근 및 보안을 담당하며 각각의 직원들이 가진 역할에 대해

최소한의 권한만을 부여하여 사용하는 것이 좋음

 

GRANT 

계정에게 권한을 부여하며 시스템 권한과 접근 권한으로 나뉘어 짐

시스템 권한 : 데이터베이스 시스템 자체에 대한 권한으로써 데이터베이스에 접근하거나 스키마에 접근하여 객체를 관리할 수 있는 권한

접근 권한 : 특정 객체들을 조작(DML)할 수 있는 권한

 

표현법 : GRANT 권한1, 권한2, 권한3, … TO 계정명;

 

• 시스템 권한 종류

1. CREATE SESSION : 계정 접속 권한

2. CREATE TABLE : 테이블 생성 권한

3. CREATE USER : 계정 생성 권한

4. CREATE SEQUENCE : 시퀀스 생성 권한

5. CREATE INDEX : 인덱스 생성 권한

6. DROP USER : 계정 삭제 권한

7. ALTER SYSTEM : 데이터베이스 시스템 설정 변경 권한

8. …

 

• 테스트를 위한 계정 생성

CREATE USER webuser IDENTIFIED BY qwer1234;

CREATE USER grantuser IDENTIFIED BY qwer1234;

* 만약 ORA-65095 발생 시 ALTER SESSION SET "_ORACLE_SCRIPT"=true; 실행 후 재시도

 

• 참고

로그인으로 해버리면 계속 계정을 왓다갓다 해야 하므로 Test Connection… 사용

 

 

 GRANT - 시스템 권한 

 

• CREATE SESSION

아래 쿼리를 입력하여 계정 접속 권한 부여 후 다시 시도

 

GRANT CREATE SESSION TO webuser;

로그인이 잘 되었다면 CREATE TABLE을 사용하여 테이블 생성 해보기

 

• CREATE TABLE

webuser 계정에게 테이블을 생성할 수 있는 권한 부여

GRANT CREATE TABLE TO webuser;

 

• 테이블스페이스 용량 할당

아래 쿼리를 사용하여 새로 생성한 webuser 계정에게 테이블 스페이스 용량 할당

ALTER USER webuser DEFAULT TABLESPACE users quota unlimited ON users;

-> webuser 작성한 자리 : 계정명

-> quota unlimited : 용량 제한 없음

-> users 작성한 자리 : 테이블스페이스명

 

 

 GRANT - 객체 권한 

 

• 객체 권한

표현법 : GRANT 권한 ON 객체 TO 계정명;

 

• 참고

webadmin 계정에서 테이블을 생성하고, 접근에 대한 권한은 webuser 계정으로 확인

 

• webadmin 계정의 테이블 확인하기

webuser 계정으로 접속하여 select 구문을 사용하고 webadmin 계정의 테이블을 확인할 수 있는지 확인

 

• SELECT 권한 부여

아래 쿼리를 작성하여 webadmin 계정의 employees 테이블을 SELECT할 수 있는 권한을 부여하고 다시 확인 해보기

 

GRANT SELECT ON webadmin.employees TO webuser;

-> webuser 계정에게 webadmin 계정의 employees 테이블을 SELECT할 수 있는 권한을 주겠다

 

 

 

 GRANT - ROLE 

 

• ROLE

필요한 권한들을 하나의 그룹으로 묶어놓고 효율적으로 권한을 관리하기 위한 집합

 

• 사용 방법

1. 롤 생성 : CREATE ROLE 롤이름

2. 롤 권한 부여 : GRANT 권한 ON 스키마이름.테이블이름 TO 롤이름

3. 사용자에게 롤 권한 부여 : GRANT 롤이름 TO 계정명

4. 롤 권한 회수 : REVOKE 권한 ON 스키마이름.테이블이름 TO 롤이름

5. 사용자에게 롤 권한 회수 : REVOKE 롤이름 FROM 계정명

6. 롤 삭제 : DROP ROLE 롤이름;

 

• 사용하는 이유

ROLE을 사용함으로써 유저들의 권한을 그룹별로 통일시켜 효율적인 관리가 가능함

 

 REVOKE 

 

• REVOKE

계정의 권한 제거

 

표현법 : REVOKE 권한 ON 테이블명 FROM 계정명

 

 

오늘은 간단하게 알아보았고 세부적으로는 정리를 안했다! 어느정도 공부하고 이해해서

다음에 깊게 공부를 진행해야겠다 그럼 20000!!

'Back-End > Oracle' 카테고리의 다른 글

Oracle ■ SEQUENCE, INDEX  (0) 2024.08.09
Oracle ■ TCL COMMIT, ROLLBACK, SAVEPOINT  (0) 2024.08.07
Oracle ■ DDL ALTER, DROP  (0) 2024.07.29
Oracle ■ 데이터베이스 정규화  (1) 2024.07.26
Oracle ■ CREATE  (0) 2024.07.25