본문 바로가기
Database/Oracle

[ORACLE] USER_TAB_PRIVS : 오브젝트 권한 관리의 핵심 뷰 완전 정복

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

USER_TAB_PRIVS : 오브젝트 권한 관리의 핵심 뷰 완전 정복
[ORACLE] USER_TAB_PRIVS

1. USER_TAB_PRIVS란?

USER_TAB_PRIVS는 현재 사용자에게 부여된 오브젝트(테이블, 뷰, 프로시저 등) 권한 정보를 확인할 수 있는 Oracle의 데이터 딕셔너리 뷰입니다. 보안 감사, 권한 분리 점검, 접근 통제 정책 수립에 있어 핵심적인 정보를 제공합니다. 특히 대규모 조직에서 수많은 테이블에 대한 접근 권한을 관리할 때, 어떤 객체에 어떤 권한이 부여되었는지를 체계적으로 파악하는 데 필수적인 뷰입니다.

2. 주요 컬럼 설명

컬럼명 설명
TABLE_NAME 권한이 부여된 오브젝트의 이름
GRANTOR 권한을 부여한 사용자
GRANTEE 권한을 부여받은 사용자
PRIVILEGE 부여된 권한 (SELECT, INSERT 등)
GRANTABLE 해당 권한을 다른 사용자에게 부여 가능한지 여부
TYPE 오브젝트 타입 (TABLE, VIEW 등)

3. 실무 활용 예제

3.1. 나에게 부여된 권한 전체 조회


SELECT 
  TABLE_NAME, 
  PRIVILEGE, 
  GRANTOR 
FROM 
  USER_TAB_PRIVS;
    

3.2. 특정 테이블에 대한 권한 확인


SELECT 
  GRANTEE, 
  PRIVILEGE, 
  GRANTABLE 
FROM 
  USER_TAB_PRIVS 
WHERE 
  TABLE_NAME = 'EMPLOYEES';
    

3.3. SELECT 권한만 조회


SELECT 
  TABLE_NAME, 
  PRIVILEGE 
FROM 
  USER_TAB_PRIVS 
WHERE 
  PRIVILEGE = 'SELECT';
    

4. USER_TAB_PRIVS와 관련 뷰 비교

뷰 이름 설명 사용자 범위 접근 가능 정보
USER_TAB_PRIVS 현재 사용자에게 부여된 오브젝트 권한 현재 사용자 본인 권한만 조회 가능
ALL_TAB_PRIVS 접근 가능한 모든 오브젝트 권한 모든 사용자 본인이 가진 권한 + 다른 사용자가 자신에게 준 권한
DBA_TAB_PRIVS 모든 사용자에 대한 권한 정보 DBA만 전체 시스템 권한 감시 가능

5. USER_TAB_PRIVS 활용 전략

  • 보안 점검: 불필요하게 부여된 SELECT, INSERT 권한을 탐지하고 회수
  • 권한 누수 방지: GRANTABLE='YES'인 경우, 2차 권한 부여 가능 여부 점검
  • 시스템 감시: 정기적으로 권한 맵을 추출하여 권한 변경 추적
  • 자동화 연계: USER_TAB_PRIVS 데이터를 활용한 권한 리포트 자동화 가능

6. 주의할 점

  • CASE 민감: 오라클에서 테이블 이름은 기본적으로 대문자로 저장되므로 조회 시 주의
  • 정확한 권한 파악: 시스템 권한은 USER_SYS_PRIVS에서 별도로 확인
  • 역할 기반 권한은 제외: ROLE을 통한 권한 부여는 해당 뷰에 나타나지 않음

7. 결론

USER_TAB_PRIVS는 오라클 환경에서 사용자 권한을 투명하게 관리하고, 보안 및 컴플라이언스 요건을 충족시키는 데 핵심적인 역할을 합니다. 단순히 뷰를 조회하는 데서 그치지 않고, 권한 정책의 자동화, 권한 회수 정책 수립, 보안 점검 시나리오 등에 폭넓게 활용할 수 있습니다.

8. 출처

728x90