
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_OPTION이 YES일 경우, 해당 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 TRIGGER나 CREATE 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
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] SESSION_PRIVS 뷰 완벽 해설 : 현재 세션이 가진 권한 확인 방법 (0) | 2025.10.09 |
|---|---|
| [ORACLE] ROLE_TAB_PRIVS 뷰 완벽 해설 – 사용자별 테이블 권한 확인 가이드 (0) | 2025.10.09 |
| [ORACLE] ROLE_ROLE_PRIVS : 롤 간 권한 상속을 한눈에 (0) | 2025.09.10 |
| [ORACLE] RESOURCE_COST 뷰 완벽 가이드 (0) | 2025.09.10 |
| [ORACLE] NLS_INSTANCE_PARAMETERS 뷰 완벽 가이드 (0) | 2025.09.10 |