Перейти к содержимому

Защита данных: маскирование, журналы, канарейки

3 мин чтения

База клиентов уходит не из-за взлома, а вместе с человеком: перед уходом выгружают файл, фотографируют экран, диктуют номера. Полностью это не предотвращает никто, поэтому задача ставится иначе — сократить круг тех, кто видит данные, и сделать так, чтобы по утёкшему файлу можно было назвать конкретного сотрудника.

Телефон и адрес по умолчанию скрыты

Оператору для работы номер целиком не нужен: набирает не он, а сервер телефонии. Поэтому телефон приходит замаскированным — +996 555 ***-*6. Последняя цифра остаётся намеренно: по ней сверяют, что говорят с тем же клиентом, а восстановить номер по одной цифре нельзя. Адрес обрезается до первой части: «Бишкек, …».

Заказы → карточка глазами оператора

Телефон+996 555 ***-*6Позвонить

АдресБишкек, …

Полный адрес виден логисту и складу — тем, кто собирает посылку.

Маскирование делает сервер, а не браузер: полного номера в ответе просто нет, и его не достать из отладчика. Хвост оставлен намеренно — по нему оператор сверяет, что звонит тому же клиенту. Кнопка набора работает: соединение поднимает сервер.

Маскирование снимают три отдельных права: Видеть телефон целиком, Видеть адрес целиком и Выгружать ПД без маскирования. Их разделили не ради строгости: логисту нужен адрес и не нужен телефон, оператору отдела продаж — наоборот, а выгрузка не нужна почти никому.

Три журнала

Аудит
ВкладкаЧто в ней
ДействияИзменения сущностей и административные операции: кто создал пользователя, поменял статус, правил настройки, сбросил второй фактор.
Доступ к даннымКто и какие персональные поля видел раскрытыми: открытая карточка, звонок, прослушанная запись, вложение, печать, выгрузка.
ВыгрузкиКаждая выгрузка со своей меткой, числом строк, набором колонок и признаком подставленной канарейки.

Во второй журнал запись попадает не по нажатию кнопки «показать телефон», а по факту: открыл карточку и увидел раскрытый номер — запись есть. Звонок тоже считается обращением к персональным данным, даже если оператор номера не видел: он всё равно поговорил с человеком.

Журналы листаются от свежего к старому и фильтруются по сотруднику и периоду. Доступ к разделу есть у владельца и руководителя колл-центра — тем, кто в нём упомянут, он не открыт. Кому что доступно, разобрано в Ролях и правах.

Лимиты выгрузок и водяной знак

Выгрузки → Заказы в файл
Максимум 10 000 строк за разОсталось выгрузок в этом часе: 7 из 10Канарейка подставляется
Период создания заказаСтатусы — всеКолонки — выбрано 9
Скачать CSVМетка напечатана в подвале файла и сохранена в журнале аудита
Лимиты видны до нажатия кнопки: десять тысяч строк за раз и десять выгрузок в час на человека. Зелёная строка означает, что контрольные номера заведены и в файл подставится заказ-канарейка; жёлтая — что доказывать утечку будет нечем.
  • Не больше 10 000 строк за раз. Ограничение смысловое, а не техническое: рабочих сценариев с большим объёмом нет, зато «выгрузить всё» выглядит ровно так.
  • Не больше 10 выгрузок в час на человека. Обойти лимит, нарезая базу фильтрами, можно — но это требует усилий и оставляет десять записей в журнале вместо одной.
  • Метка в каждом файле. В подвале стоит строка вида Выгрузка VX-3F9A21C4 · petrov · 14.03.2026 18:20 · строк: 812. В журнале лежит полный знак, в файле — его начало.

Метку видно, и её можно удалить — расчёт не на скрытность. Порядок строк в файле зафиксирован, поэтому даже по фрагменту без подвала выгрузка находится в журнале однозначно.

Контрольные номера

Настоящая ловушка — не метка, а подставной заказ. В настройках проекта перечисляются реальные номера под вашим контролем:

НастройкиПроектКонтрольные номера

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

Аудит → Выгрузки
ВремяКтоЧтоФорматСтрокМеткаКанарейка
12.08 18:41petrovaordersCSV4 812VX-6A1F09C4есть
12.08 12:03ivanovordersCSV120VX-B0C41D77есть
По метке из утёкшего файла строка находится однозначно: видно, кто выгрузил, когда, сколько строк и был ли в файле контрольный номер. Звонок на канареечный номер сужает круг до одной строки этого журнала.

Звонок на контрольный номер — это доказанный факт утечки. Дальше журнал выгрузок показывает, в какие файлы попадал этот номер, а журнал доступа к данным — кто видел эти заказы. Пока список номеров пуст, ловушки нет.

Печать бланков

Бланк кладут в посылку: по нему склад собирает заказ, а курьер знает адрес и сумму к получению. Печать — это тот же вынос персональных данных, только на бумагу, поэтому она устроена как выгрузка: отдельное право Печать бланков заказа, запись в журнале действий и запись в журнале доступа к данным.

За одно нажатие печатается не больше ста бланков. Без потолка печать была бы способом унести базу мимо права на выгрузку. Что попадает в бланк и как его печатают из списка, описано в Доставке, треках и отгрузке, а сами колонки выгрузки — в Списке заказов.

Не нашли ответ

Напишите на hello@xe.kg — ответим и дополним статью. Так она и растёт.