Erreur 33111 lors de la restauration de sauvegardes à partir de versions antérieures de connecteur SQL Server pour Microsoft Azure Key Vault
Numéro de la base de connaissances d’origine : 4470999
Cet article décrit une erreur qui se produit lorsque vous essayez de restaurer une sauvegarde Transparent Data Encryption (TDE) effectuée sur des serveurs qui utilisent des versions antérieures de SQL Server Connector pour microsoft Azure Key Vault.
Symptômes
Vous rencontrez des problèmes lorsque vous essayez de restaurer une sauvegarde de base de données à partir de SQL Server qui utilise SQL Server Connector pour Key Vault 1.0.4.0 ou une version antérieure vers connecteur SQL Server pour Microsoft Azure Key Vault 1.0.5.0.
Supposons que vous déployiez les instances suivantes de Microsoft SQL Server :
sql1
SQL Server instance a SQL Server Connector pour Key Vault 1.0.4.0 déployé.sql2
SQL Server instance a SQL Server Connector pour Key Vault 1.0.5.0 déployé.Utilisez la requête suivante pour déployer une clé asymétrique sur les
sql1
instances etsql2
à partir de la même source de clé asymétrique dans Key Vault :CREATE ASYMMETRIC KEY TDE_KEY FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
Si vous passez en revue la valeur des empreintes numériques sur les deux serveurs, vous remarquerez que les longueurs des empreintes numériques diffèrent bien qu’elles soient créées à partir de la même source. L’empreinte numérique de la version 1.0.5.0 est plus longue que la version 1.0.4.0.
Exemple d’empreinte 1.0.4.0 :
0x2C5677D76F76D77F80
Exemple d’empreinte 1.0.5.0 :
0x373B314B78E8D59A0925494558FEF14B726216C5
La modification provoque des problèmes lors des opérations de sauvegarde et de restauration.
Exemple :
Vous disposez d’une sauvegarde de base de données chiffrée par une clé asymétrique dans Key Vault dans le sql1
instance.
Le sql2
instance a une clé asymétrique créée.
Si vous essayez de restaurer la sauvegarde sur le sql2
instance, l’opération échoue et retourne un message d’erreur semblable au message suivant :
Msg 33111, Niveau 16, État 4, LineNumber <>
Impossible de trouver la clé asymétrique du serveur avec l’empreinte numérique « 0x2C5677D76F76D77F80 ».
Remarques :
La requête permettant de récupérer l’empreinte numérique de chaque clé est la suivante :
SELECT thumbprint, * FROM master.sys.asymmetric_keys
La requête permettant de récupérer l’empreinte numérique de chaque base de données TDE est la suivante :
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
Cause
Une mise à jour a été introduite dans la version 1.0.5.0 de SQL Server Connector pour Key Vault qui change la façon dont le programme calcule les empreintes numériques. Dans la version 1.0.5.0, ce calcul correspond à la logique utilisée par le moteur de programme pour prendre en charge le scénario de migration suivant :
À partir de : Microsoft SQL Server local qui utilise la gestion de clés extensible (EKM)
À : Microsoft Azure SQL Database qui utilise la prise en charge byOK (Bring Your Own Key) pour Transparent Data Encryption (TDE)
En raison de cette modification, vous pouvez rencontrer des problèmes lorsque vous essayez de restaurer des sauvegardes de base de données à partir de la version 1.0.4.0 ou d’une version antérieure.
Résolution
Copiez le connecteur SQL Server pour Key Vault 1.0.4.0 ou une version antérieure sur le
sql2
serveur instance.Exécutez la requête suivante sur le
sql2
serveur pour passer à laCRYPTOGRAPHIC PROVIDER
version 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'
Redémarrez SQL Server.
Créez une clé asymétrique à l’aide
CRYPTOGRAPHIC PROVIDER
de 1.0.4.0.CREATE ASYMMETRIC KEY TDE_KEY_1040 FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
Vous pouvez confirmer l’existence des deux clés asymétriques à l’aide de la requête suivante :
SELECT thumbprint,* FROM master.sys.asymmetric_keys
Ajoutez des informations d’identification à la connexion mappée à clé asymétrique (TDE_Login dans l’exemple suivant) à l’aide d’une requête similaire à la requête suivante :
ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
Vous devriez maintenant être en mesure de restaurer la sauvegarde.
Exécutez la requête suivante sur
sql2
pour rétablir laCRYPTOGRAPHIC PROVIDER
version 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'
Redémarrez SQL Server.
Pour utiliser la nouvelle empreinte numérique, exécutez la requête suivante à l’aide de la même clé asymétrique ou de la nouvelle clé asymétrique de version.
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>