Поделиться через


Динамическое маскирование данных в хранилище данных Fabric

Область применения:✅ конечная точка аналитики SQL и хранилище в Microsoft Fabric

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

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

  • Центральная политика маскирования данных применяется непосредственно к конфиденциальным полям в базе данных.
  • Вы можете назначать привилегированных пользователей или роли, которые имеют доступ к конфиденциальным данным.
  • Динамическая маскировка данных включает функции полной маскировки и частичного маскирования, а также случайную маску для числовых данных.
  • Назначение и использование масок осуществляется простыми командами Transact-SQL.

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

Динамическое маскирование данных дополняет другие функции безопасности Fabric, такие как безопасность на уровне столбцов и безопасность на уровне строк. Настоятельно рекомендуется использовать эти функции защиты данных вместе для защиты конфиденциальных данных в базе данных.

Определение динамической маски данных

Правило маскирования можно определить в столбце таблицы, чтобы скрыть данные в этом столбце. Доступно четыре типа маски.

Function Description Примеры
По умолчанию. Полное маскирование в соответствии с типами данных назначенных полей.

Для строковых типов данных используйте XXXX (или меньше), если размер поля меньше 4 символов (char, nchar, varchar, nvarchar, text, ntext).

Для числовых данных типов используйте нулевое значение (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Для типов данных даты и времени используйте 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

Для двоичных типов данных используйте однобайтовое значение 0 ASCII (binary, varbinary, image).
Пример синтаксиса для определения столбца: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Пример синтаксиса для изменения: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Эл. почта Метод маскирования, который раскрывает первую букву адреса электронной почты и постоянный суффикс .com, в формате адреса электронной почты. [email protected]. Пример определения синтаксиса: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Пример синтаксиса для изменения: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Случайные Функция случайного маскирования для использования с любым числовым типом, которая маскирует исходное значение случайным значением в указанном диапазоне. Пример определения синтаксиса: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Пример синтаксиса для изменения: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Пользовательская строка Метод маскирования, который раскрывает первую и последнюю буквы и добавляет пользовательскую строку заполнения в середине. prefix,[padding],suffix

Если исходное значение слишком коротко, чтобы завершить всю маску, часть префикса или суффикса не предоставляется.
Пример определения синтаксиса: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Пример синтаксиса для изменения: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Это превращает номер телефона, как 555.123.1234 в 5XXXXXXX.

Дополнительный пример:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Это превращает номер телефона, как 555.123.1234 в 555.1XXXXXXX.

Дополнительные примеры см. в статье о реализации динамического маскирования данных в хранилище данных Synapse.

Разрешения

Пользователи без прав администратора, участника или участника в рабочей области, а также без повышенных разрешений на хранилище будут видеть маскированные данные.

Вам не требуется специальное разрешение на создание таблицы с динамической маской данных, только стандартными CREATE TABLE и ALTER разрешениями схемы.

Для добавления, замены или удаления маски столбца требуется ALTER ANY MASK разрешение и ALTER разрешение на таблицу. Это уместно предоставить ALTER ANY MASK сотруднику службы безопасности.

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

Разрешение CONTROL на базу данных включает как разрешение, так ALTER ANY MASK и UNMASK разрешение, позволяющее пользователю просматривать незамеченные данные. Администраторы или роли, такие как администратор, член или участник, имеют разрешение CONTROL для базы данных путем разработки и могут просматривать незамеченные данные по умолчанию. Повышенные разрешения на хранилище включают CONTROL разрешения.

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

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

Например, рассмотрим пользователя, имеющего достаточные привилегии для выполнения запросов в хранилище, и пытается "угадать" базовые данные и в конечном итоге вывести фактические значения. Предположим, что у нас есть маска, определенная в [Employee].[Salary] столбце, и этот пользователь подключается непосредственно к базе данных и начинает угадывать значения, в конечном итоге вычисляя [Salary] значение в Employees таблице:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

Результат будет иметь такой вид:

ИД Имя. Зарплата
62543 Jane Doe 0
91245 Dmitry Gornozhenko 0

В этом примере показано, что динамическое маскирование данных не следует использовать только для полной защиты конфиденциальных данных от пользователей с доступом к конечной точке хранилища или аналитики SQL. Это подходит для предотвращения воздействия конфиденциальных данных, но не защищает от злонамеренного намерения выводить базовые данные.

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

Следующий шаг