Как сохранить измененное значение маски в базе данных 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.