By · Last updated 2026-06-05

Torna al BlogGDPR e Conformità

I Tool PII Self-Hosted Falliscono gli Audit di Conformità

spaCy 3.4.4 produce risultati NER diversi rispetto a spaCy 3.5.1. Una società di servizi finanziari scopre che il 3% dei documenti era stato anonimizzato in modo diverso in staging rispetto alla produzione — un risultato di audit GDPR.

June 5, 20266 min di lettura
compliance auditenvironment consistencyspaCy versionsself-hosted PIIreproducible anonymization

Perché i Tool PII Self-Hosted Falliscono gli Audit di Conformità

Il GDPR richiede prove. Devi dimostrare che la rimozione dei dati personali è stata eseguita allo stesso modo ogni volta. I revisori dell'Autorità Garante verificano questo. Vogliono vedere un metodo chiaro e coerente applicato a tutti i dati.

Presidio self-hosted ha un problema reale qui. Non è una questione di configurazione. È un limite fondamentale degli strumenti NLP self-hosted.

Cos'è la Deriva dell'Ambiente?

Presidio self-hosted gira in sviluppo, staging e produzione. Ognuno di questi può comportarsi in modo diverso. Quindi lo stesso input può produrre risultati diversi in ciascuno.

Questa si chiama deriva dell'ambiente. Ha quattro cause principali.

Deriva della Versione del Modello

I modelli spaCy sono versionati. Il modello en_core_web_lg 3.4.4 e en_core_web_lg 3.5.1 sono stati addestrati su dati diversi. Utilizzano anche architetture diverse. Quindi lo stesso documento può produrre risultati NER diversi con ciascuna versione.

Una configurazione comune si presenta così:

  • Sviluppo: en_core_web_lg 3.4.4 — installato all'inizio del progetto
  • Staging: en_core_web_lg 3.5.0 — aggiornato durante il lavoro di routine
  • Produzione: en_core_web_lg 3.5.1 — aggiornato durante una patch di sicurezza

Sono tre configurazioni. Tre versioni del modello. Tre risultati di rilevamento diversi. I test passano in staging. Ma la produzione gira su un modello diverso. Il divario rimane nascosto.

Deriva delle Dipendenze

spaCy 3.4.x e 3.5.x differiscono nel modo in cui dividono le frasi. Questo cambiamento influisce su come vengono trovati i nomi vicino ai confini delle frasi. Queste modifiche sono nelle note di rilascio di spaCy. Ma la maggior parte dei team non le controlla per l'impatto sui dati personali.

Deriva della Configurazione

Le soglie dei punteggi impostate in sviluppo potrebbero non essere trasferite in produzione. Anche le liste di parole personalizzate possono differire tra le configurazioni. Queste lacune sono comuni. Vengono raramente monitorate. Si veda la nostra guida alla conformità GDPR per quello che cercano i revisori.

Differenze Hardware

La matematica nei modelli NLP non è identica su tutti i CPU e GPU. Un laptop consumer e un server possono produrre risultati di punteggio leggermente diversi. Quindi alcuni nomi possono essere trovati su una macchina ma non su un'altra.

Un Risultato Reale di Audit

Una banca ha testato la propria configurazione self-hosted di Presidio.

Configurazione di test: Presidio con spaCy 3.4.4 sul cluster di staging. Configurazione live: Presidio con spaCy 3.5.1 sul cluster di produzione.

Hanno eseguito lo stesso set di documenti attraverso entrambi. Poi hanno confrontato i risultati. Il risultato: il 3% dei documenti aveva risultati diversi di rimozione dei dati personali. Alcuni nomi venivano rilevati in staging ma non in produzione. Alcuni avevano span di testo rilevati diversi.

Il risultato dell'audit era diretto: "La società non può dimostrare l'uso coerente di misure tecniche di rimozione dei dati personali a causa di differenze specifiche dell'ambiente nei risultati di rilevamento."

