Erro 33111 ao restaurar backups de versões mais antigas do Conector do SQL Server para Microsoft Azure Key Vault
Número de KB original: 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 de SQL Server que usa SQL Server Connector para Key Vault 1.0.4.0 ou uma versão anterior para Conector do SQL Server para Microsoft Azure Key Vault 1.0.5.0.
Suponha que você implante as seguintes instâncias do Microsoft SQL Server:
SQL Server instância
sql1
SQL Server Conector para Key Vault 1.0.4.0 implantado.SQL Server instância
sql2
tem SQL Server Conector para Key Vault 1.0.5.0 implantado.Use a consulta a seguir para implantar uma chave assimétrica em instâncias
sql1
esql2
na 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ê revisar o valor das impressões digitais em ambos os servidores, perceberá que os comprimentos da impressão digital diferem embora sejam criados da mesma origem. A impressão digital versão 1.0.5.0 é maior 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 causa problemas durante operações de backup e restauração.
Exemplo:
Você tem um backup de banco de dados criptografado por uma chave assimétrica em 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 que se assemelha à seguinte mensagem:
Msg 33111, Nível 16, Estado 4, LineNumber <>
Não é possível localizar 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
Motivo
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 TDE (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.
Resolução
Copie o conector SQL Server para Key Vault 1.0.4.0 ou uma versão anterior para o servidor de
sql2
instância.Execute a consulta a
sql2
seguir no 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 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 das duas 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 à seguinte consulta:
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 consulta a seguir 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 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>
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: ao longo de 2024, vamos eliminar problemas do GitHub como o mecanismo de comentários para conteúdo e substituí-lo por um novo sistema de comentários. Para obter mais informações, consulte:Enviar e exibir comentários de