如何将修改后的掩码值保存到具有原始值但不是掩码值的azure SQL数据库中?

时间:2017-01-28 17:54:49

标签: c# azure azure-sql-database data-masking

我使用下面的链接在我当前的项目中实现了动态数据屏蔽概念。

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

1 个答案:

答案 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动态数据屏蔽的信息。