본문 바로가기
Database/Oracle

[ORACLE] USER_TAB_PRIVS_MADE : 사용자가 부여한 오브젝트 권한 추적 가이드

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

USER_TAB_PRIVS_MADE : 사용자가 부여한 오브젝트 권한 추적 가이드
[ORACLE] USER_TAB_PRIVS_MADE

1. USER_TAB_PRIVS_MADE란?

USER_TAB_PRIVS_MADE는 Oracle 데이터베이스에서 **현재 사용자가 다른 사용자에게 부여한 오브젝트 권한**을 확인할 수 있는 데이터 딕셔너리 뷰입니다. 조직 내에서 불필요하게 권한이 확산되는 것을 방지하거나, 특정 오브젝트에 대해 누가 어떤 권한을 부여했는지 추적할 때 유용하게 사용됩니다. 권한 부여 추적은 보안 감사, 컴플라이언스 대응, 개발환경의 무결성 유지 등 다양한 영역에서 핵심적인 요소입니다.

2. 주요 컬럼 설명

컬럼명 설명
TABLE_NAME 권한을 부여한 오브젝트 이름
GRANTEE 권한을 부여받은 사용자
PRIVILEGE 부여된 권한 종류 (SELECT, INSERT 등)
GRANTABLE 수혜자가 다른 사용자에게 해당 권한을 부여할 수 있는지 여부
TYPE 오브젝트의 유형 (TABLE, VIEW 등)

3. 실무 활용 예제

3.1. 내가 다른 사용자에게 부여한 모든 권한 확인


SELECT 
  GRANTEE, 
  TABLE_NAME, 
  PRIVILEGE, 
  GRANTABLE 
FROM 
  USER_TAB_PRIVS_MADE;
    

3.2. SELECT 권한만 필터링


SELECT 
  GRANTEE, 
  TABLE_NAME 
FROM 
  USER_TAB_PRIVS_MADE 
WHERE 
  PRIVILEGE = 'SELECT';
    

3.3. 특정 사용자에게 부여한 권한 조회


SELECT 
  TABLE_NAME, 
  PRIVILEGE 
FROM 
  USER_TAB_PRIVS_MADE 
WHERE 
  GRANTEE = 'HR';
    

4. USER_TAB_PRIVS_MADE vs 관련 권한 뷰 비교

뷰 이름 설명 권한 주체 조회 대상
USER_TAB_PRIVS 내가 받은 권한 확인 수혜자 내가 부여받은 객체 권한
USER_TAB_PRIVS_MADE 내가 부여한 권한 확인 부여자 다른 사용자에게 부여한 객체 권한
ALL_TAB_PRIVS_MADE 모든 사용자가 부여한 권한 (내가 접근 가능한 경우) 부여자 내가 소유하거나 부여 가능한 객체 권한
DBA_TAB_PRIVS 전체 권한 맵 확인 (DBA 전용) 전체 사용자 모든 객체 권한

5. USER_TAB_PRIVS_MADE 활용 전략

  • 보안 감사: 불필요하게 부여된 권한을 식별하고 회수 가능
  • 운영 안전성: 테스트 환경에서 잘못된 권한 확산 여부 조기 파악
  • 정책화: ‘권한 부여 원칙’ 수립 시 사용자별 권한 내역을 자동 리포팅
  • 개발 협업: 협업 중인 사용자에게만 필요한 권한 부여 여부 확인

6. 권한 관리 시 주의사항

  • 권한 남용 방지: GRANTABLE 옵션을 통해 재배포 여부를 신중히 결정
  • 역할 기반 권한과 혼동 금지: 롤(Role)을 통한 권한 부여는 이 뷰에 포함되지 않음
  • 철저한 기록 관리: 권한 부여/회수 이력을 주기적으로 백업

7. 결론

USER_TAB_PRIVS_MADE는 단순히 누군가에게 권한을 주었는지를 넘어서, 권한 정책이 실질적으로 어떻게 운영되고 있는지를 분석할 수 있는 강력한 도구입니다. 보안과 운영의 균형을 맞추기 위해 이 뷰를 주기적으로 확인하고, 필요 시 자동화된 권한 점검 절차를 마련하는 것이 바람직합니다.

8. 출처

728x90