4.1 Phase 1 개요
WIA-LEG-009의 첫 번째 단계는 표준화된 데이터 형식을 정의합니다. 모든 잊힐 권리 요청은 동일한 JSON 구조를 따르며, 이는 시스템 간 상호운용성의 기초가 됩니다.
Phase 1의 목표
- 전 세계 어디서나 이해할 수 있는 공통 데이터 언어 확립
- 수동 처리에서도 사용 가능한 명확한 구조 제공
- 자동 검증이 가능한 JSON Schema 정의
- 미래 확장을 위한 유연성 확보
구현 난이도
Phase 1은 가장 낮은 진입 장벽을 가집니다. 기존 시스템을 최소한으로 수정하면서 표준을 채택할 수 있으며, 수동 프로세스에도 적용 가능합니다.
4.2 기본 요청 구조
모든 삭제 요청은 다음의 최상위 필드를 포함합니다:
{
"wia_standard": "WIA-LEG-009",
"version": "1.0",
"request_id": "rtbf_20250101_abc123def456",
"request_type": "deletion",
"timestamp": "2025-01-01T10:30:00Z",
"data_subject": { ... },
"legal_basis": "GDPR_Article_17_1a",
"scope": { ... },
"verification": { ... },
"metadata": { ... }
}
필드 설명
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
wia_standard |
string | 필수 | 항상 "WIA-LEG-009" |
version |
string | 필수 | 표준 버전 (현재 "1.0") |
request_id |
string | 필수 | 고유 요청 식별자 (UUID 권장) |
request_type |
enum | 필수 | "deletion", "rectification", "restriction" |
timestamp |
string | 필수 | ISO 8601 형식의 요청 시간 |
data_subject |
object | 필수 | 데이터 주체 정보 |
legal_basis |
string | 필수 | 법적 근거 (GDPR, CCPA 등) |
scope |
object | 필수 | 삭제 범위 정의 |
verification |
object | 선택 | 신원 확인 정보 |
metadata |
object | 선택 | 추가 메타데이터 |
4.3 데이터 주체 (Data Subject)
data_subject 객체는 삭제를 요청하는 개인을 식별합니다.
{
"data_subject": {
"email": "john.doe@example.com",
"identifiers": [
{
"type": "user_id",
"value": "user_12345"
},
{
"type": "customer_id",
"value": "CUST-67890"
}
],
"name": {
"given_name": "John",
"family_name": "Doe"
},
"phone": "+1-555-123-4567",
"address": {
"country": "US",
"region": "CA",
"postal_code": "94102"
},
"date_of_birth": "1985-03-15"
}
}
식별자 (Identifiers)
identifiers 배열은 시스템 내에서 사용자를 찾기 위한 다양한 식별자를 포함합니다.
일반적인 식별자 유형:
user_id: 내부 사용자 IDcustomer_id: 고객 번호account_number: 계좌 번호social_security_number: 주민등록번호/사회보장번호passport_number: 여권 번호license_number: 면허 번호
개인정보 최소화 원칙
데이터 주체 정보는 식별에 필요한 최소한만 포함해야 합니다. 예를 들어, 이메일만으로 충분히 식별 가능하다면 주소나 생년월일은 제공하지 않는 것이 좋습니다.
4.4 법적 근거 (Legal Basis)
legal_basis 필드는 삭제 요청의 법적 근거를 명시합니다.
표준화된 코드를 사용하여 자동 처리를 가능하게 합니다.
GDPR 법적 근거 코드
| 코드 | Article | 설명 |
|---|---|---|
GDPR_Article_17_1a |
17(1)(a) | 목적 달성 - 데이터가 더 이상 필요하지 않음 |
GDPR_Article_17_1b |
17(1)(b) | 동의 철회 - 처리 근거 소멸 |
GDPR_Article_17_1c |
17(1)(c) | 정당한 반대 - 처리에 대한 이의 제기 |
GDPR_Article_17_1d |
17(1)(d) | 불법 처리 - 위법하게 처리됨 |
GDPR_Article_17_1e |
17(1)(e) | 법적 의무 - 법률 준수를 위한 삭제 |
GDPR_Article_17_1f |
17(1)(f) | 아동 정보 - 정보사회 서비스 관련 수집 |
기타 규정 법적 근거
CCPA_Section_1798.105: CCPA 삭제권CPRA_Section_1798.105: CPRA 개정 삭제권LGPD_Article_18_VI: LGPD 삭제권PIPA_Article_36: 한국 개인정보 보호법APPI_Article_29: 일본 개인정보 보호법
{
"legal_basis": "GDPR_Article_17_1a",
"jurisdiction": "EU",
"regulation_reference": {
"name": "General Data Protection Regulation",
"article": "17(1)(a)",
"url": "https://gdpr.eu/article-17-right-to-be-forgotten/"
}
}
4.5 삭제 범위 (Scope)
scope 객체는 삭제할 데이터의 범위를 정의합니다.
{
"scope": {
"data_categories": [
"personal_data",
"transaction_history",
"communication_records"
],
"systems": [
"customer_database",
"analytics_platform",
"email_marketing"
],
"time_range": {
"start": "2020-01-01T00:00:00Z",
"end": "2025-01-01T00:00:00Z"
},
"exceptions": [
{
"category": "financial_records",
"reason": "legal_retention_requirement",
"retention_until": "2030-12-31T23:59:59Z"
}
],
"include_backups": true,
"include_logs": true,
"include_third_parties": true
}
}
데이터 카테고리
표준 데이터 카테고리 분류:
personal_data: 이름, 주소, 연락처 등 기본 개인정보sensitive_data: 민감 정보 (건강, 종교, 성적 취향 등)financial_data: 금융 거래, 카드 정보, 계좌transaction_history: 구매 내역, 서비스 이용 기록communication_records: 이메일, 채팅, 통화 기록behavioral_data: 브라우징 히스토리, 클릭 패턴location_data: GPS 위치, IP 주소biometric_data: 지문, 얼굴 인식 데이터user_generated_content: 게시글, 댓글, 리뷰
삭제 예외 (Exceptions)
법적 의무, 공익, 또는 계약상 이유로 삭제할 수 없는 데이터를 명시합니다. 투명성을 위해 예외 사유와 보관 기간을 명확히 기록해야 합니다.
4.6 신원 확인 (Verification)
데이터 주체의 신원을 확인하기 위한 정보를 포함합니다.
{
"verification": {
"method": "email_otp",
"token": "123456",
"verified_at": "2025-01-01T10:25:00Z",
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0 ...",
"additional_factors": [
{
"type": "sms_otp",
"verified_at": "2025-01-01T10:26:00Z"
}
],
"identity_document": {
"type": "passport",
"document_number": "A12345678",
"issuing_country": "US",
"verification_method": "manual_review"
}
}
}
검증 방법
email_otp: 이메일로 전송된 OTP 코드sms_otp: SMS로 전송된 OTP 코드oauth: OAuth 2.0 인증identity_document: 신분증 확인biometric: 생체 인증knowledge_based: 질문-응답 기반 인증certified_mail: 우편 인증
다중 인증 (MFA) 권장
민감한 데이터나 대량의 데이터를 삭제하는 경우, 다중 인증(Multi-Factor Authentication)을 사용하여 요청자의 신원을 더 강력하게 확인해야 합니다.
4.7 JSON Schema 정의
자동 검증을 위한 완전한 JSON Schema:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://wia.org/schemas/rtbf/v1.0/request.json",
"title": "WIA-LEG-009 Right to Be Forgotten Request",
"type": "object",
"required": [
"wia_standard",
"version",
"request_id",
"request_type",
"timestamp",
"data_subject",
"legal_basis",
"scope"
],
"properties": {
"wia_standard": {
"type": "string",
"const": "WIA-LEG-009"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+(\\.\\d+)?$"
},
"request_id": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"request_type": {
"type": "string",
"enum": ["deletion", "rectification", "restriction"]
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data_subject": {
"type": "object",
"required": ["email"],
"properties": {
"email": {
"type": "string",
"format": "email"
},
"identifiers": {
"type": "array",
"items": {
"type": "object",
"required": ["type", "value"],
"properties": {
"type": {"type": "string"},
"value": {"type": "string"}
}
}
}
}
},
"legal_basis": {
"type": "string",
"pattern": "^(GDPR|CCPA|CPRA|LGPD|PIPA|APPI)_.*$"
},
"scope": {
"type": "object",
"required": ["data_categories"],
"properties": {
"data_categories": {
"type": "array",
"items": {"type": "string"},
"minItems": 1
},
"systems": {
"type": "array",
"items": {"type": "string"}
}
}
}
}
}
Schema 사용 예시 (TypeScript)
import Ajv from 'ajv';
import addFormats from 'ajv-formats';
import schema from './rtbf-schema.json';
const ajv = new Ajv();
addFormats(ajv);
const validate = ajv.compile(schema);
const request = {
wia_standard: "WIA-LEG-009",
version: "1.0",
request_id: "rtbf_20250101_abc123",
// ... 나머지 필드
};
const valid = validate(request);
if (!valid) {
console.error(validate.errors);
}
4.8 요청 유형
WIA-LEG-009는 세 가지 주요 요청 유형을 지원합니다:
1. Deletion (삭제)
완전한 데이터 제거. 가장 일반적인 잊힐 권리 요청.
{
"request_type": "deletion",
"deletion_method": "hard_delete", // "hard_delete" 또는 "anonymize"
"cascade_delete": true // 연관 데이터도 삭제할지 여부
}
2. Rectification (정정)
부정확한 데이터를 수정. GDPR Article 16에 근거.
{
"request_type": "rectification",
"corrections": [
{
"field": "email",
"current_value": "old@example.com",
"new_value": "new@example.com"
}
]
}
3. Restriction (처리 제한)
삭제 대신 데이터 처리를 제한. GDPR Article 18에 근거.
{
"request_type": "restriction",
"restriction_type": "freeze", // "freeze" 또는 "archive"
"restriction_reason": "dispute_accuracy",
"restriction_duration": "pending_verification"
}
4.9 완전한 요청 예시
완전한 예시{
"wia_standard": "WIA-LEG-009",
"version": "1.0",
"request_id": "rtbf_20250101_abc123def456",
"request_type": "deletion",
"timestamp": "2025-01-01T10:30:00Z",
"data_subject": {
"email": "john.doe@example.com",
"identifiers": [
{"type": "user_id", "value": "user_12345"},
{"type": "customer_id", "value": "CUST-67890"}
],
"name": {
"given_name": "John",
"family_name": "Doe"
}
},
"legal_basis": "GDPR_Article_17_1a",
"jurisdiction": "EU",
"scope": {
"data_categories": [
"personal_data",
"transaction_history",
"communication_records"
],
"systems": ["customer_database", "analytics_platform"],
"include_backups": true,
"include_logs": true,
"include_third_parties": true,
"exceptions": [
{
"category": "financial_records",
"reason": "legal_retention_requirement",
"retention_until": "2030-12-31T23:59:59Z"
}
]
},
"verification": {
"method": "email_otp",
"verified_at": "2025-01-01T10:25:00Z",
"ip_address": "192.168.1.100"
},
"metadata": {
"user_locale": "en-US",
"user_timezone": "America/Los_Angeles",
"submission_channel": "web_portal"
}
}
4.10 다음 단계
이 장에서는 WIA-LEG-009 Phase 1의 데이터 형식 표준을 상세히 살펴보았습니다. 다음 장에서는 이 데이터 형식을 HTTP API를 통해 프로그래밍 방식으로 처리하는 Phase 2를 다룹니다.