주니어 기초 코딩공부/JAVA_programmers_코딩테스트

18장 데이터베이스 롤 권한 제어_롤 생성, 회수 방법(SQL 오라클)

jju_developer 2022. 12. 21. 21:21
728x90

✔ 데이터베이스 롤 권한 제어란?

 롤은 사용자에게 보다 효율적으로 권한을 부여할 수 있도록 여러 개의 권한을 묶어 놓은 것 입니다.

 

 데이터베이스의 접속 권한(CREATE SESSION), 테이블 생성 권한(CREATE TABLE), 테이블 수정(UPDATE), 삭제(DELETE), 조회(SELECT) 등과 같은 권한은 사용자에게 기본적으로 필요한 권한들인데 사용자를 생성할 때마다 일일이 이러한 권한을 부여하는 것은 번거습니다.


 이 때문에 다수의 사용자에게 공통적으로 필요한 권한들을 에 하나의 그룹으로 묶어두고 사용자에게는 특정 롤에 대한 권한 부여를 함으로서 간단하게 권한 부여를 할 수 있도록 합니다.

 

 

사전에 정의된 롤 의 종류
CONNECT 롤
사전정의 8개 권한

ALTER SESSION, 
CREATE CLUSTER, 
CREATE DATABASE LINK, 
CREATE SEQUENCE, 
CREATE SESSION,
CREATE SYNONYM,
CREATE TABLE, CREATE VIEW

RESOURCE 롤
• 사용자가 객체(테이블, 뷰, 인덱스)를 생성할 수 있도록 하기 위해서 시스템 권한을 묶어 놓았다.

CREATE CLUSTER, 
CREATE PROCEDURE, 
CREATE SEQUENCE, 
CREATE TABLE, 
CREATE TRIGGER

DBA 롤
• 시스템 자원을 무제한적으로 사용하며 시스템 관리에 필요한 모든 권한을 부여할 수 있는 강력한 권한을 보유한 롤이다.

 

사용자 정의된 롤 의 종류
 사용자는 
CREATE ROLE 명령어로
 다음 형식에 따라 
롤을 생성해야 한다.
-- 형식
CREATE ROLE ROLE_NAME;

GRANT PRIVILEGE_NAME 
TO ROLE_NAME;

 


✔ System 계정에서 사용자 생성 후 권한 부여하기!

처음에 SYSTEM 계정에서 USER04를 생성하였습니다.

 

이후 CMD 가서 USER04 와 비밀번호 PWD로 로그인을 하려고 했는데

 

C:\Users\user2>SQLPLUS USER04/PWD
SQL*Plus: Release 11.2.0.2.0 Production on 수 12월 21 16:09:48 2022
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
ERROR:
ORA-01045: user USER04 lacks CREATE SESSION privilege; logon denied

 

이렇게 CONNECT가 거부되었습니다.

 

이런 경우에는 

GRANT CONNECT와 RESOURCE를 USER04에게 부여하였습니다.

 

이렇게 한 후 CMD에서 다시 로그인을 하니,

CONNECT가 성공적으로 되었습니다!!!

 

✔ 사용자 롤 정의하기

우선 사용자 정의된 롤의 이름을 MROLE로 지정 후 CREATE했습니다.

 

그 후, MROLL에게 어떤 권한을 줄까 생각 후 지정합니다.

 

그다음에 새로운 사용자를 만든 후, MROLL을 부여하였습니다.

 

이렇게 한다면 다른 사용자들도 저런 ROLE을 줄때 복잡하게 여러개를 만들어서 권한을 주게 되면

빠진 권한이 있을수 있으니, 처음부터 딱! 난 무슨 무슨 권한을 줄꺼야를 정해놓고

그 정해 놓은 권한을 부여하면 훨씬 간단해집니다.

 

 

✔ 롤 회수하기

-- 형식
REVOKE ROLE_NAME FROM USER_NAME;

 

 

 

 

그럼 지금까지 롤의 권한 부여 방법 및 회수 방법에 대한 설명이였습니다.

 

감사합니다.

 

 

 

 


<지난시간 복습>

권환(Privilages)

- 시스템 권한 : CREATE USER, CREATE TABLE, CREATE VIEW... 80개

- 객체 권한 : 객체 (TABLE, VIEW, SEQUENCE...) 에 접근 (DML) 여부

다른말고 스키마의 객체에 접근을 제어하기 위함입니다.

 

역할(ROLE) : 권한의 집합체 -> 아직 안배웠습니다.

 

사용자 생성하기

  CREATE USER USER_NAME IDENTIFIED BY PASSWORD;

  CREATE USER USER01 IDENTIFIED BY PWD;

 

권한 부여

  GRANT CREATE SESSION, CREATE TABLE TO USER01;

 

권한 회수

  REVOKE CREATE TABLE FROM USER01;

 

객체 권한

 -스키마(SCHEMA) : 사용자가 가지고 있는 모든 객체를 스키마라고 한다.

(객체를 소유한 사용자명)

 


 

728x90