Delen via


Fout 33111 bij het herstellen van back-ups van oudere versies van SQL Server-connector voor Microsoft Azure Key Vault

Origineel KB-nummer: 4470999

In dit artikel wordt een fout beschreven die optreedt wanneer u een TDE-back-up (Transparent Data Encryption) probeert te herstellen die is gemaakt op servers die gebruikmaken van oudere versies van SQL Server Connector voor de Microsoft Azure Key Vault.

Symptomen

U ondervindt problemen wanneer u probeert een back-up van een database te herstellen vanuit SQL Server die gebruikmaakt van SQL Server Connector voor Key Vault 1.0.4.0 of een eerdere versie naar SQL Server-connector voor Microsoft Azure Key Vault 1.0.5.0.

Stel dat u de volgende exemplaren van Microsoft SQL Server implementeert:

  • SQL Server exemplaar sql1 heeft SQL Server Connector voor Key Vault 1.0.4.0 geïmplementeerd.

  • SQL Server exemplaar sql2 heeft SQL Server Connector voor Key Vault 1.0.5.0 geïmplementeerd.

  • Gebruik de volgende query om een asymmetrische sleutel te implementeren op zowel als sql1sql2 exemplaren van dezelfde asymmetrische sleutelbron in Key Vault:

    CREATE ASYMMETRIC KEY TDE_KEY 
    FROM PROVIDER AzureKeyVaultProvider 
    WITH PROVIDER_KEY_NAME = 'key1', 
    CREATION_DISPOSITION = OPEN_EXISTING
    

Als u de waarde van vingerafdruk op beide servers bekijkt, ziet u dat de lengten van de vingerafdruk verschillen, hoewel ze op basis van dezelfde bron zijn gemaakt. De vingerafdruk van versie 1.0.5.0 is langer dan versie 1.0.4.0.

Voorbeeld van vingerafdruk 1.0.4.0:

0x2C5677D76F76D77F80

Voorbeeld van vingerafdruk 1.0.5.0:

0x373B314B78E8D59A0925494558FEF14B726216C5

De wijziging veroorzaakt problemen tijdens back-up- en herstelbewerkingen.

Voorbeeld:

U hebt een databaseback-up die is versleuteld met een asymmetrische sleutel in Key Vault in het sql1 exemplaar.

Het sql2 exemplaar heeft een asymmetrische sleutel gemaakt.

Als u de back-up op het sql2 exemplaar probeert te herstellen, mislukt de bewerking en wordt een foutbericht geretourneerd dat lijkt op het volgende bericht:

Msg 33111, Niveau 16, Status 4, LineNumber <>

Kan de asymmetrische serversleutel met vingerafdruk '0x2C5677D76F76D77F80' niet vinden.

Opmerkingen:

De query voor het ophalen van de vingerafdruk van elke sleutel is als volgt:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

De query voor het ophalen van de vingerafdruk van elke TDE-database is als volgt:

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

Oorzaak

Er is een update geïntroduceerd in versie 1.0.5.0 van SQL Server Connector voor Key Vault die de manier wijzigt waarop het programma vingerafdruk berekent. In versie 1.0.5.0 komt deze berekening overeen met de logica die wordt gebruikt door de programma-engine ter ondersteuning van het volgende migratiescenario:

Van: On-premises Microsoft SQL Server die gebruikmaakt van Extensible Key Management (EKM)

Aan: Microsoft Azure SQL Database die gebruikmaakt van BYOK-ondersteuning (Bring Your Own Key) voor Transparent Data Encryption (TDE)

Vanwege deze wijziging kunnen er problemen optreden wanneer u databaseback-ups probeert te herstellen vanaf versie 1.0.4.0 of een eerdere versie.

Oplossing

  1. Kopieer de SQL Server Connector voor Key Vault 1.0.4.0 of een eerdere versie naar de sql2 exemplaarserver.

  2. Voer de volgende query uit op de sql2 server om de CRYPTOGRAPHIC PROVIDER te wijzigen in versie 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. Start SQL Server opnieuw.

    2. Maak een nieuwe asymmetrische sleutel met behulp van 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. U kunt het bestaan van beide asymmetrische sleutels bevestigen met behulp van de volgende query:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Voeg referenties toe aan asymmetrische sleutel toegewezen aanmelding (TDE_Login in het volgende voorbeeld) met behulp van een query die vergelijkbaar is met de volgende query:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. U moet nu de back-up kunnen herstellen.

  6. Voer de volgende query uit op sql2 om de CRYPTOGRAPHIC PROVIDER terug te keren naar versie 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. Start SQL Server opnieuw.

  8. Als u de nieuwe vingerafdruk wilt gebruiken, voert u de volgende query uit met behulp van dezelfde asymmetrische sleutel of de nieuwe versie asymmetrische sleutel.

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