Answers:
我希望我能为此加点100分!我已经看到这个主题被忽视了很多次,这是不正确的-做得很好。据我了解,您实际上想对字段本身内的数据进行加扰,尽管我了解您要实现的目标,但这样做不一定是必要的,尽管应该逐案考虑。
大多数数据保护法律都围绕着将数据正确地与个人相关联的能力(例如出生日期或电话号码)。您可以通过确保将数据从生产中移出UAT时将其弄乱,从而不容易将其重新映射到原始人,从而满足法律的要求-尤其是当您混淆姓氏和姓氏时。
但是,这不能解决例如联系方式这样的问题。您可以通过整理数据来满足法律要求,但是电话号码仍然是真实的,电子邮件仍然是真实的,等等……它们只是没有分配给正确的人。为此,我建议尽可能在将数据传递到UAT之前清除该数据,Red Gate会执行一个名为“ 数据生成器”的软件,该软件可以为您创建随机测试数据,以便您可以使用可以进行测试的数据重新填充字段。
至于数据加扰:存在许多为您执行此操作的应用程序,说实话,您不想重新发明轮子是正确的。我们公司使用的是Net2000公司的Data Masker产品。该许可证非常便宜,它运行非常快,您不必担心在加扰数据库之前必须禁用所有约束。
如果您找不到满足您要求的任何内容,您当然可以推出自己的解决方案-如果您决定这样做,我强烈建议您使用CLR过程进行此操作,因为它比纯TSQL更加灵活(并不是说您不能使用TSQL参见此处)。
一旦选择了一个应用程序为您执行此操作,接下来需要确定的是您实际上想要/需要加扰的内容是什么?老实说,您最好的资源是公司法律团队和/或公司审核员。我知道有时候我们可能不喜欢与他们合作,但是他们会比您更好地与他们联系并向他们提出问题,而不是尝试自己动手做错事情,寻求帮助绝对没有错。 -尤其重要的是。
希望这对您有所帮助,也祝您好运……;-)
布朗斯通先生的头上碰到了钉子。现在为您提供一些帮助,这是我的“乱码”功能,用于混淆字符串(带有名称的有趣结果!)。传递一个字符串,它返回一个乱码。将其包括在针对字符串列的更新语句中。根据需要更改数据长度。
---------------------
-- Garble Function --
---------------------
-- Make a function to slightly garble the strings
IF (object_id('fn_Garble') is not null)
drop function fn_Garble
go
create function fn_Garble
(
@String varchar(255)
)
returns varchar(255)
as
BEGIN
select @String = replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(@String,'o','e'),'a','o'),'i','a'),'u','i'),'t','p'),'c','k'),'d','th'),'ee','e'),'oo','or'),'ll','ski')
return @String
END
go
我必须对我的客户零售数据进行此操作。对于名字,我去了人口普查,并下载了所有的名字和姓氏,将它们遍历一个循环以将每个名字和姓氏连接起来,添加性别代码并将其以大写形式加载到表中。然后,我有了一张约有4亿个唯一名称的表。我使用大写字母,因为我们当前的数据不是大写字母,所以我可以更容易地分辨出已整理的数据。
当我清理用户数据时,我换掉了名字,在生日那天,我把所有人推迟到他们实际出生的那一年的1月1日,并用邮政编码更新了所有电话号码(我的数据仅适用于美国)。电子邮件地址成为首字母加上姓氏@ mycompany.co。邮寄地址让我感到最难过,但我保留了城市,州和邮编,因为我相信如果更改地址,它们不会成为问题。我有一个同事,他的某个程序会产生乱码,并以此来更新地址行。
在我有重复数据的任何地方,但仍然对主要用户有FK(错误的设计,是的,但不是我的)。我也更新了该数据,因此名称在用户x的整个数据库中是一致的。
总体而言,尽管地址没有任何意义,但我的数据仍然可读性强。我花了几天的时间才能完成所有这些工作,但是一旦完成并创建了SQL代理作业,我可以在短短15分钟内清理数据。
为了混淆单个字段,如何使用HASHBYTES函数(在SQL 2008+中)?如果您对数据加盐,则可以选择算法(MD5可能就足够了)。因此,SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD>)
您不仅
要确保自己做了SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD> + '<my salt string>')
,现在还拥有一个不能轻易强行强制使用的哈希。
这是一个实际的功能,可支持,可重复且可能更快。根据您真正需要保护多少安全性还是仅进行混淆,还可以使用更弱,更快的哈希。
MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
适合所有人的东西!(包括,是的,您不应该使用)。那么说我们正在使用SHA2_512 ...这种方法还有其他问题吗?