【问题标题】:How to ignore empty strings with SQL Server 2016 Dynamic Data Masking?如何使用 SQL Server 2016 动态数据屏蔽忽略空字符串?
【发布时间】:2016-07-01 00:41:50
【问题描述】:

我正在实施 SQL Server 2016 数据屏蔽作为一项测试,作为为应用程序提供“演示”模式的总体努力的一部分,该模式在展示时不会暴露真实数据。

我们有一个遵循模式 0411 222 333(澳大利亚手机号码)的手机号码字段,下面的部分掩码正确地应用了我们所追求的标准掩码,也就是说 04XX XXX X33

ALTER TABLE Resource
ALTER COLUMN MobileNumber ADD MASKED WITH (FUNCTION='partial(2, "XX-XXX-X",2)')

但是,如果列的值为空字符串 (''),则仍会应用掩码,尽管没有要掩码的数据:

有没有办法确保屏蔽工作忽略空字符串?

【问题讨论】:

  • 我不这么认为。在我看来,如果掩码可以根据数据的长度变短,那么它本身就可以揭示有关数据的信息。例如,如果字符串只有两个字符长怎么办?如果显示 XX,则表明数字(如果是数字)在 10 到 99 之间。如果您确实需要在数据层中发生这种情况,可以编写一个将 XXXX 转换为空字符串并拒绝选择的视图在桌子本身上。问题是如果有一个 4 位数字,那么那里似乎没有任何价值。
  • @Eric - 在我们的案例中,与其说是可以推断出哪些数据,不如说是在实时/系统演示中显示的内容。我们正在研究 SS2016 的数据屏蔽作为设置和维护单独的混淆数据库的替代方案,因此用户可以在真实/当前/实时系统中单击,而不会将他们暴露于他们不应该看到的 5% 的数据。在这种情况下,“空字符串”很好看,但缩短的一堆 X 看起来很奇怪。
  • 实际上它需要是一个 SP 而不是一个视图......虽然所有的工作有点违背了目的。
  • @Eric 是的。正如我所提到的,这是对 SS2016 数据屏蔽能力的测试,如果我们要编写自定义存储过程,我们不妨采用单独的 DB + 混淆方法,或者只使用奇怪的“X”。

标签: sql sql-server sql-server-2016 data-masking


【解决方案1】:

有关此功能的 MSDN 文章还有很多不足之处。但我确实找到了另一篇与 Azure 有关的类似文章,似乎回答了您的问题。

自定义文本:

暴露第一个和最后一个字符并在中间添加自定义填充字符串的掩码方法。 如果原始字符串比暴露的前缀和后缀短,则仅使用填充字符串。 前缀[填充]后缀

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

【讨论】:

  • 我今天也得出了同样的结论:/。哦,好吧!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
相关资源
最近更新 更多