Erreur 33111 lors de la restauration des sauvegardes à partir de versions antérieures de connecteur SQL Server pour Microsoft Azure Key Vault
Numéro de base de connaissances d’origine : 4470999
Cet article décrit une erreur qui se produit lorsque vous essayez de restaurer une sauvegarde TDE (Transparent Data Encryption) effectuée sur des serveurs qui utilisent des versions antérieures du connecteur SQL Server 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 le connecteur SQL Server 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éployez les instances suivantes de Microsoft SQL Server :
L’instance
sql1
DE SQL Server dispose du connecteur SQL Server pour Key Vault 1.0.4.0 déployé.L’instance
sql2
DE SQL Server dispose du connecteur SQL Server pour Key Vault 1.0.5.0 déployé.Utilisez la requête suivante pour déployer une clé asymétrique sur les deux
sql1
etsql2
les instances à 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 sur les deux serveurs, vous remarquerez que les longueurs de l’empreinte numérique 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 supérieure à 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 l’instance sql1
.
L’instance sql2
a une clé asymétrique créée.
Si vous essayez de restaurer la sauvegarde sur l’instance sql2
, l’opération échoue et retourne un message d’erreur semblable au message suivant :
Msg 33111, Level 16, State 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 du connecteur SQL Server pour Key Vault qui modifie 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 EKM (Extensible Key Management)
Pour : 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 vers le
sql2
serveur d’instances.Exécutez la requête suivante sur le
sql2
serveur pour modifier 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 la version 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 devez maintenant être en mesure de restaurer la sauvegarde.
Exécutez la requête suivante pour
sql2
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>