Анонимайзер

Анонимайзер — это инструмент, позволяющий анонимизировать данные с помощью модуля PostgreSQL — pg_anon. Анонимизация поможет решить проблему утечки данных при передаче БД из продуктивной среды в тестовую.

Весь процесс анонимизации можно поэтапно выполнить в Платформе:

Внимание

Анонимайзер доступен только по дополнительной лицензии. Для приобретения дополнительной лицензии обратитесь в службу поддержки: support@tantorlabs.ru.

Чтобы открыть страницу «Анонимайзер», в левой панели нажмите на кнопку «Модули» → «Анонимайзер».

Примечание

Скорость работы Анонимайзера и уровень загрузки системы во время его работы зависит от размера исходной базы данных, глубины сканирования при создании словаря и набора правил при сканировании. Если вы работаете с большими базами данных, мы рекомендуем устанавливать Платформу на сервере с высокопроизводительными характеристиками.

Подробнее структура и метод работы pg_anon описаны в разделе «Работа pg_anon» и в документации СУБД Tantor.

Доступы

На вкладке «Доступы» вы можете назначить группам пользователей следующие роли:

  • Администратор по разведке — пользователи группы смогут настраивать мета-словари, запускать процесс и контролировать результат сканирования данных. Пользователям доступны следующие разделы:

    • Источники данных;

    • Словари;

    • Сканирование;

    • Предпросмотр.

  • Администратор по анонимизации — пользователи группы смогут проверять полноту разметки, запускать процесс анонимизации с использованием созданного администратором по разведке данных мета-словаря и контролировать результат анонимизации данных. Пользователям доступны следующие разделы:

    • Источники данных;

    • Словари;

    • Сканирование;

    • Предпросмотр;

    • Дампы;

    • Ресторы.

Чтобы назначить права группе:

  • Нажмите на кнопку «Добавить права для группы» в центре страницы, если ни одной группе еще не назначены права, или в правом верхнем углу, если есть группы с назначенными правами.

  • В открывшемся окне выберите группу и уровень прав доступа.

  • Нажмите на кнопку «Добавить права».

Рассмотрим информацию на странице:

  1. Фильтр по правам доступа.

  2. Кнопка добавления прав для группы.

  3. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  4. Меню группы со следующими опциями:

    • «Редактировать» — позволяет изменить доступы для группы.

    • «Забрать права» — позволяет удалить права для группы. В открывшемся окне в текстовом поле введите «удалить» и нажмите на кнопку «Удалить».

Подключение к источнику данных

Источник данных — это исходная база данных, сенситивная (конфиденциальная) часть которой будет анонимизирована. Базу данных, часть которой анонимизирована, будем называть целевой БД.

Управлять источниками данных можно на вкладке «Источники данных». В ней перечислены все подключенные источники данных и информация о них:

  • название источника данных,

  • база данных источника,

  • дата и время последнего сканирования,

  • статус сканирования,

  • дата и время создания последнего дампа,

  • статус создания дампа.

Рассмотрим информацию на странице:

  1. Поисковая строка, с помощью которой можно искать источники данных по названиям.

  2. Кнопка для обновления страницы.

  3. Фильтр по статусу процесса сканирования и создания дампа.

  4. Кнопка создания нового источника данных.

  5. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  6. Меню источника данных, с помощью которого можно:

    • открыть страницу с дополнительной информацией об источнике данных. Также открыть эту страницу можно, кликнув на строку определённого источника данных;

    • переименовать источник данных;

    • отредактировать данные подключения;

    • удалить источник данных.

Добавление источника данных

Чтобы подключиться, выполните следующие действия:

  1. Кликните по кнопке «Добавить источник данных» в центре страницы или «Новый источник данных» в правом верхнем углу, если на странице уже есть другие источники данных.

  2. Заполните следующие поля:

    • название источника данных,

    • FQDN или IP сервера БД,

    • порт соединения с БД,

    • название БД,

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

      • изменение статуса сканирования, дампа или восстановления на «Завершено»;

      • изменение статуса сканирования, дампа или восстановления на «Ошибка».

  3. Если необходимо, добавьте дополнительные параметры, которые ускорят процесс сканирования источника данных:

    • число процессов, выполняющих операции в БД;

    • количество подключений к БД на каждый процесс;

    • путь к pg_dump — PostgreSQL-расширению, отвечающему за резервное копирование СУБД, с помощью которого будет создаваться дамп исходной БД с анонимизированными данными.

  4. После заполнения всех полей нажмите на «Сохранить».

