본문 바로가기
Database/Oracle

[ORACLE] COLUMN_PRIVILEGES 완전 분석 : 컬럼 단위 권한 파악과 보안 통제 전략

by Papa Martino V 2025. 7. 30.
728x90

COLUMN_PRIVILEGES 완전 분석 : 컬럼 단위 권한 파악과 보안 통제 전략
[ORACLE] COLUMN_PRIVILEGES

1. COLUMN_PRIVILEGES 뷰란 무엇인가?

COLUMN_PRIVILEGES는 Oracle 데이터베이스에서 사용자에게 부여된 컬럼 수준 권한을 조회할 수 있는 중요한 정보 뷰입니다. 이 뷰는 ALL_COL_PRIVS의 시노님(synonym)이며, DBA나 개발자가 특정 사용자에게 어떤 테이블의 어떤 컬럼에 SELECT, UPDATE 등의 권한이 있는지 확인할 수 있도록 도와줍니다. 일반적인 테이블 권한과 달리, 컬럼 권한은 훨씬 더 세밀한 접근 제어를 가능하게 하며, 데이터 보안의 핵심 축 중 하나입니다.

2. COLUMN_PRIVILEGES의 구조

해당 뷰는 다음과 같은 필수 컬럼으로 구성되어 있습니다:

컬럼명 설명
GRANTEE 권한을 부여받은 사용자 또는 롤
OWNER 테이블 소유자
TABLE_NAME 대상 테이블 이름
COLUMN_NAME 권한이 부여된 컬럼 이름
PRIVILEGE 부여된 권한 (SELECT, INSERT, UPDATE 등)
GRANTABLE GRANT 권한 재위임 가능 여부 ('YES' 또는 'NO')

3. COLUMN_PRIVILEGES 뷰 사용 예시

다음은 실무에서 자주 사용하는 쿼리입니다:

-- 특정 사용자에게 부여된 모든 컬럼 권한 조회
SELECT *
FROM column_privileges
WHERE grantee = 'SCOTT';

-- 특정 테이블의 컬럼별 권한 부여 현황 확인
SELECT column_name, privilege, grantee
FROM column_privileges
WHERE table_name = 'EMPLOYEES';

이처럼 COLUMN_PRIVILEGES는 컬럼 단위 접근 권한을 빠르게 확인할 수 있는 강력한 보안 도구입니다.

4. 테이블 권한과 컬럼 권한의 차이

구분 테이블 권한 컬럼 권한
적용 범위 테이블 전체 특정 컬럼
정밀 제어 불가능 가능 (예: 이름만 SELECT 허용)
보안 수준 중간 높음
대표 뷰 USER_TAB_PRIVS COLUMN_PRIVILEGES

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

  • 민감 정보 분리: 주민번호, 급여 컬럼에 대한 SELECT 권한 제한
  • 모듈별 접근 제어: 회계팀은 ‘금액’ 컬럼만, 인사팀은 ‘이름’ 컬럼만 조회 가능
  • 감사 대응: 특정 사용자에게 민감 컬럼 접근 권한이 없는지 검토
  • 권한 변경 이력 추적: 부여된 권한을 기반으로 불필요한 접근 제거

6. COLUMN_PRIVILEGES로 권한 관리 자동화하기

정기 점검 또는 감사 대응을 위해 다음과 같은 스크립트 활용이 가능합니다:

-- GRANTABLE이 YES인 사용자 추출
SELECT grantee, table_name, column_name
FROM column_privileges
WHERE grantable = 'YES';

-- 권한을 INSERT할 수 있는 대상 확인
SELECT grantee, column_name
FROM column_privileges
WHERE privilege = 'INSERT';

7. 보안 가이드라인에 따른 권한 설정 팁

  • 최소 권한 원칙(Least Privilege): 꼭 필요한 컬럼에만 권한 부여
  • 권한 상속 방지: GRANTABLE = 'NO'로 제한
  • 주기적 점검: 컬럼 권한 이력과 사용자 역할 일치 여부 확인
  • VIEW 활용: 민감 컬럼 제외 뷰를 생성해 GRANT

8. COLUMN_PRIVILEGES 관련 보안 감사 전략

Oracle에서는 컬럼 권한 부여/해제를 DBA_AUDIT_OBJECT나 UNIFIED_AUDIT_TRAIL로 감사할 수 있으며, 다음 조건을 설정하면 더욱 효과적입니다:

  • AUDIT INSERT, UPDATE, DELETE ON SYS.COL$; → 컬럼 정의 변경 추적
  • AUDIT GRANT, REVOKE ON [OBJECT]; → 권한 조작 감지

9. COLUMN_PRIVILEGES 연계 뷰 비교

설명 주요 컬럼
COLUMN_PRIVILEGES 컬럼 단위 권한 정보 GRANTEE, COLUMN_NAME, PRIVILEGE
USER_COL_PRIVS 현재 사용자 기준 권한 GRANTOR, COLUMN_NAME
ALL_COL_PRIVS 사용자가 접근 가능한 모든 컬럼 권한 TABLE_NAME, PRIVILEGE
DBA_COL_PRIVS 모든 사용자 컬럼 권한 (DBA) OWNER, GRANTEE, PRIVILEGE

출처

  • Oracle Database Security Guide 21c – Oracle Corporation
  • Oracle Database Reference 21c – Oracle Docs
728x90