我使用下面的链接在当前项目中实现了动态数据屏蔽概念。
https://docs.microsoft.com/zh-cn/azure/sql-database/sql-database-dynamic-data-masking-get-started
我为SSN字段添加了掩码,之后,我只能看到XXXX-XX-0001之类的SSN的掩码数据。但是,每当修改SSN字段(XXXX-XX-0002)并将其保存到Azure SQL数据库中时,被屏蔽的数据将不会保存为原始SSN值。
能否请您告诉我如何将具有原始值的更新的掩码值保存到Azure SQL数据库中?
普拉迪普
正如此官方文档中有关DDM的说明:
动态数据屏蔽使客户能够在不影响应用程序层的情况下指定要泄露的敏感数据量,从而防止对敏感数据的未经授权的访问。这是一项基于策略的安全功能,可在指定数据库字段上隐藏查询结果集中的敏感数据,而数据库中的数据不会更改。
动态数据屏蔽策略
排除屏蔽的SQL用户-一组SQL用户或AAD身份,它们将在SQL查询结果中获得未屏蔽的数据。请注意,具有管理员特权的用户将始终被屏蔽,并且将看到原始数据而没有任何屏蔽。
动态数据屏蔽的目的是限制敏感数据的暴露,防止不应访问数据的用户查看数据。
根据您的描述,我假设您的SQL用户具有写权限,但没有UNMASK特权。此时,当您将SSN字段更新到Azure SQL数据库时,您的SSN字段将包含静态屏蔽的数据。
要授予查看未屏蔽数据的权限,您可以按以下方式向您的SQL用户授予UNMASK权限:
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动态数据屏蔽的本教程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句