본문 바로가기
Database/Oracle

[ORACLE] DBA_COL_PRIVS 완벽 해설 : 컬럼 단위 권한 관리와 데이터 보안의 핵심

by Papa Martino V 2025. 10. 13.
728x90

DBA_COL_PRIVS
[ORACLE] DBA_COL_PRIVS

 

Oracle Database의 보안 체계는 단순히 테이블 단위의 접근 제어를 넘어, 세밀한 **컬럼 단위(Column-Level)** 권한 관리까지 지원합니다. 이때 DBA가 이러한 권한 부여 내역을 확인하고 관리할 수 있도록 제공되는 핵심 뷰가 바로 DBA_COL_PRIVS입니다. 이 뷰는 데이터베이스 내에서 어떤 사용자에게 어떤 컬럼에 대한 SELECT, INSERT, UPDATE, REFERENCES 권한이 부여되었는지를 명확하게 보여줍니다. 본 글에서는 DBA_COL_PRIVS의 구조, 주요 컬럼 설명, 권한 관리 절차, 보안 모니터링 활용법, 그리고 실무에서의 보안 거버넌스 관점의 적용 전략까지 전문가 시각에서 심층적으로 분석합니다.


1. DBA_COL_PRIVS란?

DBA_COL_PRIVS는 Oracle 데이터베이스에서 **컬럼 단위 권한(Column-Level Privilege)** 부여 내역을 관리하는 데이터 딕셔너리 뷰입니다. 이 뷰는 특정 사용자 또는 롤(Role)에게 부여된 컬럼 수준의 GRANT 정보를 보여주며, SELECT, INSERT, UPDATE, REFERENCES 등의 권한을 세부적으로 분석할 수 있습니다. Oracle은 세 가지 레벨의 권한 관리 뷰를 제공합니다:

  • USER_COL_PRIVS: 현재 사용자 기준의 컬럼 권한 정보
  • ALL_COL_PRIVS: 사용자가 접근할 수 있는 객체의 컬럼 권한 정보
  • DBA_COL_PRIVS: 데이터베이스 전체의 컬럼 권한 정보 (DBA 전용)

이 중 DBA_COL_PRIVS는 보안 관리자나 DBA가 전체 시스템 권한 구조를 파악하고 이상 접근을 감사(Audit)할 때 필수적으로 사용하는 뷰입니다.


2. DBA_COL_PRIVS 주요 컬럼 구조

컬럼명 데이터 타입 설명
GRANTEE VARCHAR2(30) 권한을 부여받은 사용자 또는 롤 이름
OWNER VARCHAR2(30) 해당 컬럼이 속한 테이블의 소유자
TABLE_NAME VARCHAR2(30) 권한이 부여된 테이블 이름
COLUMN_NAME VARCHAR2(4000) 권한이 부여된 컬럼 이름
GRANTOR VARCHAR2(30) 권한을 부여한 사용자
PRIVILEGE VARCHAR2(40) 부여된 권한 유형 (SELECT, UPDATE, INSERT, REFERENCES 등)
GRANTABLE VARCHAR2(3) 해당 권한이 다른 사용자에게 다시 부여 가능한지 여부 (YES/NO)
COMMON VARCHAR2(3) 멀티-컨테이너(CDB) 환경에서 공통 권한 여부

특히 GRANTEEGRANTABLE은 보안상 가장 중요한 컬럼으로, 권한의 “확산 가능성”을 진단하는 핵심 지표로 활용됩니다.


3. DBA_COL_PRIVS 조회 예제

① 특정 사용자에게 부여된 컬럼 권한 조회

SELECT GRANTEE, OWNER, TABLE_NAME, COLUMN_NAME, PRIVILEGE
FROM DBA_COL_PRIVS
WHERE GRANTEE = 'HR';

② 컬럼 권한이 부여된 전체 테이블 목록 확인

SELECT DISTINCT OWNER, TABLE_NAME
FROM DBA_COL_PRIVS
ORDER BY OWNER, TABLE_NAME;

③ GRANTABLE(재부여 가능) 권한 확인

SELECT GRANTEE, TABLE_NAME, COLUMN_NAME, PRIVILEGE
FROM DBA_COL_PRIVS
WHERE GRANTABLE = 'YES';

이러한 쿼리는 데이터베이스 내 불필요한 권한 확산을 방지하고, 내부 보안 점검 시 권한 위임 여부를 감사하는 데 활용됩니다.


4. 컬럼 단위 권한 부여 및 제거 예시

컬럼 단위 권한은 일반 테이블 권한과 달리 ON TABLE.COLUMN 형식으로 지정됩니다. 다음은 대표적인 GRANT 및 REVOKE 구문 예시입니다.

① 특정 컬럼 SELECT 권한 부여

GRANT SELECT (salary, commission_pct)
ON employees
TO hr_analyst;

② 컬럼 UPDATE 권한 부여

