본문 바로가기
Oracle/Etc

[ORACLE] ROLE() 실무 예제로 배우는 권한 관리의 핵심 기초

by Dev. Orion 2025. 6. 8.
728x90

오라클 ROLE() 실무 예제로 배우는 권한 관리의 핵심 기초
[Oracle] ROLE

 

1. ORACLE ROLE이란 무엇인가?

ROLE은 Oracle Database에서 여러 사용자에게 공통된 권한을 그룹 단위로 부여하기 위한 객체입니다. 관리자는 사용자에게 개별적으로 권한을 부여하는 대신, ROLE에 권한을 부여하고 해당 ROLE을 사용자에게 할당함으로써 효율적인 권한 관리를 할 수 있습니다.

2. ROLE의 필요성

  • 권한 부여의 일관성 유지
  • 보안 정책의 중앙 집중화
  • 유지보수 간소화 (특정 ROLE만 수정하면 전체 사용자에게 적용)
  • 감사 및 감사 로그 추적 용이

3. ROLE 생성 예제

CREATE ROLE dev_read_only;

설명: 'dev_read_only'라는 이름의 ROLE을 생성합니다.

4. 권한 부여 예제

GRANT SELECT ON employees TO dev_read_only;
GRANT SELECT ON departments TO dev_read_only;

설명: dev_read_only ROLE에 employees와 departments 테이블에 대한 SELECT 권한을 부여합니다.

5. ROLE 사용자에게 할당하기

GRANT dev_read_only TO user_martino;

설명: 사용자 'user_martino'에게 'dev_read_only' ROLE을 할당합니다.

6. ROLE 적용 예시: 개발팀과 운영팀

팀 구분 ROLE 이름 주요 권한 적용 예시
개발팀 dev_role SELECT, INSERT, UPDATE 개발 데이터 조회 및 수정
운영팀 ops_role SELECT ONLY 운영 환경에서 데이터 열람

7. ROLE 관련 시스템 뷰

  • DBA_ROLES: 데이터베이스 내 모든 ROLE 정보
  • DBA_ROLE_PRIVS: 사용자에게 부여된 ROLE 정보
  • ROLE_ROLE_PRIVS: ROLE 간 상속 정보
  • SESSION_ROLES: 현재 세션에서 활성화된 ROLE

8. ROLE 상태 관리

-- ROLE 비활성화
ALTER ROLE dev_read_only NOT IDENTIFIED;

-- ROLE 삭제
DROP ROLE dev_read_only;

9. ROLE 활성화 및 전환

-- 현재 세션에서 ROLE 활성화
SET ROLE dev_read_only;

주의: ROLE에 암호가 설정된 경우 SET ROLE dev_read_only IDENTIFIED BY password; 형식으로 지정해야 합니다.

10. 고급 예제: ROLE 계층 구조

-- 상위 ROLE 생성
CREATE ROLE admin_role;

-- 하위 ROLE 생성 및 권한 부여
CREATE ROLE report_role;
GRANT SELECT ON reports TO report_role;

-- 하위 ROLE을 상위 ROLE에 부여
GRANT report_role TO admin_role;

-- 사용자에 상위 ROLE 부여
GRANT admin_role TO manager_user;

설명: admin_role을 통해 report_role이 상속되며, 사용자 'manager_user'는 두 ROLE의 권한을 모두 획득합니다.

11. ROLE 보안 정책과 활용 팁

  • 권한 최소화 원칙 적용 (필요 최소 권한만 부여)
  • 비밀번호가 필요한 ROLE 설정 시 CREATE ROLE role_name IDENTIFIED BY password 사용
  • 중복 ROLE 방지 및 주기적 ROLE 정리
  • 사용자 퇴사 시 ROLE 회수 체크

12. 실무 활용 예: SaaS 다중 고객 계정 권한 분리

Oracle ROLE을 활용하면 고객별, 사용자별 권한을 구분하여 멀티 테넌시 구조의 SaaS 시스템에서 효과적인 권한 분리를 구현할 수 있습니다. 예를 들어, 각 고객에게 별도의 client_role을 생성하고, 권한을 부여한 뒤 고객의 DB 사용자에게만 할당함으로써 보안을 강화할 수 있습니다.

13. 마무리

Oracle ROLE은 보안, 효율성, 유지보수성 측면에서 매우 유용한 기능입니다. 특히 대규모 사용자 및 복잡한 권한 체계를 가진 시스템에서 역할 기반 접근 제어(RBAC: Role-Based Access Control)를 구현하는 핵심 도구로 활용됩니다. 체계적인 설계와 주기적인 점검을 통해 ROLE 기능을 적극 활용하시기 바랍니다.

출처

728x90