【发布时间】: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