블로그 목록으로
컴플라이언스·2026년 5월 25일·7분 분량

프랑스의 LLM RGPD 컴플라이언스 — 가명화, DPA 및 주권

Claude / Gemini / GPT를 GDPR에 맞게 배포하기 위한 전체 체크리스트: PII 가명화 코드, 누구와 Article 28 DPA를 체결해야 하는지, Anthropic 및 Google과 직접 체결하는 Zero Data Retention, Mistral과 AI 주권 문제, 로그 호스팅 및 정보주체 고지.

프랑스 기업을 위해 GDPR을 준수하며 LLM(Claude, Gemini, GPT)을 배포하는 전체 체크리스트: 데이터 가명화, 처리 계약(DPA), Zero Data Retention, 로그 호스팅, 그리고 Mistral/주권 문제.

최소 규제 요건

  1. 외부 LLM을 호출하기 전에 PII를 가명화
  2. 각 데이터를 처리하는 수탁자와 체결한 RGPD 제28조 DPA. Kunavo는 이를 제공하지 않습니다. 처리를 위해 필요하다면 모델 제공업체와 직접 계약하세요
  3. 각 LLM 호출의 목적을 포함한 최신 처리 활동 기록
  4. 정보 주체에 대한 고지: 개인정보 처리방침에 AI 사용을 명시

1) 가명화 — 바로 사용할 수 있는 코드

프롬프트가 백엔드를 떠나기 전에 직접 식별자를 토큰으로 바꿉니다. 대응표는 로컬에 유지됩니다:

pseudonymiser.py
# Pseudonymiser les données personnelles avant l'appel LLM
import re
from openai import OpenAI

PATTERNS = [
    (re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
    (re.compile(r"\b(?:\+33|0)\s*[1-9](?:\s*\d{2}){4}\b"), "<PHONE_FR>"),
    # Numéro de sécurité sociale français (15 chiffres)
    (re.compile(r"\b[12]\d{2}(?:0[1-9]|1[012])(?:\d{2})(?:\d{3})(?:\d{3})(?:\d{2})\b"), "<NIR>"),
    # IBAN FR
    (re.compile(r"\bFR\d{2}\s?(?:\d{4}\s?){5}\d{3}\b"), "<IBAN_FR>"),
]

def pseudonymiser(texte: str) -> tuple[str, dict]:
    masque = texte
    mapping = {}
    for i, (pat, tag) in enumerate(PATTERNS):
        for m in pat.finditer(texte):
            cle = f"{tag}_{i}_{m.start()}"
            mapping[cle] = m.group(0)
            masque = masque.replace(m.group(0), f"[{cle}]")
    return masque, mapping

LLM에는 실제 식별자 대신 "[EMAIL_0_42] a commandé [IBAN_FR_3_158]"가 표시됩니다. 응답에 값을 다시 삽입해야 하는 경우(예: 확인 이메일)에는 API 호출 후 역변환을 수행하며, API 호출 중에는 절대 수행하지 않습니다.

2) DPA — 누가 무엇에 서명해야 하나요

  • 귀사 ↔ Kunavo: Kunavo는 RGPD 제28조 DPA를 제공하지 않습니다. 요청은 미국에서 처리되고 상위 제공업체로 전송되며, 콘텐츠에는 각 제공업체의 개인정보 보호 및 데이터 보존 정책이 적용됩니다
  • 귀사 ↔ 모델 제공업체: 처리에 DPA가 필요하다면 Anthropic, OpenAI 또는 Google과 해당 기업 약관에 따라 직접 체결하세요
  • 표준계약조항(SCC): 미국으로 전송하는 경우(Anthropic, OpenAI), 제공업체와 체결하는 DPA에 유럽연합 집행위원회가 승인한 SCC가 포함되어 있는지 확인하세요

3) Zero Data Retention(ZDR): 제공업체와 직접 사용

