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
-sql1
Instanzen 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
Kopieren Sie den SQL Server Connector für Key Vault 1.0.4.0 oder eine frühere Version auf den
sql2
instance-Server.Führen Sie die folgende Abfrage auf dem
sql2
Server aus, um dieCRYPTOGRAPHIC 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'
Starten Sie SQL Server neu.
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
Mit der folgenden Abfrage können Sie bestätigen, dass beide asymmetrischen Schlüssel vorhanden sind:
SELECT thumbprint,* FROM master.sys.asymmetric_keys
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;
Sie sollten nun in der Lage sein, die Sicherung wiederherzustellen.
Führen Sie die folgende Abfrage für aus
sql2
, um dieCRYPTOGRAPHIC 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'
Starten Sie SQL Server neu.
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>