728x90

Oracle 데이터베이스를 운영하거나 보안 감사를 수행하는 경우, 특정 사용자 또는 역할이 어떤 테이블이나 뷰에 대해 어떤 권한을 갖고 있는지를 파악하는 것이 매우 중요합니다. 이때 유용하게 활용되는 시스템 뷰가 ALL_TAB_PRIVS입니다.
본 문서에서는 Oracle의 ALL_TAB_PRIVS 뷰가 제공하는 기능과 구조를 설명하고, 실무에서 권한 관리와 보안 점검에 어떻게 활용할 수 있는지 다양한 예제와 함께 소개합니다.
1. ALL_TAB_PRIVS란 무엇인가?
ALL_TAB_PRIVS는 사용자가 직접 부여받았거나 접근 가능한 객체(테이블/뷰)에 대해 어떤 권한을 가지고 있는지를 보여주는 Oracle의 시스템 뷰입니다. 이는 사용자 기반으로 권한 상태를 파악하는 데 매우 유용하며, GRANT문을 통해 설정된 SELECT, INSERT, UPDATE, DELETE 등의 권한을 추적할 수 있습니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| GRANTEE | 권한을 부여받은 사용자 또는 역할 |
| OWNER | 권한이 부여된 객체의 소유자 |
| TABLE_NAME | 권한이 부여된 테이블 또는 뷰 이름 |
| GRANTOR | 권한을 부여한 사용자 |
| PRIVILEGE | 부여된 권한 종류 (SELECT, INSERT 등) |
| GRANTABLE | 권한 재부여 가능 여부 (YES/NO) |
| HIERARCHY | 계층적 권한 부여 여부 (YES/NO) — 일반적으로 사용되지 않음 |
3. 관련 뷰 비교
| 뷰 이름 | 설명 | 조회 대상 |
|---|---|---|
| ALL_TAB_PRIVS | 사용자가 부여받은 객체 권한 | 일반 사용자 기준 |
| USER_TAB_PRIVS | 본인이 부여한 권한 | 권한 부여자 기준 |
| DBA_TAB_PRIVS | 모든 사용자에 대한 권한 정보 | DBA 권한 필요 |
4. 실무 활용 예제
4.1 특정 사용자가 어떤 객체 권한을 갖고 있는지 조회
SELECT TABLE_NAME, PRIVILEGE
FROM ALL_TAB_PRIVS
WHERE GRANTEE = 'SCOTT';
4.2 권한 재부여가 가능한 항목만 조회
SELECT *
FROM ALL_TAB_PRIVS
WHERE GRANTABLE = 'YES';
4.3 특정 테이블에 부여된 모든 권한 확인
SELECT GRANTEE, PRIVILEGE
FROM ALL_TAB_PRIVS
WHERE OWNER = 'HR' AND TABLE_NAME = 'EMPLOYEES';
4.4 본인이 부여한 권한 추적 (USER_TAB_PRIVS 활용)
SELECT GRANTEE, TABLE_NAME, PRIVILEGE
FROM USER_TAB_PRIVS;
5. 권한 관리 전략
- 최소 권한 원칙: 업무 수행에 필요한 최소한의 권한만 부여하도록 설계해야 보안 사고를 예방할 수 있습니다.
- 정기 감사: ALL_TAB_PRIVS 또는 DBA_TAB_PRIVS를 활용해 부적절한 권한 부여 여부를 주기적으로 점검해야 합니다.
- 권한 부여 로깅: GRANT 및 REVOKE 작업은 별도로 감사 로그에 기록하고 변경 이력을 관리하는 것이 중요합니다.
- 역할 기반 관리: 사용자 개별 권한보다는 역할(ROLE)을 통한 권한 묶음 관리가 유지보수에 유리합니다.
6. 요약: 권한 관련 주요 뷰 비교
| 뷰 | 기준 | 주요 컬럼 | 활용도 |
|---|---|---|---|
| ALL_TAB_PRIVS | 권한을 부여받은 사용자 | GRANTEE, PRIVILEGE, GRANTABLE | 접근 권한 점검 |
| USER_TAB_PRIVS | 권한을 부여한 사용자 | GRANTEE, PRIVILEGE | 권한 부여 이력 관리 |
| DBA_TAB_PRIVS | DB 전체 사용자 | 모든 권한 정보 | 보안 감사 및 정책 수립 |
7. 결론
Oracle의 ALL_TAB_PRIVS 뷰는 권한 기반 보안 모델을 운영하는 데 핵심적인 정보 제공 도구입니다. 해당 뷰를 통해 각 사용자가 어떤 객체에 어떤 권한을 갖고 있는지 실시간으로 확인하고, 불필요하거나 위험한 권한을 빠르게 식별하여 대응할 수 있습니다.
권한 구조가 복잡해질수록 체계적인 권한 관리가 필요하며, ALL_TAB_PRIVS를 포함한 관련 뷰들과 함께 사용하면 보안성과 유지보수성이 높은 데이터베이스 운영이 가능합니다.
8. 참고자료
- Oracle Database 21c Reference Guide: https://docs.oracle.com/en/database/
- SQL Developer 권한 관리 실무 가이드
- DBA 권한 감사 사례 (사내 보안 점검 문서)
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_CONS_COLUMNS 뷰 완벽 이해 : 제약조건 컬럼 추적하기 (0) | 2025.06.16 |
|---|---|
| [ORACLE] ALL_COL_COMMENTS 뷰 활용 법 : 컬럼 설명 관리의 핵심 (0) | 2025.06.16 |
| [ORACLE] ALL_SOURCE 뷰 완벽 가이드 : PL/SQL 소스코드 관리 (0) | 2025.06.15 |
| [ORACLE] ALL_OBJECTS 뷰 완전 정복 : 객체 관리와 분석의 핵심 (0) | 2025.06.15 |
| [ORACLE] ALL_SYNONYMS 뷰 완벽 해설과 실무 활용법 (0) | 2025.06.15 |