본문 바로가기
Database/Oracle

[ORACLE] ALL_POLICIES 뷰로 VPD 및 보안 정책 확인하는 방법

by Papa Martino V 2025. 6. 27.
728x90

오라클 ALL_POLICIES 뷰로 VPD 및 보안 정책 확인하는 방법
[Oracle] ALL_POLICIES

 

기업의 데이터 보안은 단순한 옵션이 아닌 필수 요건이 되었습니다. 오라클 데이터베이스는 VPD (Virtual Private Database)와 같은 고급 보안 기능을 제공하여 테이블 레벨에서 사용자의 데이터 접근을 세밀하게 제어할 수 있게 합니다. 이러한 보안 정책의 구성과 적용 현황을 확인하는 데 핵심적인 역할을 하는 뷰가 ALL_POLICIES입니다.

1. ALL_POLICIES란?

ALL_POLICIES는 현재 사용자가 접근 가능한 객체에 적용된 VPD 정책 정보를 조회할 수 있는 데이터 딕셔너리 뷰입니다. 이 뷰를 통해 테이블이나 뷰에 어떤 정책이 설정되어 있는지, 어떤 함수가 적용되는지, 정책이 어떤 이벤트에 적용되는지 등을 확인할 수 있습니다.

1-1. 주요 컬럼 설명

  • OBJECT_OWNER: 정책이 적용된 오브젝트의 소유자
  • OBJECT_NAME: 정책이 적용된 테이블 또는 뷰 이름
  • POLICY_NAME: 보안 정책 이름
  • FUNCTION: 정책에 의해 호출되는 보안 함수 이름
  • ENABLED: 정책이 활성화 여부 (YES/NO)
  • SEL, INS, UPD, DEL: 각 DML 문에 정책이 적용되는지 여부

2. 실무 예제: 정책 조회

다음은 특정 사용자 소유 객체에 설정된 모든 VPD 정책을 조회하는 SQL 예시입니다.

SELECT object_name, policy_name, function, enabled, sel, ins, upd, del
FROM all_policies
WHERE object_owner = 'HR';

이 쿼리는 HR 스키마에 존재하는 테이블들 중, 보안 정책이 설정된 항목들을 필터링해 보여줍니다. SELECT, INSERT, UPDATE, DELETE 각각의 동작에 대해 정책이 적용되는지 여부를 확인할 수 있습니다.

3. VPD(Virtual Private Database)의 개요

오라클의 VPD는 특정 조건에 따라 사용자의 쿼리에 자동으로 WHERE 절을 삽입하는 기능입니다. 예를 들어, 영업 부서 직원은 자신이 담당하는 고객 데이터만 조회할 수 있도록 제어할 수 있습니다. VPD 정책은 보안 정책 함수로 정의되며, DBMS_RLS 패키지를 통해 적용됩니다.

3-1. 정책 예시

BEGIN
  DBMS_RLS.ADD_POLICY (
    object_schema   => 'HR',
    object_name     => 'EMPLOYEES',
    policy_name     => 'emp_policy',
    function_schema => 'SECURITY',
    policy_function => 'emp_filter_fn',
    statement_types => 'SELECT'
  );
END;

위 예시는 HR.EMPLOYEES 테이블에 대해 SELECT 문에 정책을 적용하는 것으로, 정책 함수 emp_filter_fn이 사용됩니다.

4. 관련 뷰 비교

뷰 이름 설명 주요 컬럼 사용 목적
ALL_POLICIES 접근 가능한 객체에 설정된 VPD 정책 조회 OBJECT_NAME, POLICY_NAME, FUNCTION 보안 정책 확인
DBA_POLICIES 데이터베이스 전체 정책 정보 OBJECT_NAME, POLICY_NAME, POLICY_TYPE 전체 정책 모니터링
DBA_POLICY_CONTEXTS 정책에 사용되는 컨텍스트 정보 OBJECT_NAME, ATTRIBUTE 정책 변수 환경 확인

5. 정책 관리 팁

  • 정책 함수 명확화: 정책에 사용되는 함수는 반드시 테이블과 사용자 상황에 맞게 WHERE 절을 생성해야 하며, 예외 처리 로직을 포함해야 함
  • 정책 충돌 주의: 동일 오브젝트에 다수의 정책이 존재할 경우, 충돌 여부 확인 필수
  • 적용 대상 명확화: 모든 DML에 정책을 적용할지, 특정 유형(SELECT 등)에만 적용할지 설계 단계에서 명확히 설정
  • 로깅 및 테스트 필수: 정책 변경 시 시스템 전체 동작에 영향을 줄 수 있으므로 충분한 테스트와 로깅 시스템 필요

6. ALL_POLICIES 활용 시 주의사항

이 뷰는 객체 수준의 정책만 보여주므로, 세션 레벨이나 애플리케이션 컨텍스트를 이용한 세밀한 제어가 병행되는 경우 DBA_POLICY_CONTEXTSDBA_CONTEXT도 함께 활용해야 합니다. 또한, 시스템 권한 없이 DBA_POLICIES 뷰에 접근할 수 없는 사용자라면 ALL_POLICIES를 기반으로 자신이 접근 가능한 정보만 확인할 수 있습니다.

7. 결론

보안 정책의 효과적인 관리는 기업 데이터의 기밀성과 무결성을 보장하는 핵심 요소입니다. ALL_POLICIES 뷰는 VPD 정책을 시각적으로 확인하고 모니터링할 수 있는 실용적인 도구이며, 특히 개발 및 운영 환경에서 권한 문제나 데이터 접근 제어 이슈를 해결하는 데 중요한 역할을 합니다. 다른 보안 관련 뷰와 함께 적절히 활용하면 오라클 보안 아키텍처의 완성도를 크게 높일 수 있습니다.

8. 참고 문헌 및 출처

728x90