기본적으로 Anthropic과 Google은 악용 모니터링을 위해 프롬프트 로그를 각각 30일(Anthropic)/60일(Google) 동안 보관합니다. GDPR에 민감한 워크로드의 경우:

  • Kunavo: ZDR을 제공하지 않습니다. 요청은 미국의 게이트웨이를 거친 후 상위 제공업체로 전달되며, 각 제공업체의 자체 보존 정책이 적용됩니다
  • Anthropic ZDR: Anthropic과 직접 계약한 기업 고객에게 제공됩니다
  • Google Vertex AI EU: Google Cloud와 직접 계약하면 europe-west1(벨기에) 또는 europe-west4(네덜란드)로 라우팅할 수 있으며 데이터가 EU를 벗어나지 않습니다. Kunavo는 EU 리전을 제공하지 않습니다
  • OpenAI: OpenAI와 직접 계약한 Enterprise 티어에서 ZDR을 제공합니다

Mistral 및 데이터 주권 문제

많은 프랑스 팀은 미국 기업에 대한 의존도를 줄이고 싶어 합니다. 고려할 수 있는 세 가지 방향은 다음과 같습니다:

  • Kunavo를 통한 Mistral: 불가능합니다. 카탈로그에 Mistral 모델이나 다른 유럽 공급업체는 없으며, 유럽 공급업체로만 제한된 라우팅도 제공하지 않습니다.
  • 직접 사용하는 Mistral: 공공 부문이나 의료 등 매우 민감한 사례의 경우 Mistral은 온프레미스 배포를 제공합니다. Kunavo는 이러한 요구를 대체하지 않습니다.
  • 두 가지 결합: 민감한 사례에는 직접 사용하는 Mistral을, 강력한 추론에는 Kunavo를 통한 Claude를 사용하세요. 두 공급업체와 두 개의 키가 필요하며, 각 호출이 어디로 전송될지는 코드에서 결정합니다.

로그 호스팅 및 데이터 레지던시

  • Kunavo 라우팅: 게이트웨이는 단일 리전(US-East, Ashburn)에 있습니다. 앞단의 anycast 엣지만 사용자와 가까운 위치에서 TLS를 종료합니다.
  • 계정 영속성 및 청구: US-East에 단일 기본 데이터베이스가 있으며 볼륨의 암호화된 일일 스냅샷이 생성됩니다. 요청하더라도 EU 전용 라우팅이나 EU 리전 저장소는 제공되지 않습니다.
  • 귀사의 애플리케이션 로그: EU에서 직접 호스팅해야 합니다(OVH, Scaleway, Hetzner). 가장 취약한 고리가 되지 마세요

정보 주체에 대한 고지 — 무엇을 알려야 하나요

LLM으로 개인정보를 처리하는 경우 개인정보 처리방침에 이를 명시해야 합니다. 최소 템플릿:

당사는 Kunavo(https://kunavo.com)를 통해 인공지능 모델(Anthropic Claude, Google Gemini, OpenAI GPT)을 수탁자로 사용하며, 목적은 다음과 같습니다: [분류, 요약, 응답 생성 등]. 개인정보는 전송 전에 가명 처리됩니다. Kunavo는 이 데이터를 모델 학습에 사용하지 않으며, 각 모델 제공업체는 자체 개인정보 보호 및 데이터 보존 정책에 따라 데이터를 처리합니다. 귀하는 RGPD 제15조부터 제21조에 따라 열람, 정정, 이의 제기 및 삭제 권리를 가집니다.

프로덕션 배포 전에 확인할 사항

  • 각 수탁자와 체결한 DPA(모델 제공업체와 직접 체결: Kunavo는 제공하지 않음)
  • 최신 처리 활동 기록
  • 실제 샘플에서 가명화 테스트 완료(유출률 < 0.1 %)
  • EU 리전에 로그 저장
  • 제17조 요청(삭제권)에 대응하는 절차
  • 개인정보 처리방침 업데이트 및 공개
  • 대규모 또는 민감한 처리인 경우 DPO 자문

시작할 준비가 되셨나요? 무료 가입 후 $10부터 충전하세요.