Eu gostaria de poder te votar 100 pontos apenas por pensar nisso! Eu já vi esse assunto esquecido tantas vezes que é falso - tão bem feito. Pelo que entendi, você realmente deseja embaralhar os dados dentro dos próprios campos e, embora entenda o que você está tentando alcançar, pode não ser muito necessário fazê-lo - embora deva ser considerado caso a caso.
A maioria das leis de proteção de dados gira em torno da capacidade de associar corretamente um dado a um indivíduo - por exemplo, uma data de nascimento ou um número de telefone. Você pode atender aos requisitos da lei assegurando que, ao mover seus dados para fora da produção para o UAT, eles sejam confundidos, para que não sejam facilmente mapeados novamente para a pessoa original - especialmente quando você confunde nomes e sobrenomes.
No entanto, isso não resolve o problema, por exemplo, digamos detalhes de contato. Você pode atender aos requisitos da lei misturando os dados, mas os números de telefone ainda são reais, os e-mails ainda reais, etc ... eles simplesmente não são atribuídos à pessoa correta. Para isso, recomendo que, sempre que possível, limpe esses dados antes de passá-los para o UAT, o Red Gate faça um software chamado Data Generator que possa criar dados de teste aleatórios para você, para que você possa repovoar os campos com dados que possam ser testados.
Quanto à mistura de dados: existem muitos aplicativos que fazem isso por você e, honestamente, você está correto ao não querer reinventar a roda. O que usamos em nossa empresa é um produto chamado Data Masker por uma empresa chamada Net2000. A licença é bastante barata, funciona extremamente rápido e você não precisa se preocupar em desativar todas as suas restrições antes de embaralhar o banco de dados.
Obviamente, você pode lançar sua própria solução, caso não encontre algo que atenda aos seus requisitos - se você decidir fazer isso, recomendo fortemente o uso de procedimentos CLR para fazer isso, pois é muito mais flexível que o TSQL puro (para não dizer que você não pode usar o TSQL, veja aqui ).
Depois de escolher um aplicativo para fazer isso, a próxima coisa que você precisa decidir é: o que você realmente deseja / precisa embaralhar? Honestamente, seu melhor recurso para isso é a equipe jurídica da sua empresa e / ou os auditores da empresa. Sei que às vezes podemos não gostar de trabalhar com eles, mas eles serão muito mais agradáveis por abordá-los e fazer a pergunta a eles, em vez de tentar fazê-lo por conta própria e cometer erros, não há absolutamente nada de errado em pedir ajuda - especialmente quando é tão importante quanto isso.
Espero que isso ajude você e desejo-lhe boa sorte em sua busca ... ;-)
O Sr. Brownstone acertou a unha na cabeça. Agora, para ajudá-lo um pouco, aqui está minha função "garble", usada para ofuscar seqüências de caracteres (resultados engraçados com nomes!). Passe uma string, ela retornará uma string ilegível. Inclua-o nas instruções de atualização nas colunas da string. Mude o comprimento dos dados como achar melhor.
fonte
Eu tive que fazer isso pelos dados de vendas de varejo de meus clientes. Para nomes, fui ao censo e baixei todos os nomes e sobrenomes, os executei por um loop para juntar todos os nomes, adicionei código sexual e o carreguei em uma tabela com todas as letras maiúsculas. Eu tinha uma mesa com cerca de 400 milhões de nomes únicos. Usei letras maiúsculas, pois nossos dados atuais não estavam em letras maiúsculas, para que eu pudesse dizer com mais facilidade os dados que foram apagados.
Quando esfreguei meus dados de usuário, troquei os nomes; no aniversário, coloquei todo mundo em 1º de janeiro do ano em que eles realmente nasceram e atualizei qualquer número de telefone com seu CEP (meus dados eram apenas nos EUA). Os endereços de email tornaram-se os primeiros iniciais e o sobrenome @ minhaempresa.com. O endereço postal me causou mais luto, mas mantive a cidade, o estado e o CEP porque acredito que não serão um problema se o endereço for alterado. Eu tinha um colega de trabalho que tinha algum programa que gerava letras ilegíveis e atualizava a linha de endereço com isso.
Em qualquer lugar onde eu tinha dados duplicados, mas ainda tinha um FK para o usuário principal (design ruim sim, mas não o meu), eu também atualizei esses dados para que o nome fosse consistente no banco de dados do usuário x.
No geral, meus dados ainda eram muito legíveis, embora o endereço não fizesse sentido. Demorei alguns dias para que tudo funcionasse, mas uma vez concluído e um trabalho de agente sql foi criado, eu pude limpar os dados em apenas 15 minutos.
fonte
Para ofuscar um único campo, que tal usar a função HASHBYTES (no SQL 2008+)? Você pode escolher seu algoritmo (MD5 provavelmente é suficiente), desde que você salte seus dados. Então, em vez de apenas
SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD>)
certificar-se de que sim,SELECT HASHBYTES('SHA2_256', <LAST NAME FIELD> + '<my salt string>')
e agora você tem um hash que não pode ser facilmente brutalmente forçado.É uma função real que é suportável, repetível e provavelmente muito mais rápida. Dependendo de quanto você precisa realmente proteger contra apenas ofuscar, você também pode usar um hash mais fraco e rápido.
fonte
MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
Algo para todos !! (incluindo, sim, aqueles que você não deve usar). Então, digamos que estamos usando o SHA2_512 ... mais alguma coisa problemática com essa abordagem?Dê uma olhada no módulo dbatools PowerShell para obter uma opção gratuita do Static Data Masking, escrito por Chrissy Lemaire (@ chrissy-lemaire) e sua equipe. Todas as ferramentas são ótimas, por isso tenho certeza de que vale a pena dar uma olhada.
Os dois comandos para procurar no dbatools são: New-DbaDbMaskingConfig Invoke-DbaDbDataMasking
Dê uma olhada na postagem do blog que anuncia isso: mascaramento automatizado de dados
fonte