TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5390 2.68K
Автоматизация анонимизации в Symfony

В статье рассматривается создание пользовательского бандла для автоматизации анонимизации пользовательских данных в нескольких приложениях Symfony, что особенно актуально в контексте соблюдения требований GDPR.

Контекст проекта:
Компания столкнулась с задачей внедрения правил GDPR в нескольких приложениях, где хранятся данные пользователей. Основные требования включали:

🔸 Анонимизацию конкретного пользователя во всех приложениях через единый интерфейс, используя имя, фамилию, email или номер телефона.
🔸 Поиск пользователя и выбор для анонимизации.
🔸 Автоматическую анонимизацию пользователей, не обновлявшихся более трёх лет.

Проблемы:
🔹 Различные версии PHP и фреймворков в приложениях.
🔹 Несогласованность структур баз данных (например, поля "имя" могли называться по-разному).
🔹 Множественные таблицы с данными пользователей.
🔹 Необходимость единого подхода при разнообразных архитектурах приложений.

Решение:
Создан Symfony-бандл, устанавливаемый в каждое приложение, предоставляющий необходимые функции анонимизации. При установке бандла создаётся таблица для хранения запросов на анонимизацию. Добавляются два маршрута:

🔸 Search GET – поиск пользователя в базе данных по заданным параметрам.
🔸 Anonymize POST – создание записи запроса на анонимизацию для указанного пользователя.

Для определения, в каких сущностях и свойствах выполнять поиск и анонимизацию, используются атрибуты:

🔹 Search – определяет, какие поля использовать для фильтрации и форматирования вывода.
🔹 Anonymize – применяется к полям, требующим анонимизации, с указанием типа и значения замены.

Анонимизация коллекций осуществляется рекурсивно для всех элементов.

Запросы на анонимизацию обрабатываются асинхронно с помощью команды cron, которая проверяет и выполняет их.

Единый интерфейс:

🔸 Создано приложение-шлюз, получающее запросы от фронтенда и перенаправляющее их в приложения с установленным бандлом или реализованными API для поиска и анонимизации.
🔸 Для обеспечения безопасности доступ к запросам анонимизации контролируется через отдельное приложение, хранящее информацию о доступе пользователей, и используются уникальные токены для каждого приложения.

Автоматическая анонимизация:
🔹 Введён атрибут AutomaticAnonymization, применяемый к основному классу пользователя в каждом приложении.
🔹 Он указывает поле с датой последнего обновления.
🔹 Ежедневно запускается команда, анализирующая пользователей, не обновлявшихся более трёх лет, и создающая для них запросы на анонимизацию.

Ограничения:
🔸 При работе с приложениями на PHP 7.4, не поддерживающими атрибуты, использовались аннотации.
🔸 Для предотвращения перегрузки базы данных ограничены партии анонимизации до 1000 записей за запуск.
🔸 Реализован механизм резервного копирования: оригинальные данные сохраняются в зашифрованном виде и автоматически удаляются через месяц.

🔗 Medium

Библиотека пхпшника
  • 👍 2
More from @phpproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 30, 2026🐸 Библиотека пхпшника
  3. Sep 29, 2026💡 Laravel-фича, которая спасает тесты от случайных запросов Http::preventStrayRequests()…
  4. Sep 28, 2026🔐 ramsey/uuid — UUID без самописного кода Библиотека помогает генерировать, парсить и вал…
  5. Sep 28, 2026🤔 Что выведет код? ❤️ — 1 🔥 — 2 👍 — 12 👾 — Fatal error 👇 Правильный ответ (нажми, что…
  6. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →