Fehler 33111 beim Wiederherstellen von Sicherungen aus älteren Versionen von SQL Server-Connector für Microsoft Azure Key Vault

Ursprüngliche KB-Nummer: 4470999

In diesem Artikel wird ein Fehler beschrieben, der auftritt, wenn Sie versuchen, eine TDE-Sicherung (Transparent Data Encryption) wiederherzustellen, die auf Servern erstellt wird, die ältere Versionen von SQL Server Connector für die Microsoft Azure Key Vault verwenden.

Symptome

Probleme treten auf, wenn Sie versuchen, eine Datenbanksicherung aus SQL Server wiederherzustellen, die SQL Server Connector für Key Vault 1.0.4.0 oder eine frühere Version auf SQL Server-Connector für Microsoft Azure Key Vault 1.0.5.0 verwendet.

Angenommen, Sie stellen die folgenden Instanzen von Microsoft SQL Server bereit:

  • sql1 SQL Server instance hat SQL Server Connector für Key Vault 1.0.4.0 bereitgestellt.

  • sql2 SQL Server instance hat SQL Server Connector für Key Vault 1.0.5.0 bereitgestellt.

  • Verwenden Sie die folgende Abfrage, um einen asymmetrischen Schlüssel für - und sql2 -sql1Instanzen aus derselben asymmetrischen Schlüsselquelle in Key Vault bereitzustellen:

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

Wenn Sie den Wert von Fingerabdrücken auf beiden Servern überprüfen, werden Sie feststellen, dass sich die Fingerabdrucklängen unterscheiden, obwohl sie aus derselben Quelle erstellt werden. Der Fingerabdruck der Version 1.0.5.0 ist länger als Version 1.0.4.0.

Beispiel für 1.0.4.0-Fingerabdruck:

0x2C5677D76F76D77F80

Beispiel für 1.0.5.0-Fingerabdruck:

0x373B314B78E8D59A0925494558FEF14B726216C5

Die Änderung führt zu Problemen bei Sicherungs- und Wiederherstellungsvorgängen.

Beispiel:

Sie verfügen über eine Datenbanksicherung, die mit einem asymmetrischen Schlüssel in Key Vault im sql1 instance verschlüsselt wird.

Die sql2 instance verfügt über einen asymmetrischen Schlüssel.

Wenn Sie versuchen, die Sicherung auf dem sql2 instance wiederherzustellen, schlägt der Vorgang fehl und gibt eine Fehlermeldung zurück, die der folgenden Meldung ähnelt:

Msg 33111, Level 16, State 4, Line <LineNumber>

Der asymmetrische Serverschlüssel mit dem Fingerabdruck "0x2C5677D76F76D77F80" wurde nicht gefunden.

Hinweise:

Die Abfrage zum Abrufen des Fingerabdrucks der einzelnen Schlüssel lautet wie folgt:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

Die Abfrage zum Abrufen des Fingerabdrucks jeder TDE-Datenbank lautet wie folgt:

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

Ursache

In Version 1.0.5.0 von SQL Server Connector für Key Vault wurde ein Update eingeführt, das die Art und Weise ändert, wie das Programm Fingerabdrücke berechnet. In Version 1.0.5.0 entspricht diese Berechnung der Logik, die von der Programm-Engine zur Unterstützung des folgenden Migrationsszenarios verwendet wird:

From: On-premises Microsoft SQL Server that uses Extensible Key Management (EKM)

An: Microsoft Azure SQL-Datenbank, die BYOK-Unterstützung (Bring Your Own Key) für Transparent Data Encryption (TDE) verwendet

Aufgrund dieser Änderung können Probleme auftreten, wenn Sie versuchen, Datenbanksicherungen von Version 1.0.4.0 oder einer früheren Version wiederherzustellen.

Lösung

  1. Kopieren Sie den SQL Server Connector für Key Vault 1.0.4.0 oder eine frühere Version auf den sql2 instance-Server.

  2. Führen Sie die folgende Abfrage auf dem sql2 Server aus, um die CRYPTOGRAPHIC PROVIDER in Version 1.0.4.0 zu ändern:

    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. Starten Sie SQL Server neu.

    2. Erstellen Sie mithilfe von 1.0.4.0 einen neuen asymmetrischen CRYPTOGRAPHIC PROVIDER Schlüssel.

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. Mit der folgenden Abfrage können Sie bestätigen, dass beide asymmetrischen Schlüssel vorhanden sind:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Fügen Sie Anmeldeinformationen zu der Anmeldung mit asymmetrischem Schlüssel hinzu (TDE_Login im folgenden Beispiel), indem Sie eine Abfrage verwenden, die der folgenden Abfrage ähnelt:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Sie sollten nun in der Lage sein, die Sicherung wiederherzustellen.

  6. Führen Sie die folgende Abfrage für aussql2, um die CRYPTOGRAPHIC PROVIDER version 1.0.5.0 zu rückgängig machen:

    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. Starten Sie SQL Server neu.

  8. Um den neuen Fingerabdruck zu verwenden, führen Sie die folgende Abfrage entweder mit demselben asymmetrischen Schlüssel oder dem neuen asymmetrischen Schlüssel aus.

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