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 працює в середовищах розробки, 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 — оновлена під час планового обслуговування
  • Production: 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 через середовищеспецифічні відмінності у результатах виявлення».

Стаття 32 GDPR вимагає відповідних технічних заходів. Правила EDPB щодо видалення PII вимагають послідовності та відтворюваності. Рівень 3% при обробці 100 000 документів на місяць означає 3 000 документів з непослідовними результатами щомісяця. Деякі — це хибні негативи. PII, яку staging виявив би, залишається у виробничих вихідних даних. Це порушення відповідності.

Після цього банк перейшов на managed SaaS. Знахідку аудиту було закрито. Дивіться нашу сторінку безпеки та відповідності, щоб дізнатись, як managed-конфігурації вирішують цю проблему.

Чому managed-сервіси відрізняються

Managed-сервіс запускає одну версію рушія. Всі користувачі одночасно використовують одну і ту саму версію. Оновлення моделей застосовуються з одного місця. Конфігурація також управляється з одного місця з повним журналом змін. Апаратне забезпечення користувача не впливає на результати.

Тому один і той самий документ, оброблений сьогодні, дає той самий результат наступного місяця. Якщо версія рушія змінилась, ця зміна зафіксована та версіонована.

Ключова відмінність — у журналі аудиту.

Журнал аудиту самостійного розгортання:

  • «Використано Presidio 2.2.35 зі spaCy en_core_web_lg 3.5.1 на Ubuntu 22.04.»
  • Чи була це та сама версія, що в staging? Невідомо.
  • Чи змінювалась модель з моменту обробки цього документа? Невідомо, якщо не відстежувалось.
  • Чи таке саме порогове значення, як при тестуванні? Залежить від управління конфігурацією.

Журнал аудиту managed-сервісу:

  • «Використано API anonym.legal, версія рушія 4.22.1, о 2025-03-15T14:22:31Z.»
  • Та сама версія для всіх користувачів? Так.
  • Чи змінювалась? Версії рушія закріплені. Версія 4.22.1 завжди означає той самий рушій.
  • Чи можна відтворити конфігурацію? Так. Ідентифікатор пресету зафіксований. Конфігурацію цієї версії можна отримати.

Журнал managed-сервісу зрозумілий. Журнал самостійного розгортання потребує ретельного відстеження, яке більшість команд ігнорує.

Як покращити послідовність при самостійному розгортанні

Якщо самостійне розгортання є обов'язковим, ви можете зменшити дрейф чотирма кроками.

По-перше, закріпіть версії моделей. Зафіксуйте точні версії моделей у всіх файлах розгортання. Заблокуйте автоматичні оновлення. Відстежуйте версії в системі контролю версій.

Далі, заморозьте образи контейнерів. Будуйте Docker-образи з точними версіями моделей, вбудованими в них. Позначайте кожен образ версією моделі, версією Presidio та датою. Не оновлюйте базові образи без попереднього тестування.

Також зберігайте конфігурацію в коді. Зберігайте всі налаштування Presidio у файлах, що відстежуються системою контролю версій. Це включає детектори, порогові значення оцінки та активні мови. Розгортайте конфігурацію разом із додатком.

Нарешті, тестуйте в різних середовищах. Після будь-якого оновлення запускайте фіксований набір тестових документів через нове середовище. Порівнюйте результати зі збереженим еталоном. Автоматизуйте цю перевірку. Дивіться FAQ для відповідей на поширені запитання про автоматизоване регресійне тестування PII.

Ці кроки допомагають. Але вони також додають роботи. Managed-сервіс забезпечує ту саму послідовність без додаткових зусиль.

Підсумок

Послідовне видалення PII не фігурує в рекламних матеріалах. Але воно стає критичним, коли аудитори вимагають доказів.

Без активної уваги самостійно розгорнуті інструменти PII дрейфують. Зміни версій вносять непомітні прогалини. Ці прогалини з'являються як знахідки аудиту.

Managed-сервіси забезпечують послідовність за замовчуванням. Рушій запускається з одного місця. Конфігурації користувачів не впливають на результати. Для команд, орієнтованих на відповідність, це пряма перевага.

Джерела

Готові захистити свої дані?

Почніть анонімізувати 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.