5.7.3 테스트 데이터의 익명화 처리와 보안 컴플라이언스 준수
고품질의 테스트 픽스처(Fixtures)를 확보하기 위한 가장 확실한 방법은 프로덕션 망의 실제 사용자 로그를 가져오는 것이다. 하지만 이 과정에는 치명적인 함정이 도사리고 있다. 운영망의 로그에는 사용자의 이름, 전화번호, 주민등록번호, 계좌 정보 등 민감한 개인정보(PII, Personally Identifiable Information)가 적나라하게 포함되어 있기 때문이다.
이러한 PII가 포함된 원시 데이터를 클라우드 기반의 LLM API로 무심코 쏘아 보내거나, 사내 Git 저장소의 테스트 코드 디렉터리에 평문으로 커밋(Commit)하는 행위는 GDPR, HIPAA, 그리고 각국의 개인정보보호법을 정면으로 위반하는 중대한 보안 사고다. 따라서 AI 유닛 테스트 파이프라인에서 데이터 **익명화(Anonymization) 및 가명화(Pseudonymization)**는 선택이 아닌 필수적인 컴플라이언스 요건이다.
1. 정규식과 NER(개체명 인식)을 활용한 자동 마스킹 파이프라인
프로덕션 로그를 골든 샘플(Golden Sample)로 승격시키기 위해서는, 데이터를 로컬 테스트 스위트에 반입하기 전에 철저한 ‘소독(Sanitization)’ 과정을 거쳐야 한다.
- 정규식(Regex) 기반의 1차 필터링: 이메일 주소, 전화번호, 16자리 신용카드 번호 등 패턴이 명확한 데이터는 정규 표현식을 사용하여
<EMAIL>,<PHONE_NUMBER>,<CREDIT_CARD>등의 플레이스홀더(Placeholder)로 일괄 치환한다. - 경량 NER 모델을 통한 2차 필터링: 이름, 상세 주소, 상호명 등 정규식으로 잡히지 않는 비정형 텍스트는
spaCy나Hugging Face의 경량 오프라인 NER(Named Entity Recognition) 모델을 구동하여 찾아낸 뒤,[PERSON_1],[LOCATION_A]등으로 마스킹한다.
[원본 로그]
"안녕하세요, 어제 강남구 역삼동에서 김철수 이름으로 결제한 국민카드 1234-5678-9012-3456 내역 환불 부탁드립니다."
[익명화 처리된 골든 샘플 픽스처]
"안녕하세요, 어제 [LOCATION_1]에서 [PERSON_1] 이름으로 결제한 [CARD_COMPANY] <CREDIT_CARD> 내역 환불 부탁드립니다."
2. 가명화(Pseudonymization)와 결정론적 오라클의 상호작용
익명화에서 한 걸음 더 나아가, 플레이스홀더를 가상의 데이터로 다시 치환하는 가명화를 적용하면 LLM이 현실적인 문맥을 잃지 않고 추론하도록 도울 수 있다. 특정 이름(“김철수”)에 대한 편향을 방지하면서도 자연스러운 문장 구조를 유지하기 위해 “[PERSON_1]” 대신 “홍길동“과 같은 가짜 데이터 딕셔너리(Faker Library)를 활용해 매핑한다.
이때 결정론적 오라클은 검증의 대상을 ’실제 이름’이 아닌 **‘가명화된 엔티티의 올바른 처리 여부’**로 이동시켜야 한다.
# 익명화/가명화된 픽스처 주입
test_input = "내 이름은 [PERSON_1]이고, 전화번호는 [PHONE_1]입니다. 내 정보 삭제해주세요."
# 오라클 단언(Assert): 민감 정보 자체가 아니라, 마스킹된 태그의 삭제 로직이 정상 작동하는가?
def test_privacy_deletion_intent(test_input):
expected_intent = "DELETE_ACCOUNT"
expected_entities = {"name": "[PERSON_1]", "phone": "[PHONE_1]"}
response = call_llm(test_input)
assert response["intent"] == expected_intent
assert response["extracted_entities"] == expected_entities, "가명화된 엔티티를 정확히 유지·추출해야 합니다."
3. 재현 불가능성(Irreversibility) 보장과 망 분리
마스킹된 데이터가 테스트 저장소로 넘어오고 나면, 그 어떤 방법으로도 원본 데이터를 역추산(Reverse Engineering)할 수 없어야 한다(단방향 해시 등 적용).
더불어 클라우드 환경에서 테스트 수행 시 데이터 유출을 원천 차단하기 위해, 프론트엔드/백엔드의 민감 정보 처리 로직을 완전히 걷어낸 상태로 LLM 방화벽(Firewall) 내부에서만 폐쇄적으로 모의 테스트(Mock Test)를 수행하는 망 분리 전략을 고려해야 한다.
테스트의 품질은 데이터의 사실성에서 오지만, 시스템의 신뢰는 철저한 보안 통제에서 완성된다. 오라클 시스템 설계자는 개발 편의성을 핑계로 고객의 데이터를 실험용 쥐(Guinea pig)로 취급하는 만용을 부려서는 안 된다.