BERT 기반 PII 필터 구축 및 개인정보 보호법 대응 제어 기반 마련 기술
요약
본 글은 BERT 기반의 PII(개인 식별 정보) 필터를 구축하고 개인정보 보호법에 대응하는 제어 기반을 마련하는 방법을 다룹니다. 특히 AI 에이전트 사용 증가로 인한 데이터 유출 리스크를 언급하며, 단순히 외부 모델의 탐지 카테고리에 의존하기보다 '정책(Policy)'을 통해 필요한 탐지 요건을 정의하고 관리할 필요성을 강조합니다.
핵심 포인트
- AI 에이전트는 권한 오용(confused deputy)으로 인한 데이터 유출 리스크가 증가함.
- 외부 AI 필터는 법규 준수 여부를 보장하지 않으므로, 자체적인 정책 기반 탐지 요건 정의가 필수적임.
- PIA(개인정보 보호 평가)를 통해 사내 정책과 법령을 결합하여 필요한 PII 카테고리를 도출할 수 있음.
- Presidio와 같은 프레임워크를 활용하여 여러 검출기를 통합하고 관리하는 것이 효과적임.
9/29에 개최된 OASEC 2026에서 'Policy-Driven PII Control for Your Company'라는 발표를 했습니다.
이는 회사에서 개인 정보를 안전하게 제어하기 위해, 세상에 존재하는 AI 기반 필터를 어떻게 활용할지 결정하는 내용입니다.
PII(Personally Identifiable Information) 탐지기를 도입하면 이름이나 주소를 감지하고 마스킹할 수 있습니다.
하지만 휴가 신청서에 기재된 병력까지도 탐지할 수 있을까요?
AI 에이전트 등장으로 개인정보 취급 리스크 증가
AI 에이전트는 특정 서비스의 데이터를 읽어 다른 서비스로 정보를 전달할 수 있습니다.
권한을 가진 주체가 다른 주체의 지시를 받아 본래 의도하지 않은 방식으로 권한을 사용하는 문제는 'confused deputy'라고 불립니다.
에이전트의 지시에만 의존하지 않고, 도구 실행이나 데이터 전달을 관리하는 메커니즘에 제어를 넣고 싶습니다.
여기서 경계를 넘는 데이터를 탐지하고 처리하는 필터를 준비하고 싶은데, 필터 구현 방식에 따라 아예 탐지가 불가능한 경우도 있습니다.
탐지 카테고리에 병력이 포함되어 있는가

OpenAI Privacy Filter를 예로 살펴보겠습니다.
공개 모델의 탐지 카테고리는 다음 8가지입니다.

반면, 일본의 개인정보 보호법에는 '요배려 개인정보(病歴や犯罪の経歴、信条)'라는 카테고리가 존재하며, 이는 상기 개인정보보다 더 엄중하게 취급해야 합니다.
OpenAI Privacy Filter를 그대로 채택하는 안으로는 정확도 이전에 문제가 발생하고 있었습니다.
실제로 Privacy Filter의 모델 카드에도 학습된 카테고리만 탐지한다는 점이나, 법규 준수를 보장하는 것은 아니라는 내용이 적혀 있습니다.
정책에서 탐지 요건을 만들기

그래서 먼저 눈을 돌린 것이 '정책(Policy)'입니다.
적용되는 법령과 사내 정책이 탐지해야 할 카테고리를 규정합니다.
개인정보 보호위원회 가이드라인에서는 프라이버시 영향 평가를 사전적으로 수행하는 방법으로 PIA(Privacy Impact Assessment, 개인정보 보호 평가)를 소개하고 있습니다.
휴가 신청의 병력이라면 다음과 같이 정리할 수 있습니다.
이는 '병력을 외부 서비스로 보내지 않는다'는 사내 정책을 가정한 예시입니다.
| 확인할 것 | 휴가 신청 예시 |
|---|---|
| 데이터를 어디서 사용할지 | 인사 시스템의 휴가 신청 요약하기 |
| ... | |
| 정책과 탐지 카테고리, 처리 방법을 대응시키면, 나중에 요구사항을 변경할 때도 확인할 장소가 명확하며, 독자적으로 구축한 후 평가에도 활용할 수 있습니다. |
PII 필터 프레임워크로서의 Presidio

