By · Last updated 2026-06-05

Powrót do blogaGDPR i zgodność

Własne narzędzia PII oblewają audyty zgodności

spaCy 3.4.4 daje inne wyniki NER niż spaCy 3.5.1. Firma z sektora finansowego odkryła, że 3% dokumentów było anonimizowanych inaczej w środowisku staging niż produkcyjnym.

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

Dlaczego własne narzędzia PII nie zdają audytów zgodności

RODO wymaga dowodów. Musisz wykazać, że usuwanie danych osobowych odbywało się za każdym razem w ten sam sposób. Inspektorzy z organów ochrony danych (DPA) to sprawdzają. Oczekują, że pokażesz jasną i spójną metodę stosowaną do wszystkich danych.

Samodzieln hostowany Presidio ma tu poważny problem. To nie jest kwestia konfiguracji. To fundamentalne ograniczenie samodzielnie hostowanych narzędzi NLP.

Czym jest dryft środowiskowy?

Samodzielnie hostowany Presidio działa w środowiskach dev, staging i produkcji. Każde z nich może działać inaczej. Dlatego to samo dane wejściowe może dawać różne wyniki w każdym ze środowisk.

Nazywamy to dryftem środowiskowym. Ma cztery główne przyczyny.

Dryft wersji modelu

Modele spaCy są wersjonowane. Model en_core_web_lg 3.4.4 i en_core_web_lg 3.5.1 były trenowane na różnych danych i mają inne architekty. Dlatego ten sam dokument może dawać różne wyniki NER w zależności od wersji.

Typowa konfiguracja wygląda tak:

  • Dev: en_core_web_lg 3.4.4 — zainstalowany na początku projektu
  • Staging: en_core_web_lg 3.5.0 — zaktualizowany w trakcie rutynowych prac
  • Produkcja: en_core_web_lg 3.5.1 — zaktualizowany podczas poprawki bezpieczeństwa

To trzy środowiska. Trzy wersje modelu. Trzy różne wyniki detekcji. Testy przechodzą na stagingu. Ale produkcja działa na innym modelu. Luka pozostaje ukryta.

Dryft wersji zależności

spaCy 3.4.x i 3.5.x różnią się sposobem dzielenia zdań. Ta zmiana wpływa na sposób wykrywania imion w pobliżu granic zdań. Zmiany te są opisane w notach wydania spaCy. Ale większość zespołów nie sprawdza ich pod kątem wpływu na PII.

Dryft konfiguracji

Progi punktacyjne ustawione w dev mogą nie przenieść się na produkcję. Niestandardowe listy słów mogą też różnić się między środowiskami. Takie rozbieżności są częste. Rzadko się je śledzi. Zapoznaj się z naszym przewodnikiem RODO, aby dowiedzieć się, czego szukają audytorzy.

Różnice sprzętowe

Obliczenia w modelach NLP nie są identyczne na wszystkich procesorach i kartach graficznych. Laptop użytkownika i serwer mogą dawać nieznacznie różne wyniki punktowe. Dlatego niektóre imiona mogą być wykrywane na jednym urządzeniu, a nie na innym.

Rzeczywisty wynik audytu

Bank przetestował swój własny system Presidio.

Środowisko testowe: Presidio z spaCy 3.4.4 na klastrze staging. Środowisko produkcyjne: Presidio z spaCy 3.5.1 na klastrze produkcyjnym.

Przepuścili ten sam zestaw dokumentów przez oba środowiska. Następnie porównali wyniki. Ustalenie: 3% dokumentów miało różne wyniki usuwania PII. Niektóre imiona były wykrywane w stagingu, ale nie w produkcji. Niektóre miały różne zakresy wykrytego tekstu.

Wniosek z audytu był jednoznaczny: „Firma nie może wykazać spójnego stosowania technicznych środków usuwania danych osobowych ze względu na różnice w wynikach detekcji zależne od środowiska.”

Artykuł 32 RODO wymaga odpowiednich środków technicznych. Zasady EROD dotyczące usuwania PII wymagają spójności i powtarzalności. Wskaźnik 3% przy 100 000 dokumentów miesięcznie oznacza 3000 dokumentów z niespójnymi wynikami każdego miesiąca. Część to fałszywe negatywy — PII, które staging by wykrył, pozostaje w wynikach produkcyjnych. To naruszenie zgodności.