L'Articolo 32 del GDPR richiede misure tecniche adeguate. Le regole EDPB sulla rimozione dei dati personali richiedono coerenza e riproducibilità. Un tasso del 3% su 100.000 documenti al mese significa 3.000 documenti con risultati incoerenti ogni mese. Alcuni sono falsi negativi. I dati personali che lo staging avrebbe rilevato rimangono nell'output live. Questo è un fallimento di conformità.

La banca è poi passata al SaaS gestito. Il risultato dell'audit è stato chiuso. Si veda la nostra pagina di sicurezza e conformità per come le configurazioni gestite gestiscono questo.

Perché i Servizi Gestiti Sono Diversi

Un servizio gestito esegue una versione del motore. Tutti gli utenti eseguono la stessa versione contemporaneamente. Gli aggiornamenti del modello vengono applicati da un unico punto. Anche la configurazione è gestita da un unico punto, con un log completo delle modifiche. L'hardware degli utenti non influisce sui risultati.

Quindi lo stesso documento elaborato oggi produce lo stesso risultato il mese prossimo. Se la versione del motore è cambiata, quella modifica è registrata e versionata.

La differenza nell'audit trail è fondamentale.

Audit trail self-hosted:

  • "Usato Presidio 2.2.35 con spaCy en_core_web_lg 3.5.1 su Ubuntu 22.04."
  • Era questa la stessa versione dello staging? Sconosciuto.
  • Il modello è cambiato da quando questo documento è stato elaborato? Sconosciuto a meno che non sia monitorato.
  • La soglia del punteggio è la stessa dei test? Dipende dalla gestione della configurazione.

Audit trail del servizio gestito:

  • "Usato API anonym.legal, versione motore 4.22.1, alle 2025-03-15T14:22:31Z."
  • Stessa versione per tutti gli utenti? Sì.
  • È cambiata? Le versioni del motore sono bloccate. La versione 4.22.1 significa sempre lo stesso motore.
  • La configurazione è riproducibile? Sì. L'ID del preset è registrato. La configurazione a quella versione può essere recuperata.

Il trail gestito è chiaro. Il trail self-hosted richiede un monitoraggio attento che la maggior parte dei team non esegue.

Come Migliorare la Coerenza Self-Hosted

Se l'hosting autonomo è necessario, puoi ridurre la deriva con quattro passaggi.

Prima, blocca le versioni dei modelli. Fissa le versioni esatte dei modelli in tutti i file di deployment. Blocca gli aggiornamenti automatici. Traccia le versioni nel controllo del codice sorgente.

Poi, blocca le immagini dei container. Costruisci immagini Docker con le versioni esatte dei modelli integrate. Tagga ogni immagine con la versione del modello, la versione di Presidio e la data. Non aggiornare le immagini base senza test preventivi.

Inoltre, mantieni la configurazione nel codice. Archivia tutte le impostazioni di Presidio in file tracciati nel controllo del codice sorgente. Questo include i rilevatori, le soglie dei punteggi e le lingue attive. Distribuisci la configurazione con l'applicazione.

Infine, testa tra le configurazioni. Dopo qualsiasi aggiornamento, esegui un set fisso di documenti di test attraverso la nuova configurazione. Confronta i risultati con un riferimento archiviato. Automatizza questo controllo. Si veda la FAQ per domande comuni sui test di regressione PII automatizzati.

Questi passaggi aiutano. Ma aggiungono anche lavoro. Un servizio gestito fornisce la stessa coerenza senza lo sforzo aggiuntivo.

La Conclusione

La rimozione coerente dei dati personali non appare nelle schede prodotto. Ma diventa critica quando i revisori chiedono prove.

Senza cura attiva, gli strumenti PII self-hosted vanno in deriva. I cambiamenti di versione aggiungono lacune silenziose. Quelle lacune emergono come risultati di audit.

I servizi gestiti forniscono coerenza per impostazione predefinita. Il motore gira da un unico punto. Le configurazioni degli utenti non influiscono sui risultati. Per i team focalizzati sulla conformità, questo è un vantaggio diretto.

Fonti

Pronto a proteggere i tuoi dati?

Inizia ad anonimizzare i PII con oltre 285 tipi di entità in 48 lingue.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.