우와한 개발자

[SQL] Oracle 역할(ROLE) 정리 - CREATE ROLE / GRANT / REVOKE / CONNECT / RESOURCE / DBA

by 우와한개발자

1. ROLE이란?

  • 여러 권한을 하나로 묶어 관리하는 객체
  • 사용자에게 권한을 일일이 부여하는 번거로움을 줄임
  • ROLE을 수정하면 해당 ROLE을 가진 모든 사용자에게 자동 반영됨
구분 직접 권한 부여 ROLE 사용
관리 권한 하나씩 부여 ❌ ROLE 하나만 부여 ✅
수정 사용자마다 개별 수정 ❌ ROLE만 수정하면 일괄 적용 ✅
편의성 불편 편리

 

권한을 하나씩 부여할 때
DBA → user1 : CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE ...❌ 번거로움

ROLE을 사용할 때
DBA → ROLE에 권한 묶음 → user1에게 ROLE 부여 ✅ 편리함

 

2. ROLE 생성 / 삭제

-- ROLE 생성
CREATE ROLE 롤명;

-- ROLE 삭제
DROP ROLE 롤명;
-- myrole에 여러 권한 부여
GRANT CREATE SESSION TO myrole;
GRANT CREATE TABLE TO myrole;
GRANT CREATE VIEW TO myrole;

 

3. ROLE에 권한 부여 /회수

-- ROLE에서 권한 부여
GRANT 권한명 TO 롤명;

-- ROLE에서 권한 회수
REVOKE 권한명 FROM 롤명;
GRANT CREATE SESSION TO myrole;

REVOKE CREATE SESSION FROM myrole;

 

4. 사용자에게 ROLE 부여 / 회수

-- 사용자에게 ROLE 부여
GRANT 롤명 TO 사용자명;

-- 사용자에게 ROLE 회수
REVOKE 롤명 FROM 사용자명;
-- DBA(system)로 접속
CONN system/1234

-- user1, user2에게 myrole 부여
GRANT myrole TO user1;
GRANT myrole TO user2;

-- user1 접속 확인
CONN user1/1234                -- ✅ CREATE SESSION 포함되어 로그인 가능
CREATE TABLE test(id NUMBER);  -- ✅ CREATE TABLE 포함되어 생성 가능

-- user1에게서 myrole 회수
CONN system/1234
REVOKE myrole FROM user1;

CONN user1/1234          -- ❌ CREATE SESSION 없어 로그인 불가

 

5. 기본 제공 ROLE

ROLE 이름 포함 권한
CONNECT CREATE SESSION 등 접속 관련 권한
RESOURCE CREATE TABLE, CREATE SEQUENCE 등 객체 생성 권한
DBA 모든 시스템 권한
-- 일반적으로 사용자 생성 후 기본 ROLE 부여
CONN system/1234
CREATE USER user1 IDENTIFIED BY 1234;

GRANT CONNECT TO user1;           -- 접속 권한
GRANT RESOURCE TO user1;          -- 객체 생성 권한

 

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기