Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо:База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics (только выделенные пулы SQL)
База данных SQL в Fabric
База данных SQL Azure, база данных SQL в Microsoft Fabric, Управляемый экземпляр SQL Azure и Azure Synapse Analytics поддерживают динамическое маскирование данных (DDM). Динамическое маскирование данных ограничивает возможность раскрытия конфиденциальных данных, маскируя их для обычных пользователей.
Динамическое маскирование данных помогает предотвратить несанкционированный доступ к конфиденциальным данным, позволяя клиентам определить, сколько конфиденциальных данных можно выявить с минимальным воздействием на уровень приложений. Это функция безопасности на основе политики, которая скрывает конфиденциальные данные в результирующем наборе запроса по указанным полям базы данных, а данные в базе данных не изменяются.
Например, представитель центра обработки вызовов может определять вызывающее лицо, подтверждая несколько символов его адреса электронной почты, но полный адрес электронной почты не должен раскрываться этому представителю. Правило маскирования можно определить, которое маскирует весь адрес электронной почты в результирующем наборе любого запроса. Еще один пример — защита персональных данных путем определения соответствующей маски. Разработчик может отправлять запросы в рабочие среды для устранения неполадок, не нарушая при этом нормативные правила.
Основные сведения о динамическом маскировании данных
В базе данных SQL Azure настраивается политика динамического маскирования данных в портале Azure, выбрав панель Динамического маскирования данных в разделе Безопасность на панели конфигурации базы данных SQL.
Эту функцию нельзя задать с помощью портала Azure для управляемого экземпляра SQL или базы данных SQL в Fabric. Вместо этого используйте Transact-SQL (T-SQL), как в примере детализации разрешений в этой статье. Дополнительные сведения см. в разделе "Динамическое маскирование данных".
Политика динамического маскирования данных
Пользователи SQL, исключенные из маскирования: Набор пользователей SQL, который может включать удостоверения из Microsoft Entra ID, получающих немаскированные данные в результатах SQL-запросов. Пользователи с правами администратора сервера, администратора Microsoft Entra и роль db_owner могут просматривать исходные данные без маски. (Примечание. Это также относится к роли sysadmin в SQL Server)
Правила маскирования: набор правил, определяющих назначенные поля для маскирования и используемую функцию маскирования. Задать такие поля можно с помощью имени схемы базы данных, имени таблицы и имени столбца.
Функции маскирования: набор методов, которые управляют воздействием данных для различных сценариев.
Функция маскирования Логика маскирования По умолчанию Полное маскирование в соответствии с типами данных предопределенных полей
ИспользуйтеXXXX(или меньше), если размер поля меньше 4 символов для строковых типов данных (nchar, ntext, nvarchar).
Используйте нулевое значение для числовых типов данных (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
Используйте1900-01-01для типов данных (date, datetime2, datetime, datetimeoffset, smalldatetime, time).
Для sql_variant используется значение по умолчанию текущего типа.
Для XML используется документ<masked />.
Используйте пустое значение для специальных типов данных (метка времени, таблица, HierarchyID, uniqueidentifier, binary, image, varbinary и пространственные типы).Кредитная карта Метод маскирования, который предоставляет последние четыре цифры назначенных полей и добавляет строковую константу в качестве префикса в формате номера кредитной карты. XXXX-XXXX-XXXX-1234Эл. почта Метод маскирования, который открывает первую букву и заменяет домен на XXX.com, используя строковую константу в качестве префикса в формате электронного адреса. aXX@XXXX.comСлучайное число Метод маскирования, который формирует случайное число в соответствии с выбранными границами и типами фактических данных. Если установленные границы равны, то функция маскирования будет постоянным числом.
Пользовательский текст Метод маскирования, при котором видны первая и последняя буквы и добавляется пользовательская строка заполнения в середине. Если исходная строка короче видимых префикса и суффикса, то будет использоваться только строка заполнения. prefix[padding]suffix
Дата и время Включает детализацию маскирования для столбцов даты и времени, а именно datetime, datetime2, date, time, datetimeoffset и smalldatetime. Вы можете маскировать определенные компоненты, такие как год ( datetime("Y")), месяц (datetime("M")), день (datetime("D")), час (datetime("h")), минута (datetime("m")) или секунда (datetime("s")). Эта функция применяется с помощью T-SQL.
Рассмотрим пример.
- Маска года:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- Месяц маски:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- Маска минуты:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
Рекомендуемые поля для маскирования
Подсистема рекомендаций DDM помечает определенные поля из базы данных как потенциально конфиденциальные поля, которые могут быть хорошими кандидатами для маскирования. В области динамического маскирования данных на портале отображаются рекомендуемые столбцы для базы данных. Выберите " Добавить маску " для одного или нескольких столбцов, а затем выберите соответствующую функцию маскирования и нажмите кнопку "Сохранить", чтобы применить маску для этих полей.
Управление динамическим маскированием данных с помощью T-SQL
- Чтобы создать маску динамических данных, см. статью Создание маски динамических данных.
- Чтобы добавить или изменить маску в существующем столбце, см. статью Добавление и изменение маски в существующем столбце.
- Чтобы предоставить разрешения на просмотр немаскированных данных, см. статью Предоставление разрешений на просмотр немаскированных данных.
- Чтобы удалить динамическую маску данных, см. статью Удаление динамической маски данных.
Настройка динамического маскирования данных для базы данных с помощью командлетов PowerShell
Политики маскирования данных
Правила маскирования данных
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
Настройка динамического маскирования данных для базы данных с помощью REST API
Для программного управления политикой и правилами маскирования данных можно использовать REST API. Опубликованные REST API поддерживают следующие операции:
Политики маскирования данных
- Создать или обновить: создает или обновляет политику маскирования данных в базе данных.
- Получить: возвращает политику маскирования данных в базе данных.
Правила маскирования данных
- Создать или обновить: создает или обновляет правило маскирования данных в базе данных.
- Список по базе данных: возвращает список правил маскирования данных в базе данных.
Разрешения
Динамическое маскирование данных можно настроить со следующими встроенными ролями:
Требуемые действия для использования динамической маскировки данных:
Чтение/запись:
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Читать:
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Напишите:
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Дополнительные сведения о разрешениях при использовании динамической маскировки данных с помощью команды T-SQL см. в разделе "Разрешения".
Пример гранулярного разрешения
Предотвратите неавторизованный доступ к конфиденциальным данным и обеспечьте контроль над ними путем их маскирования для несанкционированных пользователей на разных уровнях базы данных. Вы можете предоставлять или отзывать UNMASK разрешения на уровне базы данных, уровне схемы, на уровне таблицы или на уровне столбцов любому пользователю или роли базы данных. В сочетании с аутентификацией Microsoft Entra UNMASK разрешениями для пользователей, групп и приложений, которые поддерживаются в вашей среде Azure, можно управлять. Разрешение UNMASK предоставляет детальный способ контроля и ограничения несанкционированного доступа к данным, хранящимся в базе данных, и улучшения управления безопасностью данных.
Создайте схему для хранения пользовательских таблиц:
CREATE SCHEMA Data; GOСоздайте таблицу с маскированными столбцами.
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, FirstName VARCHAR (100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL, LastName VARCHAR (100) NOT NULL, Phone VARCHAR (12) MASKED WITH (FUNCTION = 'default()') NULL, Email VARCHAR (100) MASKED WITH (FUNCTION = 'email()') NOT NULL, DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL, BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL );Вставка примеров данных:
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) VALUES ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'), ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'), ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'), ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');Создайте схему для хранения таблиц служб:
CREATE SCHEMA Service; GOСоздайте таблицу сервисов с маскированными столбцами.
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );Вставка примеров данных:
INSERT INTO Service.Feedback (Feedback, Rating, Received_On) VALUES ('Good', 4, '2022-01-25 11:25:05'), ('Excellent', 5, '2021-12-22 08:10:07'), ('Average', 3, '2021-09-15 09:00:00');Создайте разных пользователей в базе данных:
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GOПредоставьте пользователям в базе данных разрешения на чтение:
ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; ALTER ROLE db_datareader ADD MEMBER ServiceLead; ALTER ROLE db_datareader ADD MEMBER ServiceManager; ALTER ROLE db_datareader ADD MEMBER ServiceHead;Предоставьте пользователям разные
UNMASKразрешения:Предоставьте разрешение
UNMASKна уровеньServiceAttendantстолбца:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;Предоставьте разрешение уровня таблицы
UNMASKдляServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;Предоставьте разрешение на уровень схемы
UNMASKServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Предоставьте разрешение
UNMASKна уровне базы данныхServiceHead;GRANT UNMASK TO ServiceHead;
Запрос данных в контексте пользователя
ServiceAttendant:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Запрос данных в контексте пользователя
ServiceLead:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Запрос данных в контексте пользователя
ServiceManager:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Выполните запрос к данным в контексте пользователя
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Чтобы отозвать
UNMASKразрешения, используйте следующие инструкции T-SQL:REVOKE UNMASK ON Data.Membership (FirstName) FROM ServiceAttendant; REVOKE UNMASK ON Data.Membership FROM ServiceLead; REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; REVOKE UNMASK FROM ServiceHead;