SQL Server 中数据混淆的最佳实践是什么?
我们想在我们的 UAT 系统中使用屏蔽的生产数据。
如果我们想快速完成,并且具有更高的混淆程度,应该采取什么方法?我正在考虑字符争夺人们的名字和姓氏,但是如何?我应该自己创建一个函数还是有任何预定义的函数可供使用?我不想花时间重新发明轮子:)
日期字段怎么样?例如,是否应该从整个表中随机选择出生日期并分配给记录,或者有更好的方法吗?
我希望我能仅仅因为考虑这个问题就给你 100 分!我已经看到这个主题被忽视了很多次,这是不真实的——做得很好。据我了解,您实际上希望在字段本身内打乱数据,尽管我了解您正在尝试实现的目标,但这样做可能并不是很有必要 - 尽管应该根据具体情况进行考虑。
大多数数据保护法都围绕着将数据与个人正确关联的能力——例如出生日期或电话号码。您可以通过确保当您将数据从生产环境中移出到 UAT 中时,它是混乱的,因此它不会轻易地重新映射到原始人,从而满足法律的要求 - 特别是当您混淆了名字和姓氏时。
但是,这并不能解决例如联系方式等问题。您可以通过混淆数据来满足法律要求,但电话号码仍然是真实的,电子邮件仍然是真实的等等......它们只是没有分配给正确的人。为此,我建议如果在将数据传递到 UAT 之前尽可能清除该数据,Red Gate 会执行一个名为Data Generator的软件,它可以为您创建随机测试数据,以便您可以使用可以测试的数据重新填充字段。
至于数据加扰:有许多应用程序可以为您执行此操作,老实说,您不想重新发明轮子是正确的。我们公司使用的是Net2000公司的一款名为Data Masker的产品。该许可证非常便宜,运行速度非常快,您不必担心在加扰数据库之前必须禁用所有约束。
如果您没有找到任何符合您要求的解决方案,您当然可以推出自己的解决方案 - 如果您决定这样做,我强烈建议使用 CLR 过程来执行此操作,因为它比纯 TSQL 灵活得多(并不是说您不能使用 TSQL 见这里)。
一旦您选择了一个应用程序来为您执行此操作,接下来您需要决定的是您真正想要/需要加扰的是什么?老实说,您最好的资源是您的公司法律团队和/或公司审计师。我知道有时我们可能不喜欢和他们一起工作,但他们会更好地接近他们并向他们提出问题,而不是试图自己去做并且弄错了,寻求帮助绝对没有错- 尤其是当它和这个一样重要时。
我希望这对你有所帮助,并祝你在你的追求中好运...... ;-)