anonym.legal

By · Last updated 2026-06-05

Назад към блогаGDPR и съответствие

Собственото хостване на PII инструменти не преминава одити за съответствие

spaCy 3.4.4 произвежда различни NER резултати от spaCy 3.5.1. Финансова институция открива, че 3% от документите са анонимизирани по различен начин в staging спрямо производство.

June 5, 20266 мин. четене
compliance auditenvironment consistencyspaCy versionsself-hosted PIIreproducible anonymization

Защо собствено хостваните PII инструменти не преминават одити за съответствие

GDPR изисква доказателства. Трябва да покажете, че премахването на PII данни е извършено по един и същ начин всеки път. Одиторите на DPA го проверяват. Те искат да видят ясен, последователен метод, прилаган към всички данни.

Собствено хостваният Presidio има реален проблем тук. Не е въпрос на конфигурация. Това е основно ограничение на самостоятелно хостваните NLP инструменти.

Какво е дрейф на средата?

Собствено хостваният Presidio работи в dev, staging и производство. Всяко от тях може да се държи по различен начин. Така един и същ вход може да произвежда различни резултати при всеки.

Това се нарича дрейф на средата. Има четири основни причини.

Дрейф на версията на модела

Моделите spaCy са версионирани. Моделите en_core_web_lg 3.4.4 и en_core_web_lg 3.5.1 са обучени върху различни данни. Те използват и различни архитектури. Затова един и същ документ може да даде различни NER резултати с всяка версия.

Честа настройка изглежда така:

  • Dev: en_core_web_lg 3.4.4 -- инсталирана при старта на проекта
  • Staging: en_core_web_lg 3.5.0 -- актуализирана по време на рутинна работа
  • Производство: en_core_web_lg 3.5.1 -- актуализирана по время на пач за сигурност

Това са три конфигурации. Три версии на модела. Три различни резултата от разпознаването. Тестовете преминават в staging. Но производството изпълнява различен модел. Затова пропастта остава скрита.

Дрейф на версията на зависимостта

spaCy 3.4.x и 3.5.x се различават в начина, по който разделят изреченията. Тази промяна влияе на начина, по който имената се намират близо до граници на изречения. Тези промени са в бележките за версиите на spaCy. Но повечето екипи не ги проверяват за въздействие върху PII.

Дрейф на конфигурацията

Праговете на оценка, зададени при разработката, може да не се пренесат в производство. Персонализираните списъци с думи може да се различават между конфигурациите. Тези пропуски са чести. Рядко се проследяват. Вижте нашето ръководство за съответствие с GDPR за това какво търсят одиторите.

Различия в хардуера

Математиката в NLP моделите не е идентична при всички CPU и GPU. Потребителски лаптоп и сървър могат да дадат леко различни резултати от оценките. Затова някои имена могат да бъдат намерени на едно устройство, но не на друго.

Реална одитна констатация

Една банка тества своята собствено хостваната Presidio настройка.

Тестова конфигурация: Presidio с spaCy 3.4.4 на staging клъстера. Производствена конфигурация: Presidio с spaCy 3.5.1 на производствения клъстер.

Те пуснаха един и същ набор от документи и през двете. След това сравниха резултатите. Констатацията: 3% от документите имаха различни резултати за премахване на PII. Някои имена бяха уловени в staging, но не и в производство. Някои имаха различни засечени диапазони на текст.

Одитната констатация беше директна: "Фирмата не може да докаже последователно прилагане на технически мерки за премахване на PII поради специфични за конфигурацията разлики в резултата от разпознаването."

GDPR Член 32 изисква подходящи технически мерки. Правилата на EDPB за премахване на PII изискват последователност и повторяемост. Процент от 3% при 100 000 документа на месец означава 3 000 документа с непоследователни резултати всеки месец. Някои са фалшиво отрицателни. PII данни, които staging би уловил, остават в производствения резултат. Това е провал на съответствието.

Банката след това премина към управляван SaaS. Одитната констатация беше затворена. Вижте нашата страница за сигурност и съответствие за начина, по който управляваните конфигурации се справят с това.

Защо управляваните услуги са различни

Управляваната услуга изпълнява един двигател. Всички потребители изпълняват едновременно същата версия. Актуализациите на модели се прилагат от едно място. Конфигурацията се управлява от едно място с пълен журнал на промените. Хардуерът на потребителите не влияе на резултатите.

Така един и същ документ, обработен днес, дава същия резултат следващия месец. Ако версията на двигателя се е променила, тази промяна е записана и версионирана.

Разликата в одиторската пътека е ключова.

Одиторска пътека при собствено хостване:

  • "Използван Presidio 2.2.35 с spaCy en_core_web_lg 3.5.1 на Ubuntu 22.04."
  • Беше ли това същата версия като в staging? Неизвестно.
  • Сменил ли се е моделът от момента, в който е обработен този документ? Неизвестно освен ако не е проследено.
  • Прагът на оценката същият ли е като при тестването? Зависи от управлението на конфигурацията.

Одиторска пътека при управлявана услуга:

  • "Използван anonym.legal API, версия на двигателя 4.22.1, в 2025-03-15T14:22:31Z."
  • Същата версия за всички потребители? Да.
  • Сменила ли се е? Версиите на двигателя са закрепени. Версия 4.22.1 винаги означава същия двигател.
  • Повторяема ли е конфигурацията? Да. Идентификаторът на предварителната настройка е записан. Конфигурацията при тази версия може да бъде извлечена.

Управляваната пътека е ясна. Пътеката при собствено хостване изисква внимателно проследяване, което повечето екипи пропускат.

Как да подобрите последователността при собствено хостване

Ако собственото хостване е задължително, можете да намалите дрейфа с четири стъпки.

Първо, закрепете версиите на моделите. Заключете точните версии на модели във всички файлове за разгръщане. Блокирайте автоматичните актуализации. Проследявайте версиите в контрол на изходния код.

След това, замразете образите на контейнерите. Изградете Docker образи с точни версии на модели, вградени в тях. Маркирайте всеки образ с версията на модела, версията на Presidio и датата. Не актуализирайте базовите образи без предварително тестване.

Пазете конфигурацията в код. Съхранявайте всички настройки на Presidio в файлове, проследявани в контрол на версиите. Това включва детектори, прагове на оценка и активни езици. Разгръщайте конфигурацията заедно с приложението.

Накрая, тествайте в различни конфигурации. След всяка актуализация, пуснете фиксиран набор от тестови документи през новата конфигурация. Сравнете резултатите с съхранена референция. Автоматизирайте тази проверка. Вижте FAQ за чести въпроси относно автоматизираното PII регресионно тестване.

Тези стъпки помагат. Но добавят и работа. Управляваната услуга предоставя същата последователност без допълнителните усилия.

Заключение

Последователното премахване на PII данни не се вижда в продуктовите листи. Но става критично, когато одиторите поискат доказателства.

Без активна грижа, собствено хостваните PII инструменти дрейфват. Промените в версиите добавят тихи пропуски. Тези пропуски се появяват като одитни констатации.

Управляваните услуги предоставят последователност по подразбиране. Двигателят работи от едно място. Конфигурациите на потребителите не влияят на резултатите. За екипи, фокусирани върху съответствието, това е директно предимство.

Източници

Готови ли сте да защитите данните си?

Започнете анонимизация на PII с 285+ типа субекти на 48 езика.

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.