본문 바로가기
Database

[Oracle] 오라클 ALL_COL_PRIVS_MADE 뷰 완전 분석 : 직접 부여한 컬럼 권한 추적 가이드

by 코드개미 2025. 6. 20.

직접 부여한 컬럼 권한 추적 가이드
[Oracle] ALL_COL_PRIVS_MADE

오라클 데이터베이스에서 보안을 효과적으로 관리하려면 권한의 부여 내역을 명확히 파악해야 합니다. ALL_COL_PRIVS_MADE 뷰는 사용자가 직접 다른 사용자에게 부여한 컬럼 단위 권한 정보를 제공하는 시스템 뷰로, 보안 감사 및 권한 정리 작업에 매우 중요합니다.

1. ALL_COL_PRIVS_MADE란 무엇인가?

ALL_COL_PRIVS_MADE는 현재 사용자(또는 연결된 스키마)가 다른 사용자에게 부여한 컬럼 권한을 추적할 수 있게 해주는 Oracle의 데이터 딕셔너리 뷰입니다. 이 뷰는 단순한 권한 목록이 아니라, ‘누가’, ‘무엇을’, ‘누구에게’ 부여했는지를 명확히 보여줍니다.

2. 뷰의 주요 컬럼 설명

컬럼명 설명
GRANTEE 권한을 부여받은 사용자 또는 역할
OWNER 권한을 부여한 객체의 소유자
TABLE_NAME 대상 테이블의 이름
COLUMN_NAME 권한이 적용된 컬럼 이름
PRIVILEGE 부여된 권한 유형 (예: SELECT, UPDATE)
GRANTABLE 권한의 재부여 가능 여부 (YES/NO)

3. 실무 활용 예제

다음은 현재 사용자가 부여한 컬럼 권한 내역을 조회하는 SQL 예시입니다.

SELECT * FROM ALL_COL_PRIVS_MADE WHERE GRANTEE = 'USER_B';

이 쿼리는 USER_B에게 부여된 컬럼 권한 중, 현재 사용자가 직접 부여한 권한만 보여줍니다. 실무에서 감사 로깅이나 권한 회수 시 필수적입니다.

4. ALL_COL_PRIVS_MADE와 유사 뷰 비교

비슷한 권한 관련 뷰들과의 차이를 비교해보면 다음과 같습니다.

뷰 이름 설명 권한 범위
ALL_COL_PRIVS 접근 가능한 컬럼 권한 전체 자신과 타인에게 부여된 전체 권한
ALL_COL_PRIVS_MADE 사용자가 직접 부여한 권한 내가 타인에게 준 컬럼 권한
ALL_COL_PRIVS_RECD 사용자가 직접 받은 권한 타인이 나에게 준 컬럼 권한

5. 실무 시나리오에서의 사용

  • 감사 대응: 보안 감사 요청 시, 권한을 어떤 사용자에게 부여했는지를 명확히 제시 가능
  • 권한 정리: 불필요하게 부여된 권한 회수 작업 시 용이
  • 권한 상속 추적: GRANTABLE이 YES인 경우, 그 권한이 또 다른 사용자에게 전달될 가능성을 예측 가능

6. 권한 회수 예제

ALL_COL_PRIVS_MADE의 정보를 바탕으로 다음과 같이 권한을 회수할 수 있습니다.

REVOKE SELECT (SSN) ON EMPLOYEE FROM USER_B;

이는 USER_B에게 부여한 SSN 컬럼의 SELECT 권한을 회수하는 구문입니다.

7. 권장 보안 정책 수립 팁

  • 정기 점검 자동화: 정기적으로 ALL_COL_PRIVS_MADE 결과를 로그로 저장해 비교 분석
  • 재부여 여부 제한: GRANTABLE 옵션을 NO로 설정하여 권한 전파 차단
  • 분산 관리 방지: 특정 관리자가 아닌 일반 사용자에게 권한을 부여하지 않도록 제한

8. 결론

ALL_COL_PRIVS_MADE 뷰는 단순히 정보를 보여주는 것 이상의 역할을 합니다. DB 운영자의 입장에서 권한의 흐름을 파악하고, 보안 정책을 강화하는 데 있어 핵심 도구로 작용합니다. 특히, GDPR 및 국내 개인정보보호법과 같은 규제가 강화된 시대에서는 사용자가 타인에게 직접 부여한 권한의 기록을 명확히 파악할 수 있는 시스템 뷰는 필수적이라 할 수 있습니다.

9. 참고 자료

  • Oracle Database 21c Data Dictionary Views – Oracle 공식 문서
  • Oracle SQL Language Reference
  • DB 실무 운영 정책 사례 (2021~2024)