역할(Role)

·2025년 4월 29일

역할(Role)

역할은 권한들을 그룹화한 것으로, 여러 권한을 한 번에 관리할 수 있게 해줍니다.

기본 제공 역할

  1. CONNECT: 기본 접속 권한을 포함
  2. RESOURCE: 객체 생성 관련 권한을 포함
  3. DBA: 거의 모든 시스템 권한 포함 (매우 강력함)

역할 관리 문법

-- 역할 생성
CREATE ROLE 역할명;

-- 역할에 권한 부여
GRANT 권한1, 권한2, ... TO 역할명;

-- 사용자에게 역할 부여
GRANT 역할명 TO 사용자명;

-- 역할 삭제
DROP ROLE 역할명;

역할 사용 예시

-- 새 역할 생성
CREATE ROLE C##app_user;

-- 역할에 권한 부여
GRANT CREATE SESSION, CREATE TABLE TO C##app_user;
GRANT SELECT ON student.room TO C##app_user;

-- 사용자에게 역할 부여
GRANT app_user TO user1, user2, user3;

권한 확인 방법

-- 사용자에게 부여된 시스템 권한 확인
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'USER명';

-- 사용자에게 부여된 객체 권한 확인
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'USER명';

-- 사용자에게 부여된 역할 확인
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'USER명';

-- 역할에 포함된 권한 확인
SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = '역할명';

권한과 역할의 모범 사례

  1. 최소 권한 원칙: 필요한 권한만 부여
  2. WITH ADMIN OPTION과 WITH GRANT OPTION 사용 시 주의
  3. 직접 권한 부여보다 역할을 통한 부여 선호
  4. 강력한 권한(SYSDBA, DBA 등)은 제한적으로 부여
  5. 주기적인 권한 검토 및 불필요한 권한 제거

이러한 권한과 역할을 적절히 관리하면 데이터베이스 보안을 효과적으로 유지할 수 있습니다.

GRANT SELECT 구문에서 SELECT 외에 부여할 수 있는 권한(Privileges)은 오라클에서 크게 두 가지로 나뉩니다: 오브젝트 권한시스템 권한입니다.


오브젝트 권한 (특정 테이블, 뷰 등 객체에 대한 권한)

  • SELECT: 데이터 조회 권한
  • INSERT: 데이터 삽입 권한
  • UPDATE: 데이터 수정 권한
  • DELETE: 데이터 삭제 권한
  • MERGE: 데이터 병합 권한
  • ALTER: 테이블 구조 변경 권한
  • INDEX: 인덱스 생성 권한
  • REFERENCES: 외래키(FK) 참조 권한
  • ALL: 위 모든 오브젝트 권한을 한 번에 부여

예시:

GRANT INSERT, UPDATE, DELETE ON student.room TO C##app_user;
GRANT ALL ON student.room TO C##app_user;

여러 권한을 쉼표로 구분하여 동시에 부여할 수 있습니다[1][5][6].


시스템 권한 (DB 전체 혹은 특정 작업에 대한 권한)

  • CREATE SESSION: 데이터베이스 접속 권한
  • CREATE TABLE: 테이블 생성 권한
  • CREATE VIEW: 뷰 생성 권한
  • CREATE PROCEDURE: 프로시저 생성 권한
  • CREATE USER: 사용자 생성 권한
  • DROP USER: 사용자 삭제 권한
  • ALTER USER: 사용자 정보 변경 권한
  • SELECT ANY TABLE: 모든 테이블 조회 권한
  • INSERT ANY TABLE: 모든 테이블에 데이터 삽입 권한
  • UPDATE ANY TABLE: 모든 테이블에 데이터 수정 권한
  • DELETE ANY TABLE: 모든 테이블에 데이터 삭제 권한
  • CREATE ANY TABLE: 모든 스키마에 테이블 생성 권한
  • DROP ANY TABLE: 모든 스키마에 테이블 삭제 권한
  • GRANT ANY PRIVILEGE: 임의의 권한 부여 권한
  • DBA: 데이터베이스 관리자 권한(모든 권한 포함)
  • RESOURCE, CONNECT: 오라클에서 자주 쓰는 표준 롤(역할) 권한

예시:

GRANT CREATE SESSION, CREATE TABLE TO C##app_user;
GRANT DBA TO C##app_user;

시스템 권한은 객체가 아닌 사용자에게 직접 부여합니다[2][4][6].


참고: 권한 옵션

  • WITH GRANT OPTION: 부여받은 오브젝트 권한을 다른 사용자에게 다시 부여할 수 있는 권한
  • WITH ADMIN OPTION: 부여받은 시스템 권한 또는 롤을 다른 사용자에게 부여할 수 있는 권한

요약 표

권한 종류설명예시
SELECT데이터 조회테이블, 뷰
INSERT데이터 삽입테이블
UPDATE데이터 수정테이블, 뷰
DELETE데이터 삭제테이블, 뷰
MERGE데이터 병합테이블
ALTER객체 구조 변경테이블, 뷰 등
INDEX인덱스 생성테이블
REFERENCES외래키 참조테이블
ALL모든 오브젝트 권한테이블, 뷰 등
CREATE SESSIONDB 접속 권한사용자
CREATE TABLE테이블 생성사용자
DBA모든 권한(관리자)사용자

필요한 권한에 따라 위 권한들을 조합해서 GRANT 구문에 사용할 수 있습니다.

profile

0개의 댓글