본문 바로가기
Database/Oracle

[ORACLE] ALL_TAB_PRIVS 뷰 완벽 가이드 : 테이블 권한 조회 및 실무 활용법

by Papa Martino V 2025. 6. 15.
728x90

오라클 ALL_TAB_PRIVS 뷰 완벽 가이드: 테이블 권한 조회 및 실무 활용법
[Oracle] ALL_TAB_PRIVS

 

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. 참고자료

 

728x90