Как сохранить измененное значение маски в базе данных SQL Azure с исходным значением, но не значением маски?

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

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dynamic-data-masking-get-started

Я добавил маску для поля SSN, после чего я могу видеть только замаскированные данные SSN, хранящиеся в виде XXXX-XX-0001. Но всякий раз, когда я изменял поле SSN (XXXX-XX-0002) и сохранял его в базе данных SQL Azure, там были замаскированные данные, а не исходное значение SSN.

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

Прадип

1 ответ

Решение

Как говорится в официальном документе о DDM:

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

Политика динамического маскирования данных

Пользователи SQL, исключенные из маскировки - набор пользователей SQL или идентификаторов AAD, которые будут получать немаскированные данные в результатах запроса SQL. Обратите внимание, что пользователи с правами администратора всегда будут исключены из маскировки и будут видеть исходные данные без маски.

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

Согласно вашему описанию, я предположил, что ваш пользователь SQL имеет разрешения на запись, но без привилегий UNMASK. На этом этапе, когда вы обновляете поле SSN в базе данных SQL Azure, тогда ваше поле SSN будет содержать статически замаскированные данные.

Для предоставления разрешений на просмотр немаскированных данных вы можете предоставить разрешение UNMASK вашему пользователю SQL следующим образом:

GRANT UNMASK TO TestUser;  
EXECUTE AS USER = 'TestUser';  
SELECT * FROM Membership;  
REVERT;   

-- Removing the UNMASK permission  
REVOKE UNMASK TO TestUser; 

Или вы можете войти в портал Azure, ввести пользователей SQL или удостоверения AAD, которые следует исключить из маскировки, следующим образом:

Таким образом, поскольку вы используете DDM для скрытия конфиденциальных данных в результате запроса, лучше не предоставлять пользователю права на запись (роль db_datawriter db). Вы можете следовать разделу "Рекомендации и общие примеры использования" этого руководства. Кроме того, вы можете обратиться к этому руководству по настройке и настройке динамической маскировки данных SQL Azure.

Другие вопросы по тегам