Cловари

Словарь — набор правил, описывающих, где искать определённую информацию в базе данных.

Существует три вида словарей:

  • Сенситивные — правила, описывающие, в какой части БД находятся конфиденциальные данные.

  • Несенситивные — правила, описывающие, в какой части БД не находятся конфиденциальные данные.

  • Мета-словари — правила, которые не описывают, где конкретно находятся секретные данные, но примерно описывают тип и содержание данных, которые могут таковыми являться. Вы можете воспользоваться предустановленным мета-словарем или создать пользовательский на его основе.

Кроме информации о содержимом полей и описания полей, в которых лежат конфиденциальные или не конфиденциальные данные, в словарях содержатся функции анонимизации, которые описывают правила процесса анонимизации данных (функции можно посмотреть здесь).

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

Управлять словарями можно на вкладке «Словари», в которой находится список всех предустановленных и созданных словарей и информация о них:

  • название словаря;

  • тип: предустановленный или пользовательский;

  • статус процесса сканирования;

  • вариант или вид словаря: сенситивный, несенситивный и мета-словарь;

  • имя пользователя, создавшего словарь;

  • дата и время последних изменений словаря.

Рассмотрим информацию на вкладке:

  1. Поисковая строка, с помощью которой словари можно искать по названию.

  2. Словари можно фильтровать по следующим параметрам:

    • тип: предустановленный или пользовательский;

    • вариант: сенситивный, несенситивный или мета.

  3. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  4. С помощью меню словарей можно:

    • открыть словарь, чтобы просмотреть и отредактироватьсуществующие правила или добавить новые;

      Кнопка «Сохранить как…» (цифра 1 на рисунке выше) создаёт новый словарь с таким же кодом. С помощью кнопки «Сохранить изменения» (цифра 2 на рисунке выше) можно сохранить изменённый код словаря.

    • переименовать словарь — переименовать можно только пользовательский словарь;

    • дублировать словарь — создать новый словарь на основе данного;

    • удалить словарь — удалить можно только пользовательский словарь.

На странице есть один предустановленный мета-словарь — Универсальный. Его можно использовать, если у вас нет словарей для анонимизации. С помощью этого словаря после сканирования создастся необходимый для анонимизации сенситивный словарь.

Сенситивный или мета-словарь можно создать вручную. Несенситивный словарь создать нельзя — он появляется только в результате сканирования.

Создание словаря

Чтобы добавить словарь, нажмите на кнопку «Создать словарь».

В появившемся модальном окне заполните:

  • название словаря;

  • вариант словаря — сенситивный или мета-словарь.

Сканирование

Сканирование («разведка») — процесс поиска сенситивной информации в исходной базе данных. Этот шаг можно пропустить, если у вас уже есть необходимый сенситивный словарь. Сканирование нужно запускать в следующих случаях:

  • у вас нет сенситивного словаря;

  • у вас есть сенситивный словарь, но вы хотите его улучшить или создать новый на его основе;

  • вы хотите получить несенситивный словарь для ускорения процесса анонимизации.

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

Управлять сканированием можно на вкладки «Сканирование». Чтобы перейти на эту вкладку, кликните на строку определённого источника данных и перейдите на вкладку «Сканирование».

На этой странице находится список запущенных сканирований для выбранного источника данных и информация о них:

  • название сканирования;

  • просканированная база данных;

  • использованные при сканировании словари;

  • глубина сканирования;

  • статус процесса сканирования:

    • Неизвестно,

    • Завершено,

    • Ошибка,

    • В процессе,

    • Запуск.

  • дата и время запуска сканирования;

  • дата и время завершения процесса сканирования;

  • почта пользователя, запустившего сканирование.

Чтобы запустить сканирование, нажмите на кнопку «Добавить сканирование» в центре страницы или «Новое сканирование» в правом верхнем углу, если на странице уже есть сканирования, и пройдите визард настройки процесса сканирования:

1 шаг:

  • Введите название сканирования.

  • Выберите тип сканирования: частичный или полный. Частичный тип подойдёт, если у вас уже есть несенситивный словарь, описывающий, какую часть БД сканировать не нужно. Если несенситивного словаря нет, нужно будет пройти по всей БД.

  • Укажите глубину сканирования — количество строк, на котором должно сработать одно правило из словаря. Глубина сканирования заполняется, если вы выбрали частичный тип сканирования.

  • Введите название сенситивного словаря, который получится в результате сканирования.

  • Введите название несенситивного словаря, который получится в результате сканирования (если нужен).

2 шаг:

  • Выберите мета-словарь для сканирования.

3 шаг (опционально):

  • Выберите сенситивный словарь для сканирования.

4 шаг (опционально):

  • Выберите несенситивный словарь для сканирования.

Примечание

Если сканирование запустить не получилось, возможно, у pg_anon нет разрешения подключаться к источнику данных через tcp/ip соединение.

Чтобы это проверить, посмотрите содержимое файла pg_hba.conf:

cat /var/lib/postgresql/tantor-se-16/data/pg_hba.conf

В выводе должна быть следующая строка (вместо «xxx.xxx.xxx.xxx» должен быть IP-адрес сервера, на котором находится источник данных, а вместо «yy» - маска сети):

host all all xxx.xxx.xxx.xxx/yy scram-sha-256

Если её нет, отредактируйте файл pg_hba.conf следующей командой, поменяв в ней «xxx.xxx.xxx.xxx» на нужный IP, а «yy» на маску сети:

echo 'host all all xxx.xxx.xxx.xxx/yy scram-sha-256' >> /var/lib/postgresql/tantor-se-16/data/pg_hba.conf

Рассмотрим информацию на странице:

  1. Поисковая строка, с помощью которой сканирования можно искать по названию.

  2. Кнопка обновления для быстрого просмотра результатов изменений.

  3. Фильтр по статусу сканирования:

    • Неизвестно,

    • Завершено,

    • Ошибка,

    • В процессе,

    • Запуск.

  4. Кнопка создания нового сканирования.

  5. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  6. С помощью меню сканирования можно:

    • запустить сканирование;

      Примечание

      Запустить сканирование можно, если статус сканирования «Ошибка» или «Неизвестно».

    • посмотреть словари, являющиеся результатом сканирования;

    • переименовать сканирование;

    • удалить сканирование.

Предпросмотры

После создания необходимых сенситивных словарей происходит применение функций анонимизации из этих словарей к сенситивным данным БД. Чтобы посмотреть, как эти функции применятся, можно сделать предпросмотр. Этот шаг не является обязательным в процессе анонимизации, он нужен, чтобы вы могли проверить корректность процесса и перенастроить его, если нужно.

На вкладке «Предпросмотр» можно посмотреть результат применённых функций к сенситивным частям выбранной БД и информацию об этих предпросмотрах:

  • название предпросмотра;

  • название базы данных, в части которой была проведена анонимизация;

  • использованные для данного процесса анонимизации словари.

Для создания предпросмотра кликните по кнопке «Добавить предпросмотр» в центре страницы или «Новый предпросмотр», если на странице уже есть предпросмотры.

В открывшемся окне укажите название предпросмотра и выберите словарь, с помощью которого будет проводиться анонимизация.

Примечание

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

Рассмотрим информацию на странице:

  1. Поисковая строка, с помощью которой предпросмотры можно искать по названию.

  2. Кнопка обновления для быстрого просмотра результатов изменений.

  3. Кнопка создания нового предпросмотра.

  4. С помощью меню предпросмотров можно:

    • подключившись к БД, посмотреть в БД браузере пример сенситивных данных из исходной БД и пример анонимизированных данных из целевой БД. Также эту страницу можно открыть, кликнув по строке предпросмотра. Если кликнуть по словарю, откроется содержимое используемого словаря без возможности редактирования;

    • переименовать предпросмотр;

    • отредактировать предпросмотр — поменять его название или используемые словари;

    • удалить предпросмотр.

Дампы

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

Управлять дампами можно на вкладке «Дампы».

На этой вкладке находится список дампов, созданных для выбранного источника данных и информация о них:

  • название дампа;

  • название исходной базы данных;

  • статус процесса создания дампа;

  • путь к дампу;

  • размер дампа;

  • дата и время начала создания дампа;

  • дата и время конца создания дампа;

  • почта пользователя, запустившего создание дампа.

Чтобы запустить создание нового дампа, нажмите на кнопку «Создать дамп» в центре страницы или «Новый дамп» в правом верхнем углу, если на странице уже есть другие дампы.

В появившееся модальное окно введите:

  • название дампа;

  • тип дампа: полный, только структура или только данные;

  • путь к дампу (дефолтный путь к дампу — /opt/tantor/eco/pg_anon);

  • сенситивные словари для создания дампа;

  • для частичного дампа данных выберите один из вариантов:

    • «указанные таблицы» — через запятую укажите список таблиц, которые необходимо включить в дамп. Для указания по маске используйте символ * в начале или конце имени;

    • «все, кроме указанных» — через запятую укажите список таблиц, которые необходимо исключить из дампа. Аналогично поддерживается указание по маске с помощью *. Если таблицы связаны через FK, то связи будут разорваны перед созданием дампа.

Рассмотрим информацию на странице:

  1. Поисковая строка, с помощью которой можно искать дампы по названию.

  2. Кнопка обновления для быстрого просмотра результатов изменений страницы.

  3. Фильтр по статусу:

    • Неизвестно,

    • Завершено,

    • Ошибка,

    • В процессе,

    • Запуск.

  4. Кнопка создания нового дампа.

  5. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  6. С помощью меню дампа можно:

    • ввести данные для подключения к БД и запустить создание дампа;

      Примечание

      Запустить создание дампа можно, если статус создания дампа «Ошибка» или «Неизвестно».

    • переименовать дамп;

    • восстановить дамп со статусом «Завершено»;

    • удалить дамп. В открывашемся окне введите «удалить» в текстове поле. Если вы не подключались к БД, укажите данные для подключения.

Восстановление

Дампы можно восстановить на указанный сервер.

Внимание

Восстановить можно только дампы со статусом «Завершено».

Чтобы восстановить дамп выполните следующие действия:

  • на вкладке «Дампы» в меню нужного дампа выберите «Восстановить»;

  • в открывшемся модальном окне заполните поля:

    • FQDN/IP сервера БД;

    • Порт;

    • Название БД;

    • Имя пользователя;

    • Пароль;

    • При установке галочки «Очистить целевую БД перед восстановлением» будет передан флаг drop_db для удаления базы данных;

    • Для частичного восстановления данных выберите один из вариантов:

      • «Указанные таблицы» — введите через запятую список таблиц для восстановления. Для указания по маске используйте символ * в начале или конце имени;

      • «Все, кроме указанных» — введите через запятую список таблиц, которые не нужно восстанавливать. Аналогично поддерживается указание по маске с помощью *.

  • нажмите на кнопку «Восстановить».

После восстановления подробная информация будет отображаться на вкладке «Ресторы»:

  • название дампа;

  • FQDN/IP;

  • название базы данных;

  • почта пользователя, запустившего восстановление;

  • статус восстановления;

  • дата и время начала;

  • дата и время окончания.

Вы можете самостоятельно настроить внешний вид таблицы. Чтобы изменить набор и расположение столбцов, нажмите на иконку шестерёнки.

Если при восстановлении дампа возникла ошибка, восстановление можно перезапустить на вкладке «Ресторы». Для этого в меню нужного дампа выберите пункт «Перезапустить» и в открывшемся модальном окне введите имя и пароль пользователя.

Восстановленые дампы можно искать по названию и фильтровать по статусу.

История

На этой вкладке отображается информация о всех произведенных операциях анонимизации данных.

Рассмотрим информацию на вкладке:

  1. Поисковая строка, с помощью которой действия можно искать по названию.

  2. Кнопка обновления страницы.

  3. Фильтр по статусам и типам действий.

  4. Таблица с информацией о действиях:

    • «Название»;

    • «Тип действия» — сканирование, предпросмотр, дамп или рестор;

    • «Название БД»;

    • «Запустил» — электронная почта пользователя, запустившего действие;

    • «Статус» — неизвестно, успешно, ошибка, в процессе или запуск;

    • «Начало» — дата и время запуска действия;

    • «Конец» — дата и время окончания действия.

  5. Кнопка настройки таблицы. С ее помощью вы можете самостоятельно настроить внешний вид таблицы.

  6. Меню действия, с помощью которого можно просмотреть журнал событий:

    Если действие было запущено до версии 6.1.1, журнал событий будет пустым:

Работа pg_anon

pg_anon основан на Python3 и использует сторонние библиотеки. Используются следующие инструменты:

  • инструмент PostgreSQL pg_dump для выгрузки структуры базы данных,

  • инструмент PostgreSQL pg_restore для воспроизведения структуры базы данных.

Запустить pg_anon может администратор с правами подключения к исходной базе данных (source DB). Pg_anon на основе словаря выполняет дамп в указанный каталог в файловой системе. После этого каталог с файлами передается на хост целевой базы данных (target DB). После размещения каталога на хосте запускается процесс восстановления под учетными данными целевой БД. Целевая БД должна быть создана заранее с помощью команды CREATE DATABASE и не должна содержать никаких объектов. Если в этой БД есть пользовательские таблицы, процесс восстановления не запустится. Когда восстановление завершится, база данных будет готова к работе, при этом сотрудники смогут подключаться к базе данных без риска утечки чувствительных данных.

На рисунке ниже представлен процесс передачи данных из исходной БД в целевую БД.

В Платформе подключиться к исходной базе данных можно на вкладке «Источники данных».

Создание словаря

Словарь, на основе которого будет работать pg_anon, можно создать автоматически или вручную:

  • при автоматическом создании словаря pg_anon запускается в режиме сканирования исходной базы данных и использует мета-словарь. Во время сканирования имена полей проверяются по заданным маскам, а содержимое полей — по набору регулярных выражений. Скорость создания словаря зависит от объема правил, установленных при сканировании базы данных, и выделенного под параллельное сканирование количества процессов. При сканировании каждая строка в выборке проверяется по каждому правилу.

  • при ручном создании словаря администратор, знающий структуру исходной БД, самостоятельно составляет словарь с перечислением полей, содержащих сенситивные данные.

На рисунке ниже представлены оба варианта создания словаря.

В Платформе создать новый словарь и просмотреть существующие можно на вкладке «Словари». Запустить сканирование можно на вкладке «Сканирование» на странице нужного источника данных.

Работа pg_anon во время дампа и восстановления

Ниже приведен упрощенный процесс работы pg_anon.

Для начала необходимо создать дамп с замаскированными данными:

  1. Дамп информации из исходной базы данных создается в отдельный файл без маскирования.

  2. Запускается маскирование данных из исходной БД.

  3. Дамп информации из исходной БД создается в отдельный файл с маскированием.

После этого дамп с замаскированными данными нужно восстановить:

  1. Создается целевая БД.

  2. Данные из файла с дампом информации из исходной БД загружаются в целевую БД.

В Платформе запустить создание нового дампа или восстановление существующего можно на вкладке «Дампы» на странице источника данных.

Режимы pg_anon, дампа и восстановления

pg_anon работает в следующих режимах:

  • init — создает схему anon_funcs с функциями анонимизации.

  • create-dict — сканирует данные БД и создает подготовленный файл словаря с чувствительными данными с профилем анонимизации и подготовленный файл словаря без чувствительных данных для ускорения работы в последующем в режиме create-dict.

  • view-fields — отображает таблицу с полями, которые будут анонимизированы, и используемыми в процессе правилами. Таблица содержит поля schema, table, field, type, dict_file_name, rule, основанные на подготовленном сенситивным словаре.

  • view-data — показывает скорректированную таблицу с примененными правилами анонимизации из подготовленного файла сенситивного словаря.

  • dump — создает дамп структуры базы данных с использованием инструмента pg_dump Postgres, и дампы данных с использованием запросов COPY … с функциями анонимизации. При дампе данные сохраняются локально в формате .bin.gz. На этом этапе данные анонимизируются на стороне базы данных с помощью anon_funcs.

  • restore — восстанавливает структуру базы данных с помощью инструмента pg_restore Postgres и переносит данные из дампа в целевую БД. Режим может отдельно восстанавливать структуру базы данных или сами данные.

  • sync-struct-dump — создает дамп структуры базы данных с использованием инструмента Postgres pg_dump.

  • sync-data-dump — создает дамп данных базы данных с использованием запросов COPY … с функциями анонимизации. При дампе данные сохраняются локально в формате .bin.gz. На этом этапе данные анонимизируются на стороне базы данных с помощью anon_funcs.

  • sync-struct-restore — восстанавливает структуру базы данных с использованием инструмента Postgres pg_restore.

  • sync-data-restore — восстанавливает данные базы данных из дампа в целевую БД.

Можно создать дамп трех видов:

  • дамп данных,

  • дамп структуры,

  • дамп структуры и данных.

Каждый режим восстановления требует выполнения соответствующего дампа. Существует три режима восстановления:

  • восстановление данных,

  • восстановление структуры,

  • восстановление структуры и данных.