Tenho um SQL Server 2016 SP1 com dados que estou pronto para compartilhar com um parceiro (desenvolvedor), exceto algumas colunas, exemplo:
email varchar(64) MASKED WITH (FUNCTION = 'email()') NULL
Eu dou ao parceiro as credenciais para fazer login na cópia de teste do banco de dados como um determinado usuário, sem permissão de desmascarar. Eu entendo que isso é razoavelmente seguro. Agora, estamos pensando em compartilhar o backup do banco de dados com nossos parceiros, para que eles possam recarregar em seu próprio servidor e ambiente.
Eu provavelmente precisaria ter usuários contidos, para que o parceiro não possa criar novos usuários ou conectá-los a logins existentes (não tenho certeza sobre isso).
CREATE USER user_name WITH PASSWORD = 'strong_password';
Existe uma maneira de compartilhar um backup de banco de dados e ainda confiar que as colunas mascaradas são seguras ou preciso excluir fisicamente os dados?
Não me desculpe. Seu parceiro tem um login sysadmin para o SQL Server e um sysadmin pode fazer tudo com tudo dentro de uma instância do SQL Server - incluindo os bancos de dados.
Sugiro que você desenvolva uma rotina para limpar os dados confidenciais. Ou seja, faça o backup. Restaure-o para um nome de banco de dados diferente, limpe-o. E agora produza um novo backup.
Se você está compartilhando o backup, banco de dados independente ou não, eles podem fazer o que quiserem com os dados. Os administradores de sistema (dos quais tenho certeza que eles têm acesso em seus servidores) podem ver todos os dados.
Exclua os dados e, em seguida, percorra o log de transações várias vezes, fazendo backups e reutilizando VLFs, inserindo dados fictícios (dessa forma, eles não podem minerar o log) ou, melhor ainda, crie uma cópia apenas de esquema do banco de dados e insira apenas o dados necessários. Observe que você ainda pode extrair informações das estatísticas, eu não faria um script delas se estivesse fazendo uma cópia para enviar e quisesse que fosse segura.
Outra opção seria restaurar o backup para uma área de teste e criptografar os dados em colunas confidenciais usando alguma forma de criptografia (coluna, AE etc.). Elimine as chaves necessárias antes de enviar o banco de dados. Dessa forma, eles não terão as chaves para descriptografar os dados, mas eles ainda estarão lá. Isso pode ser aceitável se você não quiser fazer nenhuma das outras opções acima.