Error 33111 al restaurar copias de seguridad de versiones anteriores de Conector de SQL Server para Microsoft Azure Key Vault

Número de KB original: 4470999

En este artículo se describe un error que se produce al intentar restaurar una copia de seguridad de cifrado de datos transparente (TDE) que se realiza en servidores que usan versiones anteriores de SQL Server Connector para microsoft Azure Key Vault.

Síntomas

Experimenta problemas al intentar restaurar una copia de seguridad de base de datos desde SQL Server que usa SQL Server Connector para Key Vault 1.0.4.0 o una versión anterior a Conector de SQL Server para Microsoft Azure Key Vault 1.0.5.0.

Supongamos que implementa las siguientes instancias de Microsoft SQL Server:

  • SQL Server instancia sql1 tiene implementado SQL Server Connector para Key Vault 1.0.4.0.

  • SQL Server instancia sql2 tiene implementado SQL Server Connector para Key Vault 1.0.5.0.

  • Use la consulta siguiente para implementar una clave asimétrica en las sql1 instancias de y sql2 desde el mismo origen de clave asimétrica en Key Vault:

    CREATE ASYMMETRIC KEY TDE_KEY 
    FROM PROVIDER AzureKeyVaultProvider 
    WITH PROVIDER_KEY_NAME = 'key1', 
    CREATION_DISPOSITION = OPEN_EXISTING
    

Si revisa el valor de las huellas digitales en ambos servidores, observará que las longitudes de la huella digital difieren aunque se creen desde el mismo origen. La huella digital de la versión 1.0.5.0 es más larga que la versión 1.0.4.0.

Ejemplo de huella digital 1.0.4.0:

0x2C5677D76F76D77F80

Ejemplo de huella digital 1.0.5.0:

0x373B314B78E8D59A0925494558FEF14B726216C5

El cambio hace que se produzcan problemas durante las operaciones de copia de seguridad y restauración.

Ejemplo:

Tiene una copia de seguridad de base de datos cifrada mediante una clave asimétrica en Key Vault en la sql1 instancia.

La sql2 instancia tiene una clave asimétrica creada.

Si intenta restaurar la copia de seguridad en la sql2 instancia, se produce un error en la operación y devuelve un mensaje de error similar al siguiente:

Msg 33111, Level 16, State 4, LineNumber <>

No se encuentra la clave asimétrica del servidor con la huella digital "0x2C5677D76F76D77F80".

Notas:

La consulta para recuperar la huella digital de cada clave es la siguiente:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

La consulta para recuperar la huella digital de cada base de datos TDE es la siguiente:

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

Se introdujo una actualización en la versión 1.0.5.0 de SQL Server Connector para Key Vault que cambia la forma en que el programa calcula las huellas digitales. En la versión 1.0.5.0, este cálculo coincide con la lógica que usa el motor de programa para admitir el siguiente escenario de migración:

Desde: Microsoft local SQL Server que usa la administración extensible de claves (EKM)

Para: Microsoft Azure SQL Database que usa la compatibilidad con Bring Your Own Key (BYOK) para el cifrado de datos transparente (TDE)

Debido a este cambio, puede experimentar problemas al intentar restaurar las copias de seguridad de base de datos desde la versión 1.0.4.0 o una versión anterior.

Solución

  1. Copie el conector de SQL Server para Key Vault 1.0.4.0 o una versión anterior en el servidor de sql2 instancia.

  2. Ejecute la siguiente consulta en el sql2 servidor para cambiar a la CRYPTOGRAPHIC PROVIDER versión 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. Cree una nueva clave asimétrica mediante 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. Puede confirmar la existencia de ambas claves asimétricas mediante la consulta siguiente:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Agregue credenciales al inicio de sesión asignado con clave asimétrica (TDE_Login en el ejemplo siguiente) mediante una consulta similar a la siguiente consulta:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Ahora debería poder restaurar la copia de seguridad.

  6. Ejecute la consulta siguiente para sql2 revertir a la CRYPTOGRAPHIC PROVIDER versión 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 la nueva huella digital, ejecute la siguiente consulta con la misma clave asimétrica o la nueva clave asimétrica de versión.

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>