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 e sql2 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

  1. Copie o conector SQL Server para Key Vault 1.0.4.0 ou uma versão anterior para o servidor de sql2 instância.

  2. Execute a consulta a sql2 seguir no servidor para alterar a CRYPTOGRAPHIC 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'
    
    1. Reinicie SQL Server.

    2. 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
      
  3. Você pode confirmar a existência das duas chaves assimétricas usando a seguinte consulta:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. 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;
    
  5. Agora você deve ser capaz de restaurar o backup.

  6. Execute a consulta a seguir para sql2 reverter a CRYPTOGRAPHIC 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'
    
  7. Reinicie SQL Server.

  8. 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>