
Oracle 데이터베이스에서는 사용자나 역할(Role)이 다른 사용자로부터 객체 권한을 수신(Received)할 수 있습니다. 이러한 권한을 체계적으로 관리하지 않으면 보안 취약점이 발생하거나 예상치 못한 데이터 접근이 발생할 수 있습니다. 이러한 권한 관리에 도움을 주는 뷰가 바로 ALL_TAB_PRIVS_RECD 입니다. 이번 글에서는 이 뷰의 구조와 실무 활용 전략을 전문가 시각으로 자세히 분석합니다.
ALL_TAB_PRIVS_RECD 뷰란?
ALL_TAB_PRIVS_RECD 뷰는 현재 사용자가 다른 사용자나 스키마로부터 수신한 객체 권한을 확인할 수 있도록 설계된 뷰입니다. 즉, 사용자가 보유하고 있는 권한 중 직접 부여받은 객체 권한을 한눈에 파악할 수 있는 중요한 관리 도구입니다.
왜 중요한가?
불필요한 권한이나 과도한 접근 권한은 내부 데이터 유출, 무단 변경 등 다양한 보안 위협으로 이어질 수 있습니다. ALL_TAB_PRIVS_RECD 뷰를 활용하면 사용자가 가진 객체 권한을 정확히 파악하고, 불필요한 권한을 정리함으로써 보안을 강화할 수 있습니다.
주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| GRANTEE | 권한을 부여받은 사용자 |
| OWNER | 객체 소유자 |
| TABLE_NAME | 권한이 부여된 객체 이름 |
| PRIVILEGE | 수신한 권한 유형 (SELECT, INSERT 등) |
| GRANTOR | 권한을 부여한 사용자 |
| GRANTABLE | 수신 권한을 다른 사용자에게 재부여할 수 있는지 여부 |
활용 예제
예를 들어, 현재 사용자가 수신한 모든 SELECT 권한을 확인하고 싶다면 다음과 같은 쿼리를 사용할 수 있습니다.
SELECT OWNER, TABLE_NAME, GRANTOR
FROM ALL_TAB_PRIVS_RECD
WHERE PRIVILEGE = 'SELECT';
이를 통해 불필요한 SELECT 권한을 식별하고, 필요한 경우 DBA에게 권한 회수를 요청할 수 있습니다.
비슷한 뷰와의 비교
| 항목 | ALL_TAB_PRIVS_RECD | ALL_TAB_PRIVS_MADE |
|---|---|---|
| 정보 범위 | 내가 받은 권한 | 내가 부여한 권한 |
| 주요 활용 | 내 접근 권한 점검 및 보안 감사 | 권한 부여 내역 관리 및 감사 |
| 주요 사용자 | 일반 사용자, DBA | DBA, 객체 소유자 |
실무 활용 전략
- 접근 권한 감사: ALL_TAB_PRIVS_RECD 뷰를 활용해 자신이 받은 권한 내역을 주기적으로 점검하고, 과도하거나 불필요한 권한을 식별합니다.
- 권한 요청 및 회수 프로세스 최적화: 이 뷰를 기반으로 불필요한 권한 회수를 DBA에게 요청하거나, 필요한 권한만 최소화하여 요청할 수 있습니다.
- 보안 정책 준수 검증: 규정 준수를 위해 최소 권한 원칙(Least Privilege Principle)을 유지하고 있는지 점검할 수 있습니다.
활용 시 주의사항
- 수신 권한 회수는 시스템과 사용자 간 의존성에 영향을 줄 수 있으므로, 변경 전 철저한 영향 분석이 필요합니다.
- Oracle 버전과 패치 상태에 따라 컬럼 정보와 지원 기능이 다를 수 있으므로, 항상 최신 문서를 참고해야 합니다.
- 권한 변경 이력은 감사 로그 등 별도의 기록 관리 체계를 구축하는 것이 좋습니다.
결론
ALL_TAB_PRIVS_RECD 뷰는 자신이 보유한 객체 권한을 투명하게 파악하고, 보안 위험 요소를 사전에 제거할 수 있도록 돕는 중요한 도구입니다. 이를 활용하면 내부 보안 정책을 강화하고, 접근 권한의 최소화를 통해 데이터베이스 보안을 한층 더 견고하게 만들 수 있습니다. DBA뿐만 아니라 모든 데이터베이스 사용자가 꼭 활용해야 할 뷰라고 할 수 있습니다.
출처: Oracle Database Security Guide, Oracle 19c/21c Reference Manual, DBA 실무 경험 기반 분석 자료.
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_TRIGGER_COLS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.05 |
|---|---|
| [ORACLE] ALL_TAB_SUBPARTITIONS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.05 |
| [ORACLE] ALL_TAB_PRIVS_MADE 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.05 |
| [ORACLE] ALL_TAB_PARTITIONS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |
| [ORACLE] ALL_TAB_MODIFICATIONS 뷰 심층 분석과 실무 활용 전략 (0) | 2025.07.04 |