GRANT UPDATE (bonus)
ON employees
TO payroll_admin;

③ 컬럼 권한 회수

REVOKE SELECT (salary, commission_pct)
ON employees
FROM hr_analyst;

이러한 명령어 실행 후 DBA_COL_PRIVS를 조회하면, 해당 사용자에게 부여된 컬럼 권한이 실시간으로 반영되어 나타납니다.


5. DBA_COL_PRIVS와 DBA_TAB_PRIVS의 차이점

구분 DBA_TAB_PRIVS DBA_COL_PRIVS
권한 단위 테이블 전체 단위 특정 컬럼 단위
적용 범위 테이블 또는 뷰 전체 선택된 컬럼에 한정
활용 목적 객체 단위 접근 관리 데이터 세부 접근 제어
대표 권한 SELECT, INSERT, DELETE, UPDATE SELECT, UPDATE, REFERENCES
보안 수준 중간(테이블 수준) 고급(컬럼 수준 세분화)

컬럼 단위 권한은 데이터 접근을 정밀하게 제어할 수 있지만, 관리 복잡성이 높아지므로 DBA_COL_PRIVS를 통한 주기적 모니터링이 필수적입니다.


6. DBA_COL_PRIVS 활용 사례

① 데이터 보안 강화

기밀 정보(예: SALARY, SSN, CREDIT_CARD 등)가 포함된 컬럼에 대해 SELECT 권한을 제한함으로써, 비인가 사용자의 접근을 원천 차단할 수 있습니다.

② 감사(Audit) 및 규제 준수

금융 및 공공 기관에서는 개인정보보호법, ISMS-P, GDPR 등 규제를 준수해야 합니다. DBA_COL_PRIVS를 기반으로 권한 사용 현황을 정기 점검하면 이러한 규제 대응이 가능합니다.

③ 최소 권한 원칙(Least Privilege) 적용

업무별로 필요한 컬럼만 접근 가능하도록 설정함으로써, 불필요한 데이터 노출을 방지할 수 있습니다.


7. 컬럼 단위 권한 설계 시 주의사항

  • 과도한 권한 분리: 컬럼 단위로 지나치게 세분화하면 관리 부담 증가
  • 권한 상속 구조: GRANTABLE=YES 설정 시 하위 사용자에게 권한 확산 위험
  • 보안 정책과 연계: 데이터베이스 보안 정책과 컬럼 권한 설정을 일관성 있게 유지
  • VIEW 활용: 직접 컬럼 권한 관리 대신 VIEW를 통해 보안 계층 분리 가능
  • 정기 점검: DBA_COL_PRIVS + DBA_TAB_PRIVS 조합으로 권한 이력 비교

8. 컬럼 권한 관리 자동화 예시

아래 스크립트는 DBA_COL_PRIVS를 기반으로 특정 스키마의 민감 데이터 컬럼 접근 권한을 감사하는 자동화 예시입니다.

SELECT GRANTEE, OWNER, TABLE_NAME, COLUMN_NAME, PRIVILEGE, GRANTABLE
FROM DBA_COL_PRIVS
WHERE OWNER = 'HR'
  AND COLUMN_NAME IN ('SALARY', 'SSN', 'ACCOUNT_NO')
ORDER BY GRANTEE, TABLE_NAME;

이 결과는 보안 리포트로 활용되어, HR 관련 민감 정보에 대한 접근자 현황을 빠르게 파악할 수 있습니다.


9. 보안 거버넌스 및 컴플라이언스 전략

기업 내 데이터보안팀은 DBA_COL_PRIVS 데이터를 기반으로 다음과 같은 거버넌스 프로세스를 수립할 수 있습니다.

단계 설명 활용 도구
1단계 권한 현황 수집 DBA_COL_PRIVS + DBA_TAB_PRIVS
2단계 권한 과다 사용자 식별 GRANTABLE = 'YES' 조건 활용
3단계 보안 정책 기준 재정립 보안 등급별 권한 분류표
4단계 정기 리포팅 및 승인 절차 자동화 스케줄링된 SQL 리포트 or BI 연동

10. 결론

DBA_COL_PRIVS는 Oracle 데이터베이스의 보안 거버넌스에서 “컬럼 단위 데이터 접근 제어”의 중심축을 담당하는 뷰입니다. 이 뷰를 활용하면 민감 컬럼에 대한 접근 내역을 정밀하게 추적하고, 규제 대응 및 내부 보안 정책 준수를 위한 강력한 관리 체계를 구축할 수 있습니다. DBA는 이 정보를 기반으로 ‘데이터 최소 접근 원칙(Least Privilege)’을 구현하고, 데이터베이스를 보다 안전하고 투명하게 운영할 수 있습니다.


출처

  • Oracle® Database Reference 19c - DBA_COL_PRIVS View
  • Oracle® Security Guide - Access Control Concepts
728x90