Реализация динамического маскирования данных
Динамическое маскирование данных работает путем маскирования данных, чтобы ограничить его воздействие. Пользователи, которые не должны видеть конфиденциальные данные, могут просматривать столбец, содержащий данные, но не фактические данные. Динамическое маскирование данных работает на уровне презентации, а незамаскированные данные всегда отображаются пользователями с высоким уровнем привилегий.
Преимущество динамического маскирования данных заключается в том, что оно не требует вносить большого количества изменений в приложение или базу данных. Его можно настроить на портале Azure или с помощью T-SQL следующим образом.
В этом примере столбцы PhoneNumber и EmailAddress скрыты от пользователя DDMDemo , имеющего разрешение только SELECT на таблицу. Пользователю разрешено просматривать последние четыре цифры номера телефона, так как он замаскирован с помощью функции partial, которая заменяет все остальные цифры в столбце. Такое маскирование считается пользовательской функцией. Помимо T-SQL, если вы используете базу данных SQL Azure, можно создать правила динамической маскировки на портале Azure:
Вы можете открыть экран, чтобы добавить правило маскирования, перейдя к базе данных на портале Azure и выбрав Динамическое маскирование данных в разделе Безопасность главной колонки базы данных.
Динамическое маскирование данных поддерживает следующие шаблоны маскирования.
| Функция маскирования | Определение | Пример для T-SQL |
|---|---|---|
| По умолчанию | Полностью маскирует данные в столбце, не предоставляя пользователю даже частей этого значения. Пользователь увидит XXXX вместо строковых значений, 0 вместо чисел и 01.01.1900 вместо дат. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
| Кредитная карта | Маскирует все значение, кроме последних четырех символов. Это маскирование может быть полезно для агентов службы клиентов, которые должны просмотреть последние четыре цифры номера кредитной карты, но которые не должны видеть весь номер. Данные отображаются в обычном формате номера кредитной карты: XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
| Эл. почта | Только первая буква и конечный суффикс домена не маскируются; например, "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
| Число | Этот формат маскирования следует использовать для числовых столбцов. Вместо фактического значения в этом случае отображается случайное число. При каждом новом запросе отображается другое число. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
| Специальная строка | С помощью этого параметра можно маскировать текст любым значением и отображать пользовательское число символов с любого конца замаскированного значения. Если длина маскированного значения не превышает число символов, которые должны отображаться в соответствии с параметрами маски, отображаются только маскированные символы. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Чтобы пользователи могли получать немаскированные данные из столбцов, для которых определена маскировка, им необходимо явным образом предоставить разрешение UNMASK.
Примечание.
Можно определить маскированные данные с помощью вывода на основе результатов. При использовании маскирования данных также следует ограничить возможность выполнения незапланированных запросов пользователем.
Поэтому настоятельно рекомендуется использовать динамическое маскирование данных с другими функциями безопасности, такими как аудит, шифрование, безопасность на уровне строк, чтобы лучше защитить конфиденциальные данные.
Вариант использования
Маскирование данных — это простая и упрощенная функция, и она идеально подходит для многих сценариев, в том числе:
маскирование данных от пользователей приложения, которые не имеют прямого доступа к базе данных;
ограничение доступа к конфиденциальной информации определенной группой пользователей;
предоставление маскированных данных внешним поставщикам, если вам нужно одновременно защитить конфиденциальную информацию и сохранять связи между элементами данных;
экспорт копии рабочей базы данных в среду более низкого уровня для доступа разработчиков без разрешений
UNMASK. Такой экспорт будет выполняться в маскированном формате.
Импорт и экспорт данных
Копирование данных из маскированного столбца в другую таблицу с помощью SELECT INTO или INSERT INTO приведет к тому, что целевая таблица будет содержать маскированные данные.
Если пользователь без UNMASK привилегий запускает SQL Server Import and Export, экспортированный файл данных содержит маскированные данные, а импортированная база данных будет содержать неактивно маскированные данные.
Дополнительные сведения о том, как работает динамическое маскирование данных, см. в этой статье.