Compartir a través de


Error 33111 al restaurar copias de seguridad a partir 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) realizada en servidores que usan versiones anteriores del conector de SQL Server 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 el conector de SQL Server para Key Vault 1.0.4.0 o una versión anterior para Conector de SQL Server para Microsoft Azure Key Vault 1.0.5.0.

Supongamos que implementa las siguientes instancias de Microsoft SQL Server:

  • La instancia sql1 de SQL Server tiene implementado el conector de SQL Server para Key Vault 1.0.4.0.

  • La instancia sql2 de SQL Server tiene implementado el conector de SQL Server para Key Vault 1.0.5.0.

  • Use la consulta siguiente para implementar una clave asimétrica en las sql1 instancias 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 huella digital difieren aunque se creen a partir del mismo origen. La huella digital de la versión 1.0.5.0 es mayor 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 de .

La sql2 instancia tiene una clave asimétrica creada.

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

Mensaje 33111, nivel 16, estado 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 de 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 del conector de SQL Server 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 SQL Server local que usa administración extensible de claves (EKM)

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

Debido a este cambio, es posible que experimente problemas al intentar restaurar 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 sql2 servidor de instancias.

  2. Ejecute la consulta siguiente 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:

    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 en sql2 para 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 consulta siguiente mediante la misma clave asimétrica o la nueva clave asimétrica de la nueva versión.

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