我使用下面的链接在我当前的项目中实现了动态数据屏蔽概念。
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dynamic-data-masking-get-started
我添加了SSN字段的掩码,然后我只能看到像XXXX-XX-0001这样的SSN掩码数据。但每当我修改SSN(XXXX-XX-0002)并保存到azure SQL数据库时,屏蔽数据将保存为原始SSN值。
请告诉我如何将更新后的掩码值保存到具有原始值的azure SQL数据库中?
与Pradeep
答案 0 :(得分:3)
正如这位官方document所述,关于DDM:
动态数据屏蔽有助于防止未经授权访问敏感数据,方法是让客户指定要显示的敏感数据量,同时对应用程序层的影响最小。这是一个基于策略的安全功能,在指定的数据库字段中隐藏查询结果集中的敏感数据,而数据库中的数据不会更改。
动态数据屏蔽政策
从屏蔽中排除的SQL用户 - 将在SQL查询结果中获取未屏蔽数据的一组SQL用户或AAD标识。请注意,具有管理员权限的用户将始终从屏蔽中排除,并且会看到没有任何屏蔽的原始数据。
动态数据屏蔽的目的是限制敏感数据的暴露,防止不应该访问数据的用户查看它。
根据您的描述,我假设您的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 Portal,键入应该从屏蔽中排除的SQL用户或AAD身份,如下所示:
总之,由于您使用DDM隐藏查询结果中的敏感数据,因此最好不要向用户授予写权限(db_datawriter db role)。您可以遵循"最佳实践和常见用例"此tutorial部分。此外,您可以参考此tutorial有关配置和自定义SQL Azure动态数据屏蔽的信息。