피드로 돌아가기
Recursive PII Masking in DataWeave: One Function for Any Depth (and the Null Trap)
Dev.toDev.to
Backend

재귀 함수 하나로 무제한 깊이의 PII 마스킹 구현 및 Null Crash 해결

Recursive PII Masking in DataWeave: One Function for Any Depth (and the Null Trap)

ThaSha2026년 4월 5일2intermediate

Context

API 응답 내 PII 데이터가 불규칙한 깊이의 계층 구조로 존재. 조직도 데이터 특성상 마스킹 대상 필드의 위치가 가변적임. 고정 경로 지정 방식으로는 모든 개인정보 노출 방지 불가.

Technical Solution

  • DataWeave의 match 구문을 활용한 타입 기반 디스패치 구조 설계
  • Object 타입 발견 시 내부 필드를 순회하며 ssn, email 키워드 매칭 및 마스킹 함수 적용
  • Array 타입 발견 시 각 요소에 대해 maskPII 함수를 재귀적으로 호출하는 구조
  • 기본 타입(Primitive)은 변형 없이 그대로 반환하는 패스스루 전략
  • Null 값 처리 로직을 Object 핸들러보다 상위에 배치하여 런타임 에러 방지
  • 빈 객체, 빈 배열, 혼합 타입 배열 등 엣지 케이스 검증 프로세스 도입

Impact

  • Null 값 처리 미비로 인한 API 응답 400건의 장애 발생

Key Takeaway

재귀 함수 설계 시 데이터 타입의 다양성을 고려한 명시적 Null 핸들링이 시스템 안정성 확보의 핵심임.


재귀적 데이터 처리 로직 구현 시, 가장 포괄적인 타입(Object) 처리 전 Null 및 기본 타입에 대한 가드 클로즈를 최우선으로 배치할 것

원문 읽기