Автоматизация обезличивания базы данных: 30 000 таблиц и 10 млрд строк в Петрович-Техе
Обезличивание базы данных с 30 000 таблиц и 10 миллиардами строк — возможно ли это автоматизировать? В «Петрович-Тех» столкнулись с такой задачей и успешно её решили. Системный аналитик Дима Левин рассказал, как команда справилась с масштабом, выявив 5500 полей с персональными данными и создав собст

Обезличивание базы данных с 30 000 таблиц и 10 миллиардами строк — возможно ли это автоматизировать? В «Петрович-Тех» столкнулись с такой задачей и успешно её решили. Системный аналитик Дима Левин рассказал, как команда справилась с масштабом, выявив 5500 полей с персональными данными и создав собственное решение на Python. Результат — безопасная копия данных для разработчиков и тестировщиков, включая внешних подрядчиков, без нарушения законодательства.
Как автоматизировали обезличивание 30 000+ таблиц
Проект начался с тщательного анализа структуры базы данных. Команда выявила 5500 полей, содержащих персональные данные: ФИО, адреса, телефоны, паспортные данные и другую чувствительную информацию. Для автоматизации обезличивания выбрали подход на основе правил и маскирования данных. Основной инструмент — собственное решение на Python, которое сканировало метаданные таблиц, определяло типы данных и применяло соответствующие алгоритмы замены. Например, для полей с именами генерировались случайные ФИО из заранее подготовленного словаря, для номеров телефонов — случайные последовательности с сохранением формата, для адресов — подстановка случайных улиц и домов из справочника. Важно было сохранить ссылочную целостность: если одна таблица ссылалась на другую, обезличивание проводилось согласованно, чтобы ключи оставались валидными.
Какие методы обезличивания используются для больших данных?
В проекте «Петрович-Тех» применялись несколько методов маскирования. Для полей с именами и фамилиями использовалась замена на случайные значения из словаря, что позволяло сохранить реалистичность. Номера телефонов заменялись случайными последовательностями, но формат (например, +7 XXX XXX-XX-XX) оставался неизменным. Адреса подменялись случайными улицами и домами из справочника, а даты рождения обобщались до года. Для полей с паспортными данными применялась полная замена на случайные, но валидные по структуре номера. Такой подход гарантировал, что данные остаются полезными для тестирования, но не содержат реальной информации.
Предыстория и контекст
Проблема работы с персональными данными в разработке и тестировании стоит остро во многих компаниях. С каждым годом требования к защите ПДн ужесточаются, а ответственность за утечки растёт. Использование реальных данных в тестовых средах или передача их подрядчикам сопряжены с рисками. Генерация синтетических данных не всегда подходит, так как не отражает все бизнес-нюансы и специфику реальных данных. Существуют готовые инструменты для анонимизации (например, от Oracle или Microsoft), но они часто несовместимы с отечественными СУБД или требуют значительной адаптации. Поэтому многие компании разрабатывают собственные решения.
Как именно происходит обезличивание?
Процесс обезличивания в «Петрович-Тех» состоит из нескольких этапов. Сначала проводится инвентаризация: автоматически сканируются все таблицы и столбцы, выявляются потенциально чувствительные поля по именам (например, columns с «name», «phone», «address») и типам данных. Затем для каждого поля выбирается метод маскирования: замена на случайное значение, перемешивание (shuffling) или обобщение (например, замена точной даты рождения на год). После этого запускается скрипт, который последовательно обрабатывает таблицы, учитывая зависимости по внешним ключам. Для больших таблиц (до 10 млрд строк) используется пакетная обработка с разбиением на чанки, чтобы не перегружать сервер. Результат — копия базы данных, в которой все ПДн заменены на фиктивные, но структура и статистические распределения (например, средний возраст) сохранены.
Технические подробности: как справились с масштабом
Основная сложность заключалась в объёме: 30 000 таблиц и 10 млрд строк. Прямой проход по всем таблицам занял бы недели. Поэтому команда оптимизировала процесс: сначала обрабатывались таблицы-справочники (словари), затем таблицы фактов. Для каждой таблицы создавался индекс по ключевым полям, что ускоряло замену. Использовалась многопоточность: несколько потоков параллельно обрабатывали разные таблицы. Для таблиц с миллиардами строк применялся инкрементальный подход — обезличивание шло по частям с фиксацией промежуточных результатов. В итоге полный цикл обработки всей базы занял несколько дней, что было приемлемо для ежемесячного обновления тестовой среды.
Кого затронет и как
Описанный опыт полезен для компаний, которые работают с большими объёмами персональных данных и нуждаются в создании безопасных копий для разработки и тестирования. В российских реалиях, где всё больше организаций переходят на отечественные СУБД (PostgreSQL Pro, Arenadata и др.), готовые западные решения недоступны, поэтому собственные разработки становятся необходимостью. Проект «Петрович-Тех» показывает, что автоматизация обезличивания возможна даже для гигантских баз данных, если правильно спланировать архитектуру и использовать пакетную обработку. Разработчики и тестировщики получают реалистичные данные без риска утечки, а бизнес — соблюдение закона.
Что будет дальше
Команда «Петрович-Тех» планирует расширить функциональность: добавить поддержку новых типов ПДн (например, биометрических данных), улучшить производительность за счёт использования более эффективных алгоритмов замены и интегрировать решение с CI/CD пайплайнами для автоматического обезличивания перед развёртыванием тестовых сред. Также рассматривается возможность публикации инструмента в открытом доступе, чтобы им могли воспользоваться другие компании.
Итог
Автоматизация обезличивания базы данных с 30 000 таблиц и 10 млрд строк — сложная, но решаемая задача. Опыт «Петрович-Тех» демонстрирует, что даже при огромных объёмах можно создать эффективное решение, сочетающее инвентаризацию, маскирование и пакетную обработку. Это позволяет безопасно работать с данными в разработке и тестировании, не нарушая законодательство о персональных данных.