GDPR(General Data Protection Regulation, 일반 데이터 보호 규정)은 2018년 5월 25일 시행된 EU의 개인정보 보호 법률이다. EU 거주자의 개인정보를 처리하는 모든 조직에 적용되며, 위반 시 최대 2천만 유로 또는 전 세계 연간 매출액 4%의 과징금이 부과된다.
핵심 원칙 (7가지)
| 원칙 | 설명 |
|---|
| 적법성·공정성·투명성 | 명확한 법적 근거, 정보주체에게 투명하게 공개 |
| 목적 제한 | 수집 목적 이외 사용 금지 |
| 데이터 최소화 | 필요한 데이터만 수집 |
| 정확성 | 정확하고 최신 데이터 유지 |
| 보유 기간 제한 | 필요 기간만 보유 |
| 무결성·기밀성 | 적절한 보안 조치 |
| 책임성 | 준수 입증 의무 |
정보주체의 권리
1. 열람권 (Right of Access): 보유 데이터 확인 요청
2. 정정권 (Right to Rectification): 부정확한 정보 수정
3. 삭제권 (Right to Erasure): "잊힐 권리", 데이터 삭제 요청
4. 처리 제한권: 특정 처리 활동 중단 요청
5. 데이터 이동성 (Portability): 구조화된 형식으로 데이터 수령
6. 이의 제기권: 마케팅 등 특정 처리에 이의
7. 자동화 의사결정 거부권: 프로파일링 거부
개발자가 알아야 할 기술적 요구사항
python
# 1. 개인정보 수집 시 동의 기록
class ConsentRecord:
user_id: str
purpose: str # "마케팅 수신", "서비스 개선" 등
given_at: datetime
ip_address: str
consent_text_version: str
# 2. 데이터 삭제 (잊힐 권리)
def delete_user_data(user_id: str):
# 모든 관련 테이블에서 삭제 또는 익명화
db.execute("DELETE FROM users WHERE id = ?", user_id)
db.execute("UPDATE orders SET user_id = NULL WHERE user_id = ?", user_id)
cache.delete(f"user:{user_id}")
# 3. 데이터 이동성 (CSV/JSON 내보내기)
def export_user_data(user_id: str) -> dict:
return {
"profile": get_profile(user_id),
"orders": get_orders(user_id),
"activity": get_activity(user_id)
}
위반 신고 의무
개인정보 침해 발생 시 72시간 이내 감독기관(DPA)에 신고해야 한다. 정보주체에게도 "높은 위험"이 있으면 지체 없이 통보해야 한다.
국내 영향
GDPR은 외국 기업에도 적용된다. EU 시민의 개인정보를 처리하는 한국 기업도 GDPR 준수 의무가 있으며, 별도 EU 담당자(EU Representative) 지정이 필요할 수 있다.
관련 개념