anonym.legal

By · Last updated 2026-06-05

Назад към блогаТехнически

Анонимизиране на JSON логове по GDPR: Запазете отстраняването на грешки

Приложните журнали тихо натрупват имейли на потребители, IP адреси и номера на сметки. Ето как да споделяте журнали с трети страни, изпълнители и платформи за наблюдение, без да нарушавате GDPR.

June 5, 20267 мин. четене
JSON logsGDPR complianceDevOps privacylog anonymizationdata minimization

PII се крие в приложните журнали

Журналите на приложенията са една от най-пренебрегваните GDPR повърхности в инженерството. Не защото инженерите пренебрегват закона. Защото данните на потребителите попадат в журналните файлове по случайност.

Един JSON журнал за заявка може да съдържа четири полета с PII:

{
  "timestamp": "2025-11-14T09:22:13Z",
  "level": "ERROR",
  "endpoint": "/api/users/profile",
  "user_email": "sarah.johnson@company.com",
  "client_ip": "82.123.45.67",
  "user_agent": "Mozilla/5.0",
  "error": "ValidationError: phone format",
  "input_value": "+49 176 1234 5678"
}

Този единствен запис съдържа имейл, IP адрес и телефонен номер. Умножете го по милиони дневни API извиквания. Резултатът е мащабна дейност с PII. Изисква правно основание, ограничения и контрол.

Споделянето на журнали с трети страни повишава GDPR риска

Екипите споделят журнални файлове с външни страни през цялото време:

  • Фирми за тестване на проникване получават записи за картографиране на поведението на приложението
  • Външни консултанти използват примерни журнали за намиране на бавни точки
  • Платформи за журнали (Elastic, Datadog, Splunk) получават пълни изходни потоци
  • SRE изпълнители получават достъп до записи по време на инциденти
  • Dev екипи в други правни субекти получават файлове за отстраняване на грешки

Всяко споделяне повдига въпроси по член 28 от GDPR. Получателят обработващ ли е? Има ли Споразумение за обработване на данни? Имат ли правно основание да виждат данните на потребителите в тези файлове?

Платформите за журнали са чест пропуск. Изпращането на изходни данни с реални имейли и IP адреси на потребители към Elastic Cloud или Datadog създава връзка за обработване. Тази връзка изисква DPA, стандартни клаузи и инструмент за прехвърляне, ако платформата се намира извън ЕС. Всяко от тях отнема време и правен преглед.

По-простият начин: изчистете данните на потребителите преди файловете да напуснат вашата система. Прочетете нашия преглед на съответствието за пълните правила по член 28.

Защо JSON структурата прави засичането трудно

JSON журналните файлове варират по структура. Общото сканиране на текст не е достатъчно.

Дълбочина на влагане: Данните на потребителите се появяват на произволна дълбочина. Полето request.headers.x-forwarded-for съдържа IP адреси. Полето response.body.errors[0].field_value може да съдържа потребителски вход. Плоското сканиране на текст пропуска полета, заровени в вложени пътища.

Несъответстващи схеми: Всеки API endpoint създава свои изходни форми. Auth файловете изглеждат различно от файловете за плащания. Файловете за актуализиране на профила изглеждат различно и от двете. Подход с фиксиран път пропуска данни на потребители, появяващи се на необичайни пътища в контексти на грешки.

Технически стойности, смесени с PII: Стекови следи, кодове на грешки и времеви маркери трябва да остават непокътнати. Прекомерното изчистване заличава необходими полета и прави файла безполезен.

Правилният подход е засичане, базирано на съдържанието. Намерете данните на потребителите по това какво са -- имейл образец, IP формат, наименован обект -- а не по това къде се намират в структурата. Това обработва променливи схеми без нужда от настройка за всеки endpoint.

Последователната замяна запазва журналите полезни

Ключовото изискване е референтна цялост. Ако sarah.johnson@company.com се появява в 47 записа в верига на заявки, всички 47 трябва да се съпоставят с една и съща стойност.

Правила за съпоставяне:

  • sarah.johnson@company.com --> user1@example.com (една стойност в целия файл)
  • 82.123.45.67 --> 192.0.2.1 (IP за документация RFC 5737 -- очевидно не е реален)
  • +49 176 1234 5678 --> +49 XXX XXX XXXX (маскиран)

С това съпоставяне, разработчик може да проследи user1@example.com в 47 записа, да реконструира веригата на заявките и да отстрани грешката -- без да вижда реални данни на потребителите.

Тези полета с метаданни остават непроменени:

  • Времеви маркери (не са потребителски данни)
  • Кодове и типове грешки (не са потребителски данни)
  • Стекови следи (може да съдържат технически ID, не са потребителски данни)
  • HTTP методи, пътища, кодове за статус (не са потребителски данни)
  • Метрични стойности и данни за латентност (не са потребителски данни)

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

Случай на употреба: Споделяне на журнали за тест на проникване

SaaS компания проведе тримесечен преглед на сигурността с外部 екип за тест на проникване. Обхватът изисква 90 дни производствени API изходни данни за картографиране на auth потоците и анализ на образците на грешки.

Суров обем: 180 MB JSON файлове. Брой PII: 4 200 уникални имейла на потребители, 1 800 уникални IP адреси, 340 частични номера на сметки в контексти на грешки.

Без предварително изчистване на данните на потребителите, споделянето на тези файлове би изисквало:

  • DPA с фирмата за тест на проникване
  • Инструмент за прехвърляне по член 46 от GDPR (фирмата се намираше извън ЕС)
  • Преглед на уведомленията до субектите на данни

Всяко от тях добавя правна работа и време.

С приложено изчистване на PII:

  • Време на обработката: 25 минути за 180 MB
  • Изход: 180 MB структурно идентични файлове, всички имейли и IP адреси заменени с безопасни стойности
  • Резултат: екипът за тест на проникване получи пълен контекст; нито едни реални данни на потребители не стигнаха до тях
  • GDPR резултат: не е необходим DPA -- изчистеният изход не е потребителски данни по GDPR

Вижте нашите ЧЗВ за чести въпроси относно това, което се счита за анонимно по GDPR.

Интегриране на изчистването на PII в CI/CD

За екипи, споделящи изходни данни редовно, тази стъпка може да работи в рамките на съществуващите тръбопроводи.

Ротация на журнали:

  1. Скриптът за ротация се изпълнява нощно
  2. Стъпката за изчистване се изпълнява преди архивиране или изпращане до платформи за журнали
  3. Изчистените файлове отиват към外部 системи
  4. Оригиналните файлове остават вътрешни с пълно задържане

Скрипт преди споделяне:

  1. Инженерът трябва да сподели примерни данни с изпълнител
  2. Изпълнява скрипта: input=raw-logs/ output=clean-logs/
  3. Споделя папката clean-logs/
  4. Не е необходим ръчен преглед на PII

Подход с sidecar:

  1. Sidecar изчиства изходния поток преди препращане
  2. Изчистването в реално време поддържа полезността за анализ на журнали
  3. Платформата получава нула реални данни на потребители

Интегриране с политика за задържане

Член 5(1)(д) от GDPR изисква ограничаване на съхранението. Изчистването на PII се вписва в всяка политика за задържане.

  • Суровите изходни данни се пазят 7 дни (за ежедневна debug работа)
  • Изчистените версии се пазят 90 дни (за анализ на тенденции и преглед на инциденти)
  • Стъпката за изчистване се изпълнява на 7-ия ден

Това удовлетворява ограничаването на съхранението. Елиминира риска от дълготрайно пазене на суровите изходни данни.

Източници

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

Започнете анонимизация на 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.