Partager via


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 et sql2 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

  1. Copiez le connecteur SQL Server pour Key Vault 1.0.4.0 ou une version antérieure vers le sql2 serveur d’instances.

  2. Exécutez la requête suivante sur le sql2 serveur pour modifier la CRYPTOGRAPHIC 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'
    
    1. Redémarrez SQL Server.

    2. 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
      
  3. 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
    
  4. 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;
    
  5. Vous devez maintenant être en mesure de restaurer la sauvegarde.

  6. Exécutez la requête suivante pour sql2 rétablir la CRYPTOGRAPHIC 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'
    
  7. Redémarrez SQL Server.

  8. 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>