/ 학습 / 안내서 / 보안·윤리
L1 입문 · 4분 읽기

개인정보, AI에 넣기 전에 점검하기

안전·윤리팀 2026.06.29 갱신 데이터를 공개·업로드·AI 입력 전에 다루는 실무자
#개인정보#PII#마스킹#공개점검

119 데이터에는 신고자·환자·요구조자 정보가 섞여 있습니다. 이런 데이터를 외부 AI 도구에 붙여넣거나 공개 저장소에 올리면, 한 번의 실수로 개인정보가 영구히 노출됩니다. 이 안내서는 데이터를 내보내기 전에 로컬에서 1차 점검하는 방법입니다.

이 안내서를 끝내면 개인정보 패턴을 자동으로 1차 점검하고, 자동 도구가 못 잡는 것이 무엇인지 알아 사람이 무엇을 끝까지 봐야 하는지 판단할 수 있습니다.

점검은 3단입니다

한 가지 도구로 끝나지 않습니다. 세 단계가 겹겹이 받칩니다.

  1. 정규식 점검 — 주민번호·전화번호 같은 패턴을 로컬에서 기계가 1차로 찾습니다 (아래 PII 가드)
  2. 문맥 점검 — 패턴은 없지만 "날짜+장소+사건유형" 조합처럼 맥락으로 식별되는 위험을 점검합니다
  3. 사람 최종 확인 — 이름·상세주소·사건 서사처럼 기계가 못 잡는 것을 사람이 봅니다

무엇을 잡는가 — block과 warn

PII 가드는 표준 라이브러리만 쓰는 로컬 스크립트입니다. 발견한 값은 절대 다시 출력하지 않고 가립니다(마스킹).

등급잡는 패턴의미
block주민·외국인등록번호, 여권번호실행 중단 대상
warn휴대전화, 이메일, 차량번호, 카드번호 추정사람이 확인 후 진행

실제 패턴은 이렇게 정의돼 있습니다(필요할 때 참고).

PYTHON
BLOCK_PATTERNS = {
    "주민/외국인등록번호": re.compile(r"\b\d{6}[-\s]?[1-8]\d{6}\b"),
    "여권번호": re.compile(r"\b[MSRODG]\d{8}\b"),
}
WARN_PATTERNS = {
    "휴대전화": re.compile(r"\b01[016789][-\s]?\d{3,4}[-\s]?\d{4}\b"),
    "이메일": re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"),
    "차량번호": re.compile(r"\b\d{2,3}[가-힣]\d{4}\b"),
    "카드번호추정": re.compile(r"\b(?:\d[ -]?){15,16}\b"),
}

종료 코드가 곧 판정입니다

스크립트를 실행하면 종료 코드로 결과를 알려줍니다.

BASH
python pii_guard.py sample.csv memo.txt
종료 코드의미다음 행동
0 (표시 없음)알려진 패턴 없음그래도 이름·상세주소·사건 서사는 사람이 본다
0 + warn전화·이메일 등 확인 필요공개 필요성·마스킹 수준을 기록
1 (block)차단 패턴 발견공개·업로드·AI 입력 중단
2파일 없음·사용법 오류현재 위치와 파일명 확인
▸ 소방 활용 포인트
119 데이터는 신고자·환자 정보가 섞이기 쉽습니다. 외부 AI나 공개 저장소에 올리기 전 반드시 이 점검을 거치고, 공개하지 않을 자료는 외부 AI에도 넣지 마세요. warn은 통과가 아니고 block은 중단 신호이며, 가드는 보조 장치일 뿐 최종 확인은 사람입니다.

직접 해보기 (안전한 연습 파일)

실제 신고자·환자 자료가 아니라, 합성 문자열로 만든 연습 파일로만 시험합니다.

POWERSHELL
("연습용 경고: " + "010-" + "0000-" + "0000") | Set-Content -Encoding UTF8 sample_warn.txt
("연습용 차단: " + "000000-" + "1000000") | Set-Content -Encoding UTF8 sample_block.txt
python pii_guard.py sample_block.txt

차단 패턴이 있으면 값을 가린 채 이렇게 알려 줍니다.

TEXT
⛔ 차단 1건 — 제거 전에는 진행할 수 없습니다:
  - [주민/외국인등록번호] sample_block.txt 1행: 000███████████
ℹ️ 가드는 보조 장치입니다. 이름·주소는 기계가 못 잡습니다 — 최종 확인은 사람이 합니다.

사람이 끝까지 봐야 하는 것

자동 점검을 통과해도 다음은 사람이 직접 확인합니다.

TEXT
- [ ] 신고자명, 환자명, 요구조자명, 연락처, 상세주소를 제거했습니다.
- [ ] 사건번호, 출동번호, 내부 보고번호가 실제 건을 특정하지 않는지 확인했습니다.
- [ ] 공개용 예제 데이터는 합성 데이터 또는 공개 가능한 데이터만 사용했습니다.
- [ ] AI 도구에 넣을 텍스트는 필요한 최소 정보만 남겼습니다.

정규식이 못 잡는 것

PII 가드는 알려진 패턴만 찾습니다. 다음은 자동 탐지가 실패할 수 있어 사람의 판단이 필요합니다.

⚠️ 흔한 실수
일부만 가린 실제 번호는 block이 놓칠 수 있고, 공용 대표번호·공개 이메일은 warn이 잘못 잡을 수 있습니다. 도구의 결과는 시작점이지 결론이 아닙니다.