본문 바로가기
Database/Oracle

[ORACLE] ROLE_SYS_PRIVS 뷰 완벽 해설 : 시스템 권한과 역할 매핑 구조

by Papa Martino V 2025. 10. 9.
728x90

 

ROLE_SYS_PRIVS
[ORACLE] ROLE_SYS_PRIVS

 

ROLE_SYS_PRIVS는 오라클 데이터베이스에서 역할(Role)과 시스템 권한(System Privilege) 간의 관계를 조회할 수 있는 핵심적인 데이터 딕셔너리 뷰입니다. 이 뷰는 데이터베이스 보안을 설계하거나 사용자 권한을 점검할 때 매우 중요한 역할을 합니다. 특히 DBA_ROLE_PRIVS 또는 ROLE_TAB_PRIVS와 함께 사용하면 권한의 계층적 구조를 명확히 이해할 수 있습니다.


1. ROLE_SYS_PRIVS의 개요

ROLE_SYS_PRIVS는 각 ROLE에 부여된 시스템 권한(SYSTEM PRIVILEGE)을 보여주는 데이터 사전 뷰입니다. 즉, 어떤 역할이 어떤 시스템 권한을 보유하고 있는지 확인할 때 사용됩니다.

항목 설명
뷰 이름 ROLE_SYS_PRIVS
소유자 SYS
주요 목적 역할(Role)에 부여된 시스템 권한 확인
조회 권한 DBA 또는 SELECT ANY DICTIONARY 권한 필요

2. 주요 컬럼 설명

ROLE_SYS_PRIVS 뷰는 아래의 주요 컬럼으로 구성되어 있습니다.

컬럼명 데이터타입 설명
ROLE VARCHAR2(128) 시스템 권한을 부여받은 역할 이름
PRIVILEGE VARCHAR2(40) 부여된 시스템 권한 이름
ADMIN_OPTION VARCHAR2(3) ADMIN 권한 부여 여부 (YES/NO)

ADMIN_OPTIONYES일 경우, 해당 ROLE은 다른 사용자에게 동일한 권한을 부여할 수 있습니다.


3. ROLE_SYS_PRIVS 활용 예시

3-1. 특정 역할에 부여된 시스템 권한 확인

SELECT ROLE, PRIVILEGE, ADMIN_OPTION
FROM ROLE_SYS_PRIVS
WHERE ROLE = 'DBA';

위 쿼리는 DBA 역할이 가진 모든 시스템 권한을 보여줍니다. 일반적으로 DBA는 거의 모든 시스템 권한을 포함하고 있으며, ADMIN_OPTION 값은 대부분 ‘YES’입니다.

3-2. 특정 권한을 보유한 역할 조회

SELECT ROLE
FROM ROLE_SYS_PRIVS
WHERE PRIVILEGE = 'CREATE USER';

이 쿼리는 CREATE USER 권한을 가진 역할 목록을 반환합니다. 보안 담당자는 이를 통해 사용자 생성이 가능한 역할을 파악할 수 있습니다.


4. 다른 권한 관련 뷰와의 비교

ROLE_SYS_PRIVS는 오라클 내 다양한 권한 관련 뷰와 함께 사용됩니다. 아래는 주요 관련 뷰 간 비교입니다.

뷰 이름 권한 유형 대상 용도
ROLE_SYS_PRIVS 시스템 권한 ROLE 역할이 가진 시스템 권한 확인
DBA_SYS_PRIVS 시스템 권한 USER 또는 ROLE 사용자 및 역할에 직접 부여된 권한 확인
ROLE_TAB_PRIVS 객체 권한 ROLE 역할에 부여된 테이블/뷰 권한 확인
USER_ROLE_PRIVS 역할 권한 USER 사용자에게 부여된 역할 확인

5. 보안 점검 및 관리 활용

ROLE_SYS_PRIVS는 보안 정책 수립 시 다음과 같은 목적으로 활용됩니다.

  • 관리자 역할이 가진 시스템 권한 점검
  • 불필요하게 강력한 권한이 포함된 역할 식별
  • 보안 감사(Audit) 대상 역할 선정
  • 권한 위임 관리 체계 수립

예를 들어, "RESOURCE" 역할은 일부 환경에서는 개발자에게 부여되지만, CREATE TRIGGERCREATE PROCEDURE 등의 권한을 포함하고 있어 보안상 주의가 필요합니다.


6. ROLE_SYS_PRIVS 관리 시 주의사항

  • 불필요한 ADMIN_OPTION이 부여된 경우, 즉시 검토 및 제거 필요
  • 테스트 환경과 운영 환경의 ROLE 권한 차이를 주기적으로 비교
  • 감사 로그와 연동하여 ROLE 변경 내역 추적
  • DBA_SYS_PRIVS와 함께 주기적 점검 수행

보안 강화를 위해서는 최소 권한 원칙(Least Privilege Principle)을 반드시 준수해야 하며, 권한 위임은 관리 절차를 거쳐야 합니다.


7. ROLE_SYS_PRIVS를 활용한 자동 점검 스크립트 예시

SELECT r.role, r.privilege, r.admin_option
FROM role_sys_privs r
WHERE r.role IN (
    SELECT role FROM dba_roles WHERE authentication_type = 'NONE'
)
ORDER BY r.role, r.privilege;

위 스크립트는 인증이 필요 없는 역할에 부여된 시스템 권한을 조회하여, 잠재적인 보안 취약점을 식별하는 데 사용됩니다.


8. 성능 및 관리 팁

  • 정기적인 ROLE_SNAPSHOT: ROLE_SYS_PRIVS 내용을 정기적으로 백업하여 변경 추적 가능
  • 뷰 결합 조회: DBA_SYS_PRIVS 및 ROLE_TAB_PRIVS와 조합하여 종합적인 권한 구조 분석
  • 데이터 마스킹 환경에서는 ROLE_SYS_PRIVS를 통해 권한 누수 가능성 점검

9. 결론

ROLE_SYS_PRIVS는 오라클 보안 관리의 기초이자 핵심입니다. 역할 기반의 접근 제어(RBAC)를 사용하는 모든 환경에서 이 뷰를 정기적으로 모니터링하면 권한 오남용을 예방하고 체계적인 보안 관리가 가능합니다.

특히 복잡한 다중 사용자 환경에서 ROLE_SYS_PRIVS는 권한 흐름의 시각적 이해를 돕고, 데이터베이스 보안성을 높이는 데 핵심적인 역할을 합니다.


출처

  • Oracle® Database Reference 19c – Data Dictionary Views: ROLE_SYS_PRIVS
  • Oracle Database Security Guide
728x90