Aurora PostgreSQL pg_columnmask 데이터 이동 시나리오
pg_columnmask 동작은 스토리지, 논리적 또는 애플리케이션 계층에서 작업이 수행되는지 여부에 따라 데이터 이동 작업마다 다릅니다. 스토리지 수준 작업(예: 복제)은 논리적 작업(예: pg_dump) 및 애플리케이션 수준 작업(예: FDW 쿼리)과 다르게 작동합니다. 이 섹션에서는 복제, 백업, 내보내기 및 마이그레이션을 비롯한 일반적인 시나리오에 대한 마스킹 동작과 각 시나리오의 보안 영향에 대해 설명합니다.
주제
Aurora Global Database 및 읽기 전용 복제본
Aurora pg_columnmask 정책은 클러스터 볼륨 내의 데이터베이스 시스템 테이블에 저장됩니다. 모든 복제본은 동일한 정책에 액세스하고 일관되게 마스킹된 결과를 반환합니다. Aurora Global Database 배포의 경우 pg_columnmask 정책은 다른 데이터베이스 시스템 테이블과 함께 보조 AWS 리전에 복제되어 리전 간에 일관된 데이터 보호를 보장합니다. 장애 조치 시나리오 중에는 모든 pg_columnmask 정책이 그대로 유지되고 작동합니다.
데이터베이스 복제 및 스냅샷 복원
Aurora Fast Clone 및 스냅샷 복원 작업은 데이터베이스 시스템 테이블의 일부로 모든 pg_columnmask 정책, 역할 및 구성을 보존합니다. 복제되거나 복원된 데이터베이스는 소스 클러스터에서 모든 기존 정책을 상속합니다. 복제 또는 복원 후 각 데이터베이스 클러스터는 독립적인 pg_columnmask 정책을 유지합니다.
논리적 복제
초기 동기화 중에 논리적 복제는 표준 SQL COPY 작업을 사용하며 pg_columnmask 정책은 복제 사용자의 권한에 따라 적용됩니다. 진행 중인 CDC(변경 데이터 캡처) 중에는 마스킹 정책이 적용되지 않고 마스킹되지 않은 데이터가 WAL 레코드를 통해 복제됩니다. pg_create_subscription 권한이 있는 사용자는 제어하는 시스템에 대한 복제를 설정하여 잠재적으로 마스킹되지 않은 데이터를 유출할 수 있습니다.
블루/그린 배포
스냅샷 복원 중에 pg_columnmask 정책이 자동으로 포함됩니다. 그린 환경은 블루 환경에서 모든 정책의 동일한 사본으로 시작합니다. 블루에서 그린으로 복제하는 동안에는 데이터가 마스킹되지 않습니다. 블루 클러스터의 후속 마스킹 정책 변경(DDL 명령)은 그린 클러스터에 복제되지 않으며 RDS 블루/그린 배포를 무효화합니다.
제로 ETL 및 CDC 스트림
데이터 복제는 pg_columnmask 정책의 영향을 받지 않습니다. 제로 ETL은 DDL 복제를 지원하지만 pg_columnmask 또는 RLS 정책은 복제하지 않습니다. 제로 ETL에서 복제된 데이터에는 마스킹 정책이 적용되지 않습니다.
AWS Database Migration Service
초기 데이터 동기화는 DMS 작업에 대해 선택한 사용자를 기반으로 마스킹되거나 마스킹 해제됩니다. CDC 데이터는 항상 마스킹이 해제됩니다. pg_columnmask 관련 내부 RLS 정책은 마이그레이션할 수 있지만 pg_columnmask가 활성화되지 않은 대상에서는 작동하지 않습니다.
데이터 내보내기
pg_columnmask는 내보내기를 다른 쿼리 작업처럼 처리합니다. 마스킹은 실행 중인 사용자의 권한에 따라 적용됩니다. 이는 COPY, SELECT INTO, CREATE TABLE AS, Aurora PostgreSQL의 S3 내보내기 기능과 같은 SQL 명령에 적용됩니다.
참고
마스킹된 사용자가 데이터를 내보낼 때 결과 파일에는 복원 시 데이터베이스 제약 조건을 위반할 수 있는 마스킹된 값이 포함됩니다.
뷰 및 구체화된 뷰
보기를 사용할 때 다음 고려 사항을 염두에 둡니다.
일반 보기 - 항상
INVOKER의미 체계를 사용합니다. 뷰를 생성한 사용자에 관계없이 뷰를 쿼리할 때 현재 사용자의 마스킹 정책이 적용됩니다.구체화된 뷰 - 새로 고치면 새로 고침을 수행하는 사용자의 정책이 아니라 구체화된 뷰 소유자의 마스킹 정책이 적용됩니다. 소유자에게 마스킹 정책이 있는 경우 구체화된 뷰에는 항상 마스킹된 데이터가 포함됩니다.
데이터 덤프 및 복원
pg_dump는 일반 데이터베이스 사용자로 작동하며 연결 사용자의 권한에 따라 마스킹 정책을 적용합니다. 마스킹된 사용자가 덤프를 수행하는 경우 백업 파일에 마스킹된 데이터가 포함됩니다. pg_columnmask 정책은 데이터베이스 스키마의 일부로 덤프에 포함됩니다. 복원에 성공하려면 참조된 모든 역할이 대상 데이터베이스에 존재하고 대상에 pg_columnmask 확장이 설치되어 있어야 합니다.
참고
PostgreSQL 18부터 pg_dump는 데이터베이스 덤프에서 행 수준 보안(RLS) 및 pg_columnmask 마스킹 정책을 모두 제외하는 —no-policies 옵션을 지원합니다. 자세한 내용은 pd_dump
외부 데이터 래퍼
외부 데이터 래퍼를 사용하는 경우 원격 테이블의 마스킹 정책은 로컬 쿼리 사용자의 권한이 아닌 소스 서버에 대한 매핑된 사용자의 권한을 기반으로 적용되며, FDW를 통해 마스킹된 원격 데이터에 액세스할 수 있지만 로컬 데이터베이스의 외부 테이블에 직접 DDM 또는 RLS 정책을 생성할 수 없습니다.