Compartilhar via


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

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

  2. Execute a seguinte consulta no sql2 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 o 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 de ambas as 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 à consulta a seguir:

    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 seguinte consulta 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 o 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>