Implementare un LLM (Claude, Gemini, GPT) conforme al RGPD per un'azienda francese: la checklist completa: pseudonimizzazione dei dati, accordo sul trattamento (DPA), Zero Data Retention, hosting dei log e la questione Mistral / sovranità.
Il minimo richiesto dalla normativa
- Pseudonimizzazione dei dati personali prima di qualsiasi chiamata a un LLM esterno
- DPA ai sensi dell'articolo 28 del RGPD firmato con ogni sub-responsabile che tratta i dati. Kunavo non ne offre uno: se il tuo trattamento lo richiede, stipula un contratto direttamente con il provider del modello
- Registro dei trattamenti aggiornato, inclusa la finalità di ogni chiamata al LLM
- Informazione degli interessati: la tua informativa sulla privacy deve menzionare l'uso dell'IA
1) Pseudonimizzazione — codice pronto all'uso
Prima che il prompt lasci il tuo backend, sostituiamo gli identificativi diretti con token. La tabella di corrispondenza rimane locale:
# 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, mappingIl LLM vede "[EMAIL_0_42] ha ordinato [IBAN_FR_3_158]" invece degli identificativi reali. Se la risposta deve reinserire i valori (per esempio per un'e-mail di conferma), eseguiamo la sostituzione inversa successivamente, mai nella chiamata API.
2) DPA — chi deve firmare cosa
- Tu ↔ Kunavo: Kunavo non offre un DPA ai sensi dell'articolo 28 del RGPD. Le tue richieste vengono elaborate negli Stati Uniti e trasmesse a provider upstream, ai cui contenuti si applicano le rispettive politiche di privacy e conservazione dei dati
- Tu ↔ provider del modello: se il tuo trattamento richiede un DPA, firmalo direttamente con Anthropic, OpenAI o Google secondo i rispettivi termini enterprise
- Clausole contrattuali tipo (CCT): per i trasferimenti verso gli Stati Uniti (Anthropic, OpenAI), verifica che le CCT approvate dalla Commissione europea siano incluse nel DPA che firmi con il provider
3) Zero Data Retention (ZDR): direttamente con il provider
Per impostazione predefinita, Anthropic e Google conservano i log dei prompt per 30 giorni (Anthropic) / 60 giorni (Google) ai fini del monitoraggio degli abusi. Per carichi di lavoro sensibili ai sensi del RGPD:
- Kunavo: nessuna ZDR. Le richieste passano dal nostro gateway negli Stati Uniti e poi dai provider upstream, ai quali si applicano le rispettive politiche di conservazione
- Anthropic ZDR: offerta da Anthropic ai propri clienti enterprise, con contratto diretto con Anthropic
- Google Vertex AI EU: con un contratto diretto con Google Cloud, è possibile usare il routing verso europe-west1 (Belgio) o europe-west4 (Paesi Bassi): i dati non lasciano l'UE. Kunavo non offre alcuna regione UE
- OpenAI: ZDR nel tier Enterprise, con contratto diretto con OpenAI
La questione Mistral e la sovranità
Molti team francesi vogliono ridurre la dipendenza dagli operatori statunitensi. Ci sono tre aspetti da considerare:
- Mistral tramite Kunavo: no. Nel catalogo non è presente alcun modello Mistral né alcun altro fornitore europeo e non esiste un routing limitato ai fornitori europei
- Mistral direttamente: per i casi realmente sensibili (settore pubblico, sanità), Mistral offre un'implementazione on-premise. Kunavo non sostituisce questa esigenza
- Combinare le due opzioni: Mistral direttamente per i casi sensibili, Claude tramite Kunavo per il ragionamento avanzato. Sono due fornitori e due chiavi, e spetta al tuo codice scegliere dove inviare ogni chiamata
Hosting dei log e localizzazione dei dati
- Routing Kunavo: all'interno del gateway, in un'unica regione (US-East, Ashburn). Solo l'edge anycast posto davanti termina il TLS vicino a te
- Persistenza dell'account e fatturazione: un unico database primario in US-East, con snapshot giornalieri crittografati del volume. Né routing solo UE né archiviazione in una regione UE, nemmeno su richiesta
- I tuoi log applicativi: devi ospitarli tu nell'UE (OVH, Scaleway, Hetzner). Non essere l'anello debole
Informazione degli interessati — cosa comunicare
Se fai trattare dati personali da un LLM, devi menzionarlo nell'informativa sulla privacy. Modello minimo:
Utilizziamo modelli di intelligenza artificiale (Anthropic Claude, Google Gemini, OpenAI GPT) come sub-responsabili tramite Kunavo (https://kunavo.com), per le seguenti finalità: [classificazione, riepilogo, generazione di risposte, ecc.]. I dati personali vengono pseudonimizzati prima della trasmissione. Kunavo non utilizza questi dati per addestrare modelli; ogni provider del modello li tratta secondo le proprie politiche di privacy e conservazione. Hai diritto di accesso, rettifica, opposizione e cancellazione ai sensi degli articoli da 15 a 21 del RGPD.
Cosa verificare prima della messa in produzione
- DPA firmato con ogni sub-responsabile (direttamente con il provider del modello: Kunavo non ne offre uno)
- Registro dei trattamenti aggiornato
- Pseudonimizzazione testata su un campione reale (tasso di fuga < 0,1 %)
- Log in una regione UE
- Procedura per rispondere alle richieste ai sensi dell'articolo 17 (diritto alla cancellazione)
- Informativa sulla privacy aggiornata e accessibile
- DPO consultato in caso di trattamento su larga scala o sensibile
Pronto per iniziare? Registrazione gratuita, poi ricarica a partire da 10 $.