728x90

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
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBMS_ALERT_INFO 완전 분석 : 실시간 알림 시스템과 통지 아키텍처 (0) | 2025.07.31 |
|---|---|
| [ORACLE] DATABASE_COMPATIBLE_LEVEL 완전 가이드 : 호환성 레벨 이해와 실무 적용 전략 (0) | 2025.07.30 |
| [ORACLE] AUDIT_ACTIONS 뷰 완벽 분석 : 감사 코드 해석과 실무 적용 전략 (0) | 2025.07.30 |
| [ORACLE] DICT_COLUMNS 뷰 완전 해부 : 데이터 딕셔너리의 구조를 꿰뚫는 메타데이터 탐색법 (0) | 2025.07.30 |
| [ORACLE] DICTIONARY 뷰 완전 분석 : Oracle 메타데이터를 한눈에 파악하는 전략 (0) | 2025.07.30 |