구현에는 Presidio를 사용했습니다.
머신러닝 모델, 정규표현식(Regex), 독자적인 탐지 로직을 같은 틀에서 다룰 수 있습니다.
비교용으로 OpenAI Privacy Filter의 OpfRecognizer를 준비했습니다.
개인정보 보호법에 대응하는 카테고리를 다루는 모델에는 AppiOnnxRecognizer를 준비했습니다.
구성 방법에 대해서는 공식 문서를 참고해 주십시오.
실제로 이름, 주소, 전화번호 외에도 휴가를 사용하는 이유로 병력이 기재된 문장으로 비교해 보겠습니다.
休職届
木村 千尋(木村 千尋)
生年月日:1995年7月9日
...
OpenAI Privacy Filter로 탐지하기
import spacy
from opf import OPF
from presidio_analyzer import AnalyzerEngine, EntityRecognizer, RecognizerRegistry, RecognizerResult
...
APPI용 모델로 탐지하기
from appi import AppiOnnxRecognizer
from presidio_analyzer import AnalyzerEngine, RecognizerRegistry
from presidio_analyzer.nlp_engine import NoOpNlpEngine
...
실행 결과
OpenAI Privacy Filter 버전
휴직신청서
HITS: [('PRIVATE_PERSON', '木村 千尋(木村 千尋)'), ('PRIVATE_ADDRESS', '愛知県名古屋市千種区花里町一丁目18番6号'), ('PRIVATE_PHONE', '070-5942-8061')]
REDACTED: 休職届
...
APPI용 모델 버전
HITS: [('ADDRESS', '愛知県名古屋市千種区花里町一丁目18番6号'), ('DATE_OF_BIRTH', '1995年7月9日'), ('BANK_ACCOUNT', '070-5942-8061'), ('PERSON', '木村 千尋'), ('MEDICAL_HISTORY', '甲状腺機能亢進症'), ('PERSON', '木村 千尋')]
REDACTED: 休職届
<PERSON>(<PERSON>)
...
OpenAI Privacy Filter에서는 병력의 「갑상선기능항진증」이 그대로 남아 있었습니다.
APPI용 모델에서는 이 부분을 MEDICAL_HISTORY로 감지하여 대체하고 있습니다.
다만, 전화번호를 BANK_ACCOUNT로 오분류한 것도 알 수 있습니다. Boolean으로 판단하지 않고 확률로 판단할 수 있도록 Presidio의 Score도 튜닝하는 것이 필요합니다. (이번에는 score0.5로 판단했습니다.)
자체 카테고리로 평가하기
여기서는 특정 카테고리를 감지하기 위한 Fine Tuning 기법에 대해 소개합니다.
감지 요건이 정해지면, 그 카테고리의 문장을 준비하여 검증할 수 있습니다.
템플릿을 사용한 합성 데이터 생성이 현재로서는 유효한 수단입니다.
병력이라면, 병명만 있는 문장 외에도 휴가 신청 이유나 과거 치료에 대해 쓴 문장을 준비합니다.
병원 이름만 나오는 문장 등, 불필요하게 대체하고 싶지 않은 예시도 필요합니다.
실제로 사용한 의료/병력용 합성 데이터 생성 템플릿은 다음과 같습니다.
의료/병력 합성 데이터 생성 템플릿
아래 조건에 따라 일본어의 의료/병력 관련 문서를 {{ num_docs }}건 생성해 주세요.
## 조건
- 각 문서는 독립적인 내용이어야 합니다.
...
개인에게 연결된 병력과 일반적인 의학 지식을 구분하고, 병원 이름에는 다른 카테고리를 붙이도록 지시했습니다.
OpenAI Privacy Filter 역시 일본어 데이터셋은 합성 데이터를 사용한다고 합니다. 그럼에도 충분한 정확도로 감지할 수 있습니다.
이번에 gpt-5-nano를 사용하여 합성 데이터를 만들고 APPI(일본의 개인정보보호법) 특화 모델을 개발했습니다. 품질이 조금 낮아서 제외한 것도 있으니, 현재라면 gpt-6-luna 이상의 모델로 생성하는 것이 좋을 것 같습니다.
참고로 APPI에 맞는 감지기인 pleno-anonymize를 OSS로 공개하고 있습니다. 참고해 보세요.
요약: AI에게 판단을 맡기는 시스템을 어떻게 사용할까
최근에는 LFM 등 경량화되고 다국어에 대응하는 고품질의 PII Filter 모델이 등장하고 있습니다.
하지만 100% 오검지 없이 감지할 수 있는 성능에는 이르지 못했고, AI의 특성상 거기에 의존하기는 어렵습니다.
저희 조직에서는 개인정보가 존재하지 않는 곳에 정말로 존재하지 않는지 점검하는 최종 방어선으로서 PII Filter를 활용하고 있습니다.
애초에 개인정보가 들어올 수 있는 부분은 모두 특정할 수 있는 상태를 만드는 것이 좋습니다.
그 위에서, 의도치 않은 자유 기술 컬럼 등을 발견하는 목적으로 사용하며, AI에게 의존할 수 있는 범위를 확인하는 것부터 시작하는 것을 추천합니다.
Presidio를 사용하면 정규표현식이나 여러 모델을 조합한 스코어링 감지 등 폭넓은 활용이 가능하므로, 사내 고유 정책에 맞는 PII 필터 기반을 구축해 보세요.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기