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 ysql2
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
Copie el conector de SQL Server para Key Vault 1.0.4.0 o una versión anterior en el
sql2
servidor de instancias.Ejecute la consulta siguiente en el
sql2
servidor para cambiar a laCRYPTOGRAPHIC 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'
Reinicie SQL Server.
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
Puede confirmar la existencia de ambas claves asimétricas mediante la consulta siguiente:
SELECT thumbprint,* FROM master.sys.asymmetric_keys
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;
Ahora debería poder restaurar la copia de seguridad.
Ejecute la consulta siguiente en
sql2
para revertir a laCRYPTOGRAPHIC 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'
Reinicie SQL Server.
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>