개인정보 보유기간과 파기 의무 — 중소기업 실전 가이드
개인정보보호법 위반 과태료 사례 중 보유기간 초과 보관과 미파기가 상당한 비중을 차지합니다. "언젠가 쓸 수도 있으니까" 보관하다가 과태료를 맞는 경우입니다. 이 글에서는 보유기간 기준과 파기 방법을 실무적으로 정리합니다.
왜 파기 의무가 중요한가?
개인정보보호법 제21조는 목적 달성 후 지체 없이 파기할 것을 명시합니다.
- 회원 탈퇴 → 탈퇴 즉시(또는 30일 이내) 파기
- 구매 완료 → 관련 법정 보존 기간 이후 파기
- 이벤트 응모 → 이벤트 종료 후 즉시 파기
파기하지 않으면: 과태료 최대 3,000만 원 + 과징금 (전체 매출의 최대 3%)
보유기간 설정 기준
1. 법정 보존 의무가 있는 경우
일부 데이터는 다른 법령에 의해 일정 기간 보존이 의무화되어 있습니다. 이 경우 해당 기간까지는 보관해야 합니다.
| 데이터 유형 | 근거 법령 | 보존 기간 | |------------|----------|----------| | 전자상거래 거래기록 | 전자상거래법 | 5년 | | 소비자 불만·분쟁기록 | 전자상거래법 | 3년 | | 표시·광고 기록 | 전자상거래법 | 6개월 | | 세금계산서 등 회계 기록 | 국세기본법 | 5~10년 | | 계약·청약 철회 기록 | 전자상거래법 | 5년 |
2. 자체 설정 보유기간
법정 의무가 없는 데이터(마케팅 동의, 로그인 기록 등)는 개인정보처리방침에 명시한 기간까지만 보관합니다.
실무 팁: "이용 목적 달성 시까지"처럼 모호하게 쓰면 안 됩니다. "회원 탈퇴 후 30일", "서비스 이용 종료 후 1년"처럼 구체적으로 명시해야 합니다.
파기 방법
전자 파일
- 복원 불가능한 방식으로 삭제해야 합니다
- 단순 휴지통 비우기 → 복원 가능 → 파기로 인정 안 됨
- 권장 방법: 덮어쓰기(overwrite), DB 레코드 삭제 + vacuum, 암호화 키 폐기
종이 문서
- 파쇄 또는 소각
DB에서 삭제 시 주의사항
-- 단순 DELETE는 파기로 인정될 수 있으나
-- 백업에 남아있으면 완전 파기가 아님
DELETE FROM users WHERE deleted_at < NOW() - INTERVAL '30 days';
-- 백업 정책도 함께 검토 필요
백업 데이터에 개인정보가 남아있는 경우: 백업 보존 기간을 명확히 정하고 개인정보처리방침에 기재해야 합니다.
파기 절차 체크리스트
✅ 파기 프로세스 체크리스트
□ 보유기간이 지난 데이터를 자동으로 식별하는 로직이 있는가?
□ 파기 대상 데이터를 정기적(최소 월 1회)으로 확인하는가?
□ 파기 방법이 복원 불가능한 수준인가?
□ 파기 기록(일시, 대상, 방법)을 남기는가?
□ 백업 데이터 내 개인정보 처리 방침이 있는가?
□ 임직원 퇴직 시 개인정보 접근 권한이 즉시 회수되는가?
흔한 실수 3가지
실수 1: "혹시 몰라서" 장기 보관
"나중에 필요할 수도 있으니까"는 합법적인 보존 사유가 아닙니다. 목적이 없으면 파기해야 합니다.
실수 2: 탈퇴 회원 데이터 그대로 보관
탈퇴 처리 후 개인식별정보를 분리하지 않고 그냥 is_deleted = true 플래그만 세우는 경우가 많습니다. 이는 파기가 아닙니다.
실수 3: 개발 환경에 실제 개인정보 사용
스테이징 DB에 운영 데이터를 그대로 복사해서 쓰는 경우 → 보유기간 관리 밖에 놓이게 됩니다. 개발 환경은 반드시 익명화된 데이터를 사용해야 합니다.
자동화 파기 구현 팁
대부분의 서비스는 이 정도면 충분합니다:
# 예시: 탈퇴 30일 후 개인정보 파기 스케줄러
from datetime import datetime, timedelta
def purge_expired_users():
cutoff = datetime.now() - timedelta(days=30)
expired = db.query(User).filter(
User.deleted_at < cutoff,
User.purged_at.is_(None)
).all()
for user in expired:
user.email = None
user.name = None
user.phone = None
user.purged_at = datetime.now()
db.commit()
log_purge_record(len(expired)) # 파기 기록 남기기
pipaguard로 파기 정책 점검하기
개인정보처리방침에 보유기간과 파기 방법이 올바르게 기재되어 있는지, 실제 운영 정책과 일치하는지 확인해드립니다.