Bank przeszedł na zarządzane SaaS. Ustalenie audytu zostało zamknięte. Zapoznaj się z naszą stroną bezpieczeństwa i zgodności, aby dowiedzieć się, jak zarządzane systemy rozwiązują ten problem.

Dlaczego usługi zarządzane są inne

Usługa zarządzana działa na jednej wersji silnika. Wszyscy użytkownicy korzystają z tej samej wersji w tym samym czasie. Aktualizacje modeli są wdrażane z jednego miejsca. Konfiguracja jest też zarządzana z jednego miejsca, z pełnym dziennikiem zmian. Sprzęt użytkownika nie wpływa na wyniki.

Ten sam dokument przetworzony dziś daje ten sam wynik za miesiąc. Jeśli wersja silnika się zmieniła, zmiana ta jest zalogowana i wersjonowana.

Kluczowa różnica tkwi w ścieżce audytu.

Ścieżka audytu własnego hostingu:

  • „Użyto Presidio 2.2.35 z spaCy en_core_web_lg 3.5.1 na Ubuntu 22.04.”
  • Czy to ta sama wersja co na stagingu? Nieznane.
  • Czy model zmienił się od czasu przetworzenia tego dokumentu? Nieznane, jeśli nie jest śledzone.
  • Czy próg punktowy jest taki sam jak w testach? Zależy od zarządzania konfiguracją.

Ścieżka audytu usługi zarządzanej:

  • „Użyto API anonym.legal, wersja silnika 4.22.1, o 2025-03-15T14:22:31Z.”
  • Ta sama wersja dla wszystkich użytkowników? Tak.
  • Czy się zmieniła? Wersje silnika są zablokowane. Wersja 4.22.1 zawsze oznacza ten sam silnik.
  • Czy konfiguracja jest powtarzalna? Tak. ID presetu jest logowane. Konfigurację w tej wersji można pobrać.

Ścieżka zarządzana jest przejrzysta. Ścieżka własnego hostingu wymaga starannego śledzenia, które większość zespołów pomija.

Jak poprawić spójność własnego hostingu

Jeśli własny hosting jest konieczny, możesz ograniczyć dryft czterema krokami.

Po pierwsze, zablokuj wersje modeli. Zablokuj dokładne wersje modeli we wszystkich plikach wdrożeniowych. Wyłącz automatyczne aktualizacje. Śledź wersje w kontroli wersji.

Następnie zamroź obrazy kontenerów. Buduj obrazy Docker z wbudowanymi dokładnymi wersjami modeli. Taguj każdy obraz wersją modelu, wersją Presidio i datą. Nie aktualizuj obrazów bazowych bez wcześniejszego testowania.

Przechowuj też konfigurację w kodzie. Przechowuj wszystkie ustawienia Presidio w plikach śledzonych w kontroli wersji. Obejmuje to detektory, progi punktowe i aktywne języki. Wdrażaj konfigurację razem z aplikacją.

Na koniec testuj między środowiskami. Po każdej aktualizacji przepuść stały zestaw dokumentów testowych przez nowe środowisko. Porównaj wyniki z przechowywanym odniesieniem. Zautomatyzuj tę kontrolę. Zapoznaj się z FAQ, aby uzyskać odpowiedzi na typowe pytania dotyczące automatycznego testowania regresji PII.

Te kroki pomagają. Ale też zwiększają nakład pracy. Usługa zarządzana zapewnia tę samą spójność bez dodatkowego wysiłku.

Podsumowanie

Spójna anonimizacja PII nie pojawia się w arkuszach produktowych. Ale staje się krytyczna, gdy audytorzy proszą o dowody.

Bez aktywnej dbałości własne narzędzia PII dryfują. Zmiany wersji tworzą ciche luki. Te luki wychodzą na jaw jako ustalenia audytu.

Usługi zarządzane zapewniają spójność domyślnie. Silnik działa z jednego miejsca. Środowiska użytkowników nie wpływają na wyniki. Dla zespołów zorientowanych na zgodność to bezpośrednia zaleta.

Źródła

Gotowy, aby chronić swoje dane?

Rozpocznij anonimizację PII z 285+ typami podmiotów w 48 językach.

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.