Статьи
28 ноября 2025 г.

Что такое обезличивание, маскирование и токенизация, есть ли разница в этих терминах?
Обезличивание, маскирование и токенизация — это методы защиты персональных данных и конфиденциальной информации, направленные на предотвращение несанкционированного доступа к данным.
Обезличивание — это общее понятие, которое предполагает удаление или скрытие информации, позволяющей идентифицировать конкретного человека, организацию или другой субъект, включая все виды чувствительных данных. Маскирование является частным случаем обезличивания и используется для скрытия отдельных элементов данных, таких как, например, паспортные номера, номера счетов или контактные данные, оставляя структуру данных пригодной для обработки. Алгоритмы маскирования позволяют обезличивать различные данные с сохранением формата и бизнес‑логики: например, корректно генерировать даты (с возможностью ограничения по диапазонам дней, месяцев и т. д.), маскировать номера банковских карт с сохранением платежной системы, банка-эмитента, типа карты, с пересчетом контрольного разряда, а также поддерживают другие структурированные типы данных.
Еще один из важных методов обезличивания информации — токенизация, метод защиты данных, при котором чувствительная информация заменяется безопасным токеном, а связь между ним и оригиналом хранится отдельно или нигде не хранится и построена на криптографии. Основная цель токенизации — предотвратить прямой доступ к оригинальным данным, снижая риск утечки, при этом обеспечивая возможность обработки и аналитики, а также восстановления исходных данных. Рассмотрим варианты токенизации:
Классическая (произвольная) токенизация:
Токен создаётся случайным образом и не имеет математической связи с исходными данными;
Преимущество: высокий уровень безопасности, невозможно восстановить данные без токен-базы;
Недостаток: требуется централизованное хранилище токенов;
Пример: 1234 5678 9012 3452 (номер карты) -> A1B2-C3D4-E5F6-7890 (токен);
Криптографическая токенизация:
Токены формируются с помощью криптографических алгоритмов, включая FPE (Format-Preserving Encryption — шифрование с сохранением формата), AES CBC-CTS и других. При этом токены имеют математическую связь с исходными данными, поэтому не требуется хранить базу сопоставления токенов и исходных данных;
Преимущество: сохраняют структуру данных, например, длину и формат номера карты, что удобно для систем, где требуется совместимость форматов. Для дополнительной защиты в FPE применяются понижающие словари, которые скрывают структуру исходных данных, а также предотвращают атаки на частоты и форматы. При этом токенизация позволяет проводить пре/пост обработку для пересчета контрольных разрядов, замены идущих подряд согласных/гласных и т.д. Еще одним из преимуществ токенизации — возможность восстановить исходное значение;
Недостаток: имеется математическая связь с исходными данными;
Пример: 1234 5678 9012 3452 (номер карты) -> 1234 5643 5612 4389 (токен); Иван -> Лова (токен);
Теперь поговорим об основных алгоритмах маскирования, которые присутствуют в системах обезличивания данных и в каких случаях они применяются.
Посимвольная замена — метод маскирования, при котором каждый символ исходного значения преобразуется отдельно по заданному правилу, с возможностью сохранения определенных позиций или символов без изменений;
Применение: паспортные данные, номера документов и т.д.;
Замена по словарю — замена по заранее сформированным словарям;
Применение: ФИО, адреса, организации, банки и т.д.;
Перемешивание строк;
Применение: комментарии, зарплата, адреса и т. д.;
Маскирование телефона с возможностью сохранения кода города, замены по справочнику и т. д.;
Применение: телефоны;
Маскирование Email с возможностью разделения домена и имени для более точечной настройки маскирования;
Применение: электронная почта;
Полная очистка (через NULL), в том числе бинарных файлов;
Применение: комментарии, бинарные файлы и т. д.;
Замена на константу, в том числе бинарных файлов, уникальных значений и т.д.;
Применение: комментарии, бинарные файлы и т. д.;
Маскирование даты с возможностью сохранения года, месяца, а также маскирования дат, связанных между собой;
Применение: даты рождения, даты выдачи и окончания документов;
Маскирование с пересчетом контрольных разрядов;
Применение: ИНН, СНИЛС, ОГРН, ОМС, банковские карты и др.;
Токенизация — замена значений на токены, в том числе с возможностью восстановления исходных данных;
Применение: любые данные;
Минимальное-максимальное значение, для замен в диапазонах;
Применение: зарплаты;
Замена по регулярному выражению — замена по специальному правилу на языке Regex;
Применение: любые данные;
Нормализация — приводит различные слова к одному;
Применение: любые данные;
Маскирование адреса, в том числе по базе ФИАС, ГАР, КЛАДР, замена координат в заданных диапазонах и т. д.;
Применение: адреса, координаты;
Маскирование логов, в том числе с возможностью восстановления исходных данных;
Применение: журналы, файлы;
Маскирование на основе признаков (пола, организации и т. д.);
Применение: ФИО, организации, банки, адреса и т. д.;
Пользовательские алгоритмы — функционал, позволяющий создавать свои алгоритмы, например на языке Groovy, работать с составными колонками и т. д.;
Применение: любые сложные данные, где требуется дополнительная обработка текста и одновременная работа с несколькими колонками: хеширование, транслитерация, форматирование, объединение колонок и передача в другую и т. д.;
Все перечисленные методы обезличивания помогают организациям соблюдать требования законодательства не только о защите персональных данных, но и о сохранении конфиденциальной информации в целом — включая банковскую тайну, коммерческую тайну, служебную и иную охраняемую законом информацию. Такие подходы позволяют снизить риск раскрытия чувствительных сведений, обеспечить соблюдение регуляторных норм и повысить общую устойчивость инфраструктуры к утечкам и злоупотреблениям.
Какие типы маскирования бывают, что такое динамическое маскирование и как оно реализуется средствами СУБД?
Существует несколько подходов к маскированию данных. Их можно реализовать либо на уровне ETL-процессов (обычно через промежуточный сервер с отдельной копией базы), либо напрямую средствами SQL, когда обработка выполняется в самой СУБД и не требует дополнительных инфраструктурных ресурсов. Каждый метод решает свою задачу и подходит под разные сценарии безопасности:
Статическое маскирование (SDM, In—Place) — выполняется внутри одной базы данных с использованием стандартных SQL-операций, через SELECT и UPDATE. Оригинальные данные заменяются на замаскированные, после чего их невозможно восстановить без резервной копии.
Преимущества подхода «In—Place»:
Не требует сложной инфраструктуры;
Используется меньшее количество дискового пространства;
В некоторых случаях общий процесс обезличивания проходит быстрее чем в режиме «On-The-Fly» (*зависит от архитектуры БД);
Минусы подхода «In—Place»:
Требуется разграничение прав доступа и дополнительный контроль, так как в определенной момент времени данные находятся в не обезличенном виде.
Ошибки в маскировании удлиняют процесс, требуется восстановление данных из резервных копий;
Маскирование «на лету» (On—The—Fly) — использует две базы данных: одну продуктивную (точнее ее копию) и одну «маскированную» копию (сначала формируется структура исходной БД, то есть ее слепок, далее в нее передаются уже замаскированные данные). Передача происходит с помощью операций SELECT и INSERT в целевую базу, при этом значения заменяются на лету. Такой метод чаще всего применяется для передачи данных из закрытого контура в открытый.
Преимущества подхода «On—The—Fly»:
Позволяет проводить неограниченное количество (только в рамках ресурсов самой СУБД) повторных процессов маскирования, без необходимости восстановления из продуктивной базы (копии).
Не требует дополнительного контроля доступа до и в момент маскирования, так как данные в исходную систему поставляются уже в замаскированном виде;
Использование операций типа INSERT менее ресурсоёмко и работает быстрее, однако многое зависит от структуры БД.
Минусы подхода «On—The—Fly»:
Требует отдельной базы и хранилища;
Нужен механизм синхронизации данных между источником и маскированной копией. Он должен контролировать структуру источника и приемника;
Динамическое маскирование (DDM) — технология, при которой маскирование применяется в момент выполнения запроса. Исходные данные при этом не изменяются. Пользователи с разными правами доступа видят разные представления одной и той же информации: одни — исходные значения, другие — частично скрытые или полностью замаскированные;
Реализация статического маскирования:
С помощью СУБД и скриптов: такие СУБД, как Oracle и Postgres, имеют дополнительный функционал статического маскирования, правда со своими ограничениями:
Нет готовых алгоритмов, заточенных под российский рынок;
Если в компании присутствуют различные типы СУБД, это делает задачу консистентности данных и поддержку такой системы практически невозможной или очень сложной;
Зачастую требуют дополнительных дорогостоящих лицензий, например, как для СУБД Oracle;
Требуют также держать отдельные команды разработки для разных типов СУБД;
Требуют больших вычислительных ресурсов, так как алгоритмы маскирования и регулярные выражения для поиска часто выполняются непосредственно на самих СУБД;
С помощью специализированных систем по обезличиванию данных такой подход решает проблемы, описанные выше, а также значительно ускоряет и полностью автоматизирует процесс по предоставлению обезличенных тестовых сред, при этом позволяет соблюдать все нормативные требования РФ.
Реализация динамического маскирования:
С помощью СУБД: многие современные СУБД (Microsoft SQL Server, Oracle, PostgreSQL) позволяют применять DDM средствами встроенных функций. Маскирование происходит на уровне SQL-запросов, используя правила для разных ролей пользователей;
Через прокси и/или API: DDM можно реализовать между приложением и базой данных. Прокси перехватывает запросы и возвращает маскированные данные согласно политикам безопасности;
Преимущества подхода DDM:
Отсутствие изменения оригинальной базы — исходные данные остаются целыми и не требуют восстановления из-за некорректных алгоритмов маскирования или ошибок в ходе обезличивания;
Гибкая настройка прав доступа — разные пользователи видят только допустимую информацию;
Ускорение внедрения — можно защитить данные без создания копий или сложной ETL-процедуры;
Теперь рассмотрим, какие встроенные механизмы маскирования данных предлагают популярные СУБД, какие ограничения и недостатки есть у этих подходов, а также разберём, как реализовано динамическое маскирование в Microsoft SQL Server, Oracle и PostgreSQL.
1. Microsoft SQL Server
SQL Server предоставляет встроенные возможности динамического маскирования данных (Dynamic Data Masking, DDM) для ограничения раскрытия конфиденциальной информации пользователям без соответствующих привилегий.
1.1 Динамическое маскирование данных (DDM, встроенное)
Назначение: маскирует данные в Runtime без изменения самих данных, применяется к результатам запросов для непривилегированных пользователей;
Версии: SQL Server 2016 (13.x+) и выше, Azure SQL;
Стоимость: встроено, отдельная лицензия не требуется;
Алгоритмы маскирования:
Default Masking: полная маскировка по типу данных;
Строки -> XXXX
Числа -> 0
Дата -> 1900-01-01
Email Masking: раскрывает первую букву и домен;
Пример: aXXX@XXXX.com
Random Masking: случайное числовое значение в указанном диапазоне;
Пример: 1–100
Partial / Custom String Masking: раскрывает часть строки и маскирует остальное;
Пример: Roberto -> Rxxxxxo
Datetime Masking (SQL Server 2022+): маскирует выбранные компоненты даты/времени;
Пример: только год, месяц или день
Ограничения и слабые места:
Нельзя маскировать:
Вычисляемые столбцы;
FILESTREAM;
COLUMN_SET;
Always Encrypted столбцы;
Полнотекстовые индексы (FULLTEXT);
Столбцы во внешних таблицах PolyBase;
Пользователь, у которого нет доступа к исходным данным может:
Делать агрегаты: MIN(), MAX(), COUNT(), AVG();
Использовать предикаты: WHERE, LIKE, IN, JOIN;
Перечислять уникальные значения;
Это позволяет вычислять исходные данные через статистический анализ. Ниже я покажу пример SQL-скрипта, который позволяет перебирать замаскированные данные в СУБД MSSQL (через DDM).
Сначала добавим для колонки тестовую функцию маскирования, как показано ниже (важно отметить, что в отличие от Oracle и PostgreSQL, информация о замаскированных полях хранится в метаданных, доступ к которым по умолчанию есть у любого пользователя):
Рисунок 1 Пример настройки динамического маскирования в MSSQL
Пример того, как пользователи видят замаскированные данные:
Рисунок 2 Результат динамического маскирования в MSSQ
Пример того, как выглядят реальные данные:
Рисунок 3 Исходные данные в MSSQ
Теперь для демонстрации напишем небольшой скрипт, который будет перебирать значения замаскированных данных, пока не вернется пустой результат и мы не дойдем до конца словаря (с учетом даже если между словами есть пробел или даже несколько). Пример скрипта представлен ниже:
Рисунок 4 Скрипт для перебора исходных значений
В результате работы скрипта получилось менее чем за 1 секунду подобрать замаскированное ФИО, как показано ниже (то же самое можно сделать для других колонок или целиком для всей таблицы):
Рисунок 5 Результат скрипта
2. Oracle
Oracle предоставляет полный набор средств для защиты и маскирования данных, как статического, так и динамического. Однако, стоит отметить, что помимо лицензии Enterprise, требуется дополнительная лицензия на маскирование (add-on) и/или Advanced Security Option.
1.1 Data Masking and Subsetting Pack (SDM, платное)
Назначение: статическое маскирование данных и создание усеченных данных (subsets) для передачи в DEV/TEST, снижает риск утечек;
Версии: Oracle 12c Release 1 (12.1+) и выше, через Oracle Enterprise Manager (редакция Enterprise);
Стоимость: отдельный платный пакет OEM (не входит в Advanced Security Option), лицензируются только источники;
Алгоритмы маскирования:
Substitution Masking: подмена значений по словарям (имена, города, email);
Shuffle Masking: случайная перестановка данных в колонке (разрывает связи между ФИО и зарплатой);
Blurring / Perturbation: «зашумляет» значения (± диапазон);
Format Preserving Randomization: сохраняет длину и формат (Aa-9999 -> Bb-4217);
Encryption (Reversible): форматосохраняющее шифрование (для последующего восстановления);
Deterministic Masking: одинаковый вход -> одинаковый выход во всех базах;
Conditional Masking: разные маски в зависимости от значения (US SSN -> XXX-XX-1234, UK NIN -> AB****CD);
Compound Masking: согласованное маскирование связанных колонок (город + штат + ZIP);
User-defined PL/SQL functions: любые пользовательские сценарии маскирования;
Возможности Subsetting:
Создание усеченных копий БД — например, выборка только за определённый период или по конкретному региону. Это сокращает размер тестовых баз и ускоряет Dev/Test процессы.
Удаление ненужных строк перед передачей в DEV/TEST;
Goal-based: например, 1% выборки из таблицы в 10 млрд строк;
Condition-based: оставлять только клиентов после 2024 года / только один регион;
Сохранение PK/FK целостности при вырезании данных;
Ограничения:
Нельзя маскировать:
В связке с DISTINCT и ORDER BY
В связке с GROUP BY
Вычисляемые колонки
1.2 Data Redaction (DDM, платное)
Назначение: маскирует данные в Runtime без изменения самих данных;
Версии: Oracle 12c Release 1 (12.1+) и выше (редакция Enterprise);
Стоимость: часть Advanced Security Option (платная, кроме Autonomous AI DB — для нее бесплатно);
Алгоритмы маскирования:
Full Redaction: полная маскировка (числа -> 0, строки -> пробел);
Partial Redaction: частичная маскировка (например, телефон +79161234567 -> +7916***4567);
Regular Expression Redaction: маскирование по шаблону (email, паспорт, банковская карта, SSN и др.);
Random Redaction: случайные значения при каждом запросе;
Nullify Redaction: замена на NULL;
Совместимость:
Oracle Database Vault: политики Redaction учитывают realm’ы; Пользователь без прав не видит данные и получает ошибки при DML/DDL;
Real Application Security (RAS): защита колонок через права приложения (application privileges);
Data Masking and Subsetting Pack: Redaction можно применять на non-production базах поверх уже замаскированных данных;
Результат работы динамического маскирования:
Пример того, как выглядят реальные данные:
Рисунок 6 Исходные данные в Oracle
Пример как пользователи видят замаскированные данные:
Рисунок 7 Результат динамического маскирования в Oracle
Примеры SQL запросов для настройки DDM:
Ниже представлены скрипты для включения динамического маскирования:
PARTIAL
Рисунок 8 Алгоритм PARTIAL, динамическое маскирование в Oracle
REGEXP
Рисунок 9 Алгоритм REGEXP, динамическое маскирование в Oracle
RANDOM и FULL
Рисунок 10 Алгоритмы RANDOM и FULL, динамическое маскирование в Oracle
Минусы подхода:
Пользователь, у которого нет доступа к исходным данным может:
Делать агрегаты: MIN(), MAX(), COUNT(), AVG();
Использовать предикаты: WHERE, LIKE, IN, JOIN;
Перечислять уникальные значения;
Это позволяет вычислять исходные данные через статистический анализ, так же, как и в MSSQL. Пример такого запроса ниже:
Рисунок 11 Пример перебора исходных данных в Oracle
3. PostgreSQL
PostgreSQL не имеет встроенного DDM/SDM в ядре, однако существует официальный плагин PostgreSQL Anonymizer («Anonymization & Data Masking for Postgres»), предоставляющий полноценное динамическое и статическое маскирование. Это расширение работает через декларативные политики, встроенные прямо в DDL.
Назначение: маскирование персональных или конфиденциальных данных с возможностью:
Dynamic — скрывать данные в Runtime для непривилегированных пользователей, оригинальные данные остаются на диске.
Static — физически изменять данные в таблицах (например, для передачи в DEV/TEST или архивирования).
Версии: PostgreSQL 11+
Стоимость: бесплатно, open source (pg_anonymizer)
Особенность: правила маскирования описываются в DDL таблицы и могут быть применены либо динамически при запросах, либо один раз для замены данных в таблице.
Методы применения маскирования:
Anonymous Dumps
Экспорт уже замаскированных данных в SQL-файл;
Аналог статического экспорта «анонимной копии»;
Static Masking
Одноразовое применение правил к таблице (anon.anonymize_table()), реальные данные заменяются;
Dynamic Masking
Скрывает данные при запросах пользователей без привилегий;
Оригинальные данные на диске остаются неизменными;
Masking Views
Создаёт виртуальные представления с масками для нужных ролей;
Masking Data Wrappers
Маскирует данные, полученное из внешних источников (через FDW);
Результат работы динамического маскирования:
В Oracle и MSSQL динамическое маскирование работает “на лету”, применяясь при выполнении SQL-запроса, но при этом фильтры WHERE и условия запроса все равно оперируют реальными значениями столбцов, поэтому исходные данные могут быть восстановлены. В PostgreSQL Anonymizer маскирование устроено иначе: движок SQL видит только уже подставленные маски, а не реальные значения, поэтому перебор условий или фильтров по исходным данным невозможен.
Пример того, как выглядят замаскированные данные (поле lastname при повторном запросе формируется заново):
Рисунок 12 Пример замаскированных данных в PostgreSQL
Если мы попробуем перебирать значения по маске, то мы будем работать не исходными значениями, а уже замаскированными, что не позволяет узнать исходные значения, как в Oracle и или MSSQL:
Рисунок 13 Демонстрация, что перебор исходных данных в Postgres не работает
В заключение хочется отметить, что специализированные решения по обезличиванию данных значительно надежнее и практичнее, чем встроенные механизмы СУБД или самописные скрипты, поскольку они создаются под реальные процессы, требования регуляторов и особенности российского рынка. В отличие от встроенных и кастомных средств, такие платформы обеспечивают единообразие маскирования для разных типов СУБД, не требуют отдельных команд разработки и не зависят от дорогих лицензий производителей. Кроме того, такие решения не нагружают СУБД тяжёлыми операциями, обеспечивая стабильность, предсказуемость и значительно снижают риски утечек информации.
Как сейчас выбрать систему по обезличиванию данных, которая будет выполнять все нормативные требования и на что стоит обратить внимание?
Современное нормативное поле ужесточает требования к обработке конфиденциальной информации. Оборотные штрафы за нарушения достигают миллионов рублей, а репутационные риски становятся критическими для бизнеса. В этих условиях выбор системы обезличивания превращается из технической задачи в стратегическую.
На что стоит обратить внимание при выборе решения по обезличиванию данных:
Профилирование:
Гибкость настройки, предустановленные алгоритмы поиска и валидации — в том числе поиск по бинарным файлам, а также использование Machine Learning;
Рисунок 14 Настройка правил профилирования
Системы тестирования — для тестирования правил поиска без необходимости запуска на самом источнике;
Рисунок 15 Система проверки алгоритмов профилирования
Инвентарь для отображения структуры БД, ограничений и связей, с возможностью версионирования (для отслеживания изменений в БД и пользовательских настроек), настройкой алгоритмов, фильтрацией, выгрузкой в Excel, получения примеров (обезличенных, в том числе после применения алгоритмов маскирования, без необходимости подключения к БД);
Рисунок 16 Инвентарь маскирования и профилирования
Рисунок 17 Примеры данных после профилирования, демонстрация маскирования
Настройка наборов правил для гибкой фильтрации профилирования/маскирования и контроля пользовательских изменений, структуры БД и объемов исходных данных;
Рисунок 18 Пример редактирования набора правил
Рисунок 19 Пример набора правил
Маскирование:
Предустановленные алгоритмы маскирования, их перечень описал в начале статьи. В том числе с возможностью написания сложных пользовательских алгоритмов (например, для пересчета SHA256 после маскирования), а также работы с нескольким колонками одновременно (без необходимости создания отдельных процессов для последовательных операций);
Рисунок 20 Пример написания пользовательских скриптов
Рисунок 21 Результат тестирования пользовательских скриптов
Функционал SQL пред/пост обработки — для отключения/включения обвязки БД, а также выполнения пользовательских SQL скриптов, который генерирует SQL скрипты на основе структуры БД и выбранных алгоритмов маскирования, при этом давая возможность пользователю их редактировать, при необходимости;
Функционал маскирования логов с возможностью восстановления исходных данных;
Рисунок 22 Пример детектирования токенов для маскирования лога
Журналирование — детальная фиксация всех авторизаций пользователей, запусков заданий маскирования и изменений конфигураций для обеспечения аудита и отслеживания процессов и изменений;
Рисунок 23 Журналирование
Эффективная система обезличивания данных должна быть комплексным решением, обеспечивающим баланс между технологической гибкостью и соответствием нормативным требованиям. При выборе продукта необходимо оценивать следующие ключевые аспекты:
1. Базовый функционал
Автоматизированное профилирование данных с построением связей и структуры БД;
Расширенный арсенал алгоритмов маскирования (токенизация, маскирование по словарю, посимвольная замена, маскирование дат, работа с бинарными данными);
Поддержка режимов INSERT и UPDATE для СУБД;
Детерминированность;
Консистентность;
Без внутреннего хранения замаскированных копий БД;
2. Нормативное соответствие
Полное покрытие требований 152-ФЗ, Приказа №140 и Постановления №1154;
Верификация результатов обезличивания;
Детальный аудит и логирование всех операций;
3. Интеллектуальные возможности
ML-алгоритмы для автоматического обнаружения конфиденциальных данных;
Маскирование журналов транзакций и системных логов;
Пользовательские сценарии обезличивания;
Поиск конфиденциальной информации в бинарных данных;
4. Архитектурная гибкость
Модульная архитектура с возможностью горизонтального масштабирования;
API для интеграции с существующей ИТ-инфраструктурой;
Конструктор пользовательских алгоритмов и генератор SQL скриптов обработки;
Система обезличивания данных — это не просто набор алгоритмов, а полноценная платформа, способная обеспечить безопасность, соответствие законодательству и высокую производительность. Специализированные решения выгодно отличаются от встроенных средств СУБД и самописных скриптов наличием готовых алгоритмов, адаптированных под российские требования, а также использованием «Machine learning» для поиска конфиденциальных данных. Они обеспечивают масштабируемость, детальный аудит и гибкую интеграцию в ИТ-ландшафт. В итоге такие системы позволяют организациям снижать риски, ускорять внедрение и гарантировать надежный уровень защиты.
Автор: Владышевский Иван Максимович, ведущий специалист по ИБ компании Secret Technologies.
Автор: Secret Technologies Команда Secret Technologies была собрана более восьми лет назад и ведет разработки своих продуктов, начиная с 2012 года. Специалисты компании успешно реализовали десятки проектов в области информационных технологий и информационной безопасности в различных отраслях.