Erro 33111 ao restaurar backups de versões mais antigas do Conector do SQL Server para Microsoft Azure Key Vault
Número original do KB: 4470999
Este artigo discute um erro que ocorre quando você tenta restaurar um backup TDE (Transparent Data Encryption) feito em servidores que usam versões mais antigas do SQL Server Connector para o Microsoft Azure Key Vault.
Sintomas
Você enfrenta problemas ao tentar restaurar um backup de banco de dados do SQL Server que usa o SQL Server Connector para Key Vault 1.0.4.0 ou uma versão anterior para o SQL Server Connector para Microsoft Azure Key Vault 1.0.5.0.
Suponha que você implante as seguintes instâncias do Microsoft SQL Server:
A instância
sql1
do SQL Server tem o SQL Server Connector para Key Vault 1.0.4.0 implantado.A instância
sql2
do SQL Server tem o SQL Server Connector para Key Vault 1.0.5.0 implantado.Use a seguinte consulta para implantar uma chave assimétrica em instâncias
sql1
esql2
instâncias da mesma fonte de chave assimétrica no Key Vault:CREATE ASYMMETRIC KEY TDE_KEY FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
Se você examinar o valor das impressões digitais em ambos os servidores, observará que os comprimentos das impressões digitais são diferentes, embora sejam criados a partir da mesma fonte. A impressão digital da versão 1.0.5.0 é mais longa que a versão 1.0.4.0.
Exemplo de impressão digital 1.0.4.0:
0x2C5677D76F76D77F80
Exemplo de impressão digital 1.0.5.0:
0x373B314B78E8D59A0925494558FEF14B726216C5
A alteração faz com que ocorram problemas durante as operações de backup e restauração.
Exemplo:
Você tem um backup de banco de dados criptografado por uma chave assimétrica no Key Vault na sql1
instância.
A sql2
instância tem uma chave assimétrica criada.
Se você tentar restaurar o backup na sql2
instância, a operação falhará e retornará uma mensagem de erro semelhante à seguinte mensagem:
Msg 33111, Nível 16, Estado 4, Número de Linha de Linha <>
Não é possível encontrar a chave assimétrica do servidor com a impressão digital '0x2C5677D76F76D77F80'.
Observações:
A consulta para recuperar a impressão digital de cada chave é a seguinte:
SELECT thumbprint, * FROM master.sys.asymmetric_keys
A consulta para recuperar a impressão digital de cada banco de dados TDE é a seguinte:
SELECT DatabaseName(ddek.database_id) AS DatabaseName, ak.name
AS [Asymmetric key Name], ak.thumbprint FROM
sys.dm_database_encryption_keys ddek INNER JOIN
master.sys.asymmetric_keys ak ON
ak.thumbprint = ddek.encryptor_thumbprint
Causa
Uma atualização foi introduzida na versão 1.0.5.0 do SQL Server Connector para Key Vault que altera a maneira como o programa calcula impressões digitais. Na versão 1.0.5.0, esse cálculo corresponde à lógica usada pelo mecanismo de programa para dar suporte ao seguinte cenário de migração:
De: Microsoft SQL Server local que usa o EKM (Gerenciamento Extensível de Chaves)
Para: Banco de Dados SQL do Microsoft Azure que usa suporte a BYOK (Bring Your Own Key) para TDE (Transparent Data Encryption)
Devido a essa alteração, você pode ter problemas ao tentar restaurar backups de banco de dados da versão 1.0.4.0 ou de uma versão anterior.
Solução
Copie o Conector do SQL Server para Key Vault 1.0.4.0 ou uma versão anterior para o servidor de
sql2
instância.Execute a seguinte consulta no
sql2
servidor para alterar aCRYPTOGRAPHIC PROVIDER
versão 1.0.4.0:ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll'
Reinicie o SQL Server.
Crie uma nova chave assimétrica usando
CRYPTOGRAPHIC PROVIDER
1.0.4.0.CREATE ASYMMETRIC KEY TDE_KEY_1040 FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
Você pode confirmar a existência de ambas as chaves assimétricas usando a seguinte consulta:
SELECT thumbprint,* FROM master.sys.asymmetric_keys
Adicione credenciais ao logon mapeado de chave assimétrica (TDE_Login no exemplo a seguir) usando uma consulta semelhante à consulta a seguir:
ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
Agora você deve ser capaz de restaurar o backup.
Execute a seguinte consulta para
sql2
reverter aCRYPTOGRAPHIC PROVIDER
versão 1.0.5.0:ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll'
Reinicie o SQL Server.
Para usar a nova impressão digital, execute a consulta a seguir usando a mesma chave assimétrica ou a nova chave assimétrica de versão.
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>