Подготовить обезличенный тестовый контур для компании на 60 человек с 1С:УТ и Битрикс24 — это 21 час работы и 25 200 ₽ по ставке администратора. Модельный инцидент, когда боевая выгрузка уезжает не туда с ноутбука подрядчика, обходится в 234 000 ₽ прямых расходов и останавливает проект на две недели. Соотношение примерно один к семи, и именно поэтому копия боевой базы «чтобы быстрее» — самая дорогая экономия в проекте автоматизации.
Возражение здесь всегда одно и то же: на выдуманных данных ошибка не воспроизведётся. Возражение частично верное, но адресовано не туда. Воспроизводимость дают структура таблиц, объём, распределения и редкие граничные записи — а не фамилия клиента и его настоящий номер телефона. Всё перечисленное сохраняется при обезличивании, если его делать осознанно, а не заменять все строки словом «Тест».
Ниже — что на самом деле лежит в копии базы, пять способов подготовить тестовые данные с трудозатратами и ценой, пять ошибок, после которых обезличивание не считается сделанным, и порядок на случай, когда без боевых данных действительно не обойтись. Все расчёты модельные, ставки взяты те же, что и в остальных материалах этого раздела: администратор — 1 200 ₽/ч, сотрудник — 900 ₽/ч, внешний инженер — 3 500 ₽/ч.
Что на самом деле уезжает вместе с копией базы
Когда говорят «дали разработчику копию базы», обычно имеют в виду таблицу клиентов. В действительности в архиве уезжает семь разных вещей, и персональные данные — только первая из них.
- Карточки контрагентов и контактных лиц: ФИО, мобильные телефоны, личные адреса электронной почты, адреса доставки — в модельной компании это 18 000 карточек.
- Цены и скидки по каждому контрагенту — коммерческая тайна, которая интересна конкуренту больше, чем телефоны.
- Комментарии менеджеров в сделках: «звонить только после 18, жена в декрете», «директор в разводе, счета на вторую фирму».
- Вложения к сделкам и договорам: сканы паспортов, доверенности, реквизиты счетов, подписанные акты.
- Логи обмена между системами — в них те же телефоны и адреса лежат открытым текстом, но про логи не вспоминают вообще.
- Учётные записи сотрудников с хешами паролей: если в компании пароли повторяются между системами, это готовый ключ к остальному контуру.
- Настройки обменов, а в них — токены и пароли интеграций. Копия базы очень часто оказывается ещё и копией секретов.
Архив, выгруженный «на один вечер», через год лежит в папке загрузок, в резервной копии ноутбука, в облачном диске подрядчика и в переписке, через которую его передавали. Ни один из этих экземпляров не отзывается и не удаляется по окончании работ, потому что о них никто не помнит. Единственный надёжный способ не думать про эти копии — не создавать их.
Схема: в центре прямоугольник «архив выгрузки базы», от него семь стрелок к блокам: «18 000 карточек контрагентов», «цены и скидки», «комментарии менеджеров», «вложения: сканы, доверенности», «логи обмена», «учётные записи с хешами паролей», «токены и пароли интеграций». Первый блок выделен и подписан «единственный, о котором обычно думают». Внизу подпись «Ниже по течению: папка загрузок, резервная копия ноутбука, облачный диск, переписка». Чертёжный стиль, подписи по-русски.
Пять способов подготовить тестовые данные
Способы отличаются не столько надёжностью, сколько тем, что остаётся от данных после обработки. Дешёвые способы сохраняют мало и ломают отладку, дорогие — сохраняют форму, но теряют реальные кривые случаи. Трудозатраты ниже — на первую настройку для базы из двух систем; повторные прогоны занимают минуты.
| Способ | Что происходит с данными | Первая настройка | Пригодность для отладки | Когда брать |
|---|---|---|---|---|
| Маскирование | Часть символов закрывается: +7 921 *--02. Формат и длина сохраняются, значение теряется | 4–6 ч (4 800–7 200 ₽) | Средняя: карточку видно, но по ней нельзя пройти сценарий с уведомлением | Демонстрации, скриншоты, обучение сотрудников |
| Подмена по словарю | Значение заменяется другим настоящим по форме: фамилия на фамилию, город на город, ИНН на синтетический с верной контрольной суммой | 8–12 ч (9 600–14 400 ₽) | Высокая: данные читаются как настоящие, проходят все проверки формата | Основной способ для отладки и приёмки |
| Перемешивание внутри столбца | Значения тасуются между строками: телефоны настоящие, но у чужих клиентов | 2–4 ч (2 400–4 800 ₽) | Низкая: рвутся связи карточка — заказ — адрес доставки | Почти никогда: дёшево и обратимо, данные остаются настоящими |
| Урезанная выборка | Берётся 2–5 % записей со всеми их связями, остальное не выгружается вообще | 4–6 ч (4 800–7 200 ₽) | Средняя сама по себе, высокая в связке со словарной подменой | Всегда как первый шаг: меньше данных — меньше ущерб |
| Синтетическая генерация | Данные создаются с нуля по описанию структуры, боевых записей нет ни одной | 24–40 ч (28 800–48 000 ₽) | Низкая по граничным случаям: генератор пишет то, что вы ему объяснили, а ломается всегда необъяснённое | Нагрузочное тестирование, демостенд для внешних показов |
Рабочая связка — четвёртый способ плюс второй: сначала урезанная выборка, потом словарная подмена по оставшимся записям. Выборка снижает цену ошибки на порядок (540 карточек вместо 18 000), подмена оставляет данные пригодными для отладки. Перемешивание в этот список включено только затем, чтобы его не выбирали: оно выглядит как обезличивание, но телефоны в базе остаются настоящими, а восстановить исходную привязку часто можно по датам документов.
Что обязано пережить обезличивание
Обезличивание считается удачным, если разработчик не заметил подмены, пока не открыл конкретную карточку. Для этого сохраняются пять свойств данных — именно их, а не значения, использует любая отладка.
- 1Распределения. Если 4 % контрагентов дают 60 % документов, эта диспропорция должна остаться: на равномерных данных не всплывают ни медленные запросы, ни переполненные списки в интерфейсе.
- 2Длины и форматы. Название на 180 символов ломает печатную форму, а не название на 20. Замена должна давать строку той же длины, а не «ООО Тест».
- 3Связи между таблицами. Карточка без заказов, заказ без адреса доставки, контактное лицо, привязанное к двум контрагентам, — если выборка режется по одной таблице, половина сценариев не запускается.
- 4Редкие граничные случаи. Номер без кода города, ИНН на 12 знаков у индивидуального предпринимателя, отрицательный остаток, контрагент с 400 договорами, документ 2019 года со старой ставкой НДС. Их отбирают вручную и переносят в выборку принудительно.
- 5Объём хотя бы одного среза. Если проверяется скорость, нужен полноразмерный справочник — его добивают синтетикой поверх урезанной выборки.
Граничные случаи — самая ценная часть работы и единственная, которую нельзя автоматизировать. Практический приём: перед первой выборкой попросить бухгалтера и старшего менеджера назвать по пять «проблемных» контрагентов и документов — это тот же разговор, что и при разборе качества данных перед внедрением, только короче. Это полчаса разговора, и он экономит недели переписки «у нас не воспроизводится».
Пять ошибок, после которых данные считаются необезличенными
Все пять встречаются регулярно, и все пять объединяет одно: смотрели на поля карточки клиента и не смотрели больше никуда.
- 1Обратимая замена
Телефон сдвинут на константу, фамилия зашифрована, а ключ лежит в том же скрипте рядом. Формально данные изменены, фактически восстанавливаются одной строчкой. Правило простое: если по обезличенной записи можно вернуть исходную, это не обезличивание, а кодирование, и защиты оно не даёт.
- 2Необезличенные комментарии и примечания
Поля «Комментарий», «Примечание», «Дополнительно» — свободный текст, куда менеджеры пишут второй телефон, имя жены и адрес склада. Скрипт их пропускает, потому что это не поле «Телефон». Такие поля либо чистятся целиком, либо заменяются заглушкой той же длины.
- 3Вложения
Сканы паспортов, доверенности и подписанные договоры лежат отдельно от таблиц и не обезличиваются в принципе. Правильное решение — не переносить их в тестовый контур вовсе, а положить два-три подготовленных файла-образца, если сценарий требует наличия вложения.
- 4Логи и очереди обмена
Журналы интеграций хранят тела запросов с телефонами и адресами. При копировании базы они уезжают вместе с ней, а чистят их в последнюю очередь или никогда. Логи старше недели в тестовом контуре не нужны — их проще удалить целиком.
- 5Данные, оставшиеся вне базы
Выгрузки в таблицах, файлы почтовых рассылок, экспорт для маркетплейса, резервная копия недельной давности в том же каталоге. Обезличили базу, а рядом лежит csv с 18 000 строк — и уезжает именно он, потому что он удобнее.
Проверка после прогона занимает 15 минут и делается поиском, а не глазами: ищем в контуре подстроку «+7 9», собаку почтового адреса, десять цифр подряд и слово «паспорт». Если что-то находится — скрипт дописывают, а не объясняют, почему это неопасно.
| Поле | В боевой базе | В тестовом контуре | Что сохранено |
|---|---|---|---|
| Наименование контрагента | Настоящее юрлицо | Название из словаря вымышленных | Длина строки, кавычки, форма собственности |
| ФИО контактного лица | Настоящее | Фамилия и имя из словаря | Три части, склоняемость, длина |
| Мобильный телефон | Настоящий номер | Номер из диапазона, не выданного операторам | Формат, код региона, длина |
| ИНН | Настоящий | Синтетический с верной контрольной суммой | 10 или 12 знаков, проходит проверку |
| Адрес доставки | Настоящий | Улица и дом из словаря того же города | Город и район — от них зависят маршруты |
| Цена и скидка | Настоящие | Сдвинуты на коэффициент, если контур уходит наружу | Соотношения и вся арифметика документов |
| Комментарий менеджера | Свободный текст | Заглушка той же длины | Только длина строки |
Сравнение двух карточек контрагента бок о бок, «Боевая база» и «Тестовый контур». Строки совпадают по позиции и длине: наименование, ФИО контактного лица, мобильный телефон, ИНН (10 или 12 знаков), адрес доставки, цена со скидкой, комментарий менеджера. Слева значения показаны сплошной заливкой-«текстом», справа — теми же по длине строками из словаря, телефон подписан «диапазон, не выданный операторам», ИНН подписан «синтетический, контрольная сумма верна», комментарий — «заглушка той же длины». Под карточками общая подпись «Сохранены длины, форматы и связи; заменены значения». Чертёжный стиль, подписи по-русски.
Скрипт обезличивания — такой же артефакт проекта, как код
Разовое обезличивание бессмысленно. Через месяц тестовый контур отстанет от боевого, в нём не будет новых полей и новых справочников, и кто-нибудь перезальёт его боевой копией — «один раз, срочно». Поэтому обезличивание оформляется не как задача, а как процедура с расписанием и владельцем.
- 1Расписание
Перезаливка раз в месяц и обязательно перед приёмкой этапа. Прогон занимает около 40 минут, из них 30 — восстановление копии и 10 — сам скрипт. Двенадцать перезаливок в год — это 8 часов и 9 600 ₽.
- 2Один владелец
Перезаливку делает администратор заказчика, а не подрядчик: доступ к боевой базе остаётся на вашей стороне, наружу отдаётся уже обработанный дамп. Это единственное распределение ролей, при котором боевую копию физически некому увезти.
- 3Хранение скрипта
Скрипт лежит в репозитории проекта рядом с кодом, а не в переписке и не на диске у конкретного инженера. Вместе с ним — словари подмены и список принудительно переносимых граничных записей.
- 4Обновление вместе со схемой
Добавили в CRM поле «второй телефон» — в тот же день дописали правило в скрипт. Правило встраивается в приёмку задачи: новое поле с персональными данными без правила обезличивания задачу не закрывает.
- 5Передача по акту
Скрипт и словари передаются заказчику при закрытии проекта наравне с исходным кодом и документацией. Иначе после ухода подрядчика контур перезаливать нечем, и всё возвращается к боевой копии.
В акте приёмки этапа полезна строка: «тестовый контур развёрнут из обезличенной выборки, скрипт обезличивания и словари переданы заказчику, дата последней перезаливки — такая-то». Это одна строка, но она превращает разговор о безопасности в проверяемый факт. Порядок приёмки и состав передаваемых артефактов мы разбирали отдельно в материале о приёмке работ.
Деньги: 25 200 ₽ подготовки против 234 000 ₽ инцидента
Модельная компания: оптовая торговля, 60 человек, 1С:УТ и Битрикс24, 18 000 карточек контрагентов, 260 000 строк документов за три года. Подрядчик дорабатывает обмен между системами, проект рассчитан на десять недель.
Три процента от 18 000 карточек — это 540 записей. Их хватает на отладку сценариев и не хватает на то, чтобы утечка стала событием федерального масштаба. Теперь другая сторона расчёта.
Модельный инцидент: на седьмой неделе проекта инженер подрядчика выгрузил боевую копию «чтобы воспроизвести ошибку с ценами» и положил её в свой облачный диск. Ссылка на папку оказалась открытой. Обнаружено это через месяц, когда клиент сообщил, что ему звонят с предложением тех же позиций по вашим ценам.
В расчёт сознательно не включены две вещи. Первая — отток клиентов: он есть, но его величина зависит от отрасли и от того, насколько быстро база всплывёт у конкурента, а выдумывать процент мы не будем. Вторая — административная ответственность: с 2025 года штрафы за утечку персональных данных для юридических лиц измеряются миллионами рублей и зависят от числа пострадавших и от того, первая это утечка или повторная. Актуальную редакцию нормы надо смотреть на день оценки риска — она менялась, и одна эта строка способна перекрыть весь бюджет проекта.
Столбиковая диаграмма из двух столбцов в рублях. Левый низкий столбец «Обезличенный контур, первый год — 34 800 ₽» с разбивкой на два сегмента: подготовка 25 200 ₽ и перезаливки 9 600 ₽. Правый высокий столбец «Один инцидент с боевой выгрузкой — 234 000 ₽» с разбивкой на шесть сегментов: разбор 14 400 ₽, смена ключей 16 800 ₽, юрист 60 000 ₽, обзвон 36 000 ₽, внешний инженер 84 000 ₽, пересборка контура 22 800 ₽. Между столбцами подпись «×6,7». Под правым столбцом пометка серым: «штраф и отток клиентов в расчёт не входят». Чертёжный стиль, подписи по-русски.
Когда без боевых данных не обойтись — и что записать в договор
Такие случаи есть, и делать вид, что их не бывает, — значит подтолкнуть команду к тихой выгрузке в обход правил. Ошибка воспроизводится только на конкретном документе; расхождение в сверке видно на реальных суммах; миграция проверяется на боевом объёме. Правильный ответ — не запрет, а четыре условия, при которых доступ выдаётся.
- 1Окно. Доступ открывается на конкретный интервал — например, с 10:00 до 14:00 одного дня, — и закрывается по будильнику, а не по завершении задачи. Задача может тянуться неделю, окно продлевается отдельной заявкой.
- 2Именная учётная запись. Не общая «integrator», а запись на конкретного инженера. Общая учётка делает невозможным и расследование, и отзыв: её нельзя выключить, не остановив работу всей команды. Матрицу «что просят и чего на самом деле достаточно» мы приводили в опорном материале раздела о доступах подрядчику.
- 3Работа внутри вашего контура, без выгрузки. Инженер подключается к вашему серверу через удалённый рабочий стол, права на экспорт и на копирование в буфер отключены. Смотреть можно, увозить нельзя.
- 4Наблюдение и запись. Сессия записывается или сопровождается вашим администратором, а факт доступа фиксируется в журнале: кто, когда, к каким данным, по какой задаче. Это же запись потом закрывает вопрос «а что он там смотрел».
Всё это должно быть не устной договорённостью, а текстом. Минимальный набор формулировок, который стоит перенести в договор и в поручение на обработку персональных данных, — пять пунктов. Подробный разбор самого поручения, включая обязательные по закону разделы, у нас вынесен в отдельный материал.
- Тестовый контур наполняется обезличенной выборкой; выгрузка боевой базы за пределы контура заказчика не производится.
- Обезличивание выполняет заказчик; подрядчик получает уже обработанный набор данных и не имеет доступа к исходному.
- Доступ к боевым данным выдаётся именными учётными записями на ограниченное время по письменной заявке с указанием задачи.
- Перечень лиц со стороны подрядчика, допущенных к данным, ведётся письменно и обновляется при смене состава команды.
- Скрипт обезличивания, словари и инструкция по перезаливке передаются заказчику при закрытии проекта и входят в состав результата работ.
Горизонтальная лента из пяти этапов с подписями: «Письменная заявка: задача, состав данных, срок» → «Именная учётная запись заведена» → «Окно 10:00–14:00, работа через удалённый рабочий стол, экспорт отключён» → «Сессия записана, факт доступа в журнале» → «Учётная запись отключена по будильнику». Под третьим этапом пометка «смотреть можно, увозить нельзя», под пятым — «отзыв по времени, а не по готовности задачи». Чертёжный стиль, подписи по-русски.
Когда обезличивание не нужно
Обезличивание — это работа, и она не всегда окупается. Четыре ситуации, в которых 25 200 ₽ и два с половиной дня лучше не тратить.
- В базе нет персональных данных и коммерческой тайны: справочник номенклатуры, техкарты, нормативы. Обезличивать нечего, кроме, возможно, закупочных цен.
- Подрядчик работает только внутри вашего контура и не имеет права экспорта. Тогда защиту даёт ограничение прав и запись сессий, а не подмена значений; это дешевле и надёжнее.
- Данных мало — до нескольких сотен записей, и они целиком укладываются в справочник на две страницы. Проще собрать тестовый набор руками за час, чем писать скрипт на 21 час.
- Проект длится неделю и не касается клиентской базы: правка печатной формы, настройка отчёта, доработка прав. Разворачивать процедуру ради одной задачи дороже, чем сама задача.
Во всех остальных случаях порядок ставится один раз и дальше живёт сам: 40 минут в месяц на перезаливку и одна строка в акте приёмки. Именно эта пропорция — несколько часов работы против шестизначного инцидента — и делает обезличивание не темой для дискуссии, а гигиеной, как резервное копирование.
Тестовый контур должен повторять форму ваших данных, а не их содержание. Всё, что нужно для отладки, — структура, объём и кривые случаи — переживает обезличивание. Не переживают его только те данные, из-за которых вы и боитесь утечки.

