Udostępnij przez


Błąd 33111 podczas przywracania kopii zapasowych ze starszych wersji programu SQL Server Connector for Microsoft Azure Key Vault

Oryginalny numer KB: 4470999

W tym artykule omówiono błąd występujący podczas próby przywrócenia kopii zapasowej Transparent Data Encryption (TDE), która jest wykonywana na serwerach korzystających ze starszych wersji łącznika programu SQL Server dla usługi Microsoft Azure Key Vault.

Symptomy

Podczas próby przywrócenia kopii zapasowej bazy danych z programu SQL Server, który używa łącznika programu SQL Server dla usługi Key Vault 1.0.4.0 lub starszej wersji do łącznika programu SQL Server Connector dla usługi Microsoft Azure Key Vault 1.0.5.0.

Załóżmy, że wdrażasz następujące wystąpienia programu Microsoft SQL Server:

  • Wystąpienie sql1 programu SQL Server ma wdrożony łącznik programu SQL Server dla usługi Key Vault 1.0.4.0.

  • Wystąpienie sql2 programu SQL Server ma wdrożony łącznik programu SQL Server dla usługi Key Vault 1.0.5.0.

  • Użyj następującego zapytania, aby wdrożyć klucz asymetryczny zarówno na wystąpieniach, jak sql1 i sql2 z tego samego źródła klucza asymetrycznego w usłudze Key Vault:

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

Jeśli przeglądasz wartość odcisków palca na obu serwerach, zauważysz, że długość odcisku palca różni się, mimo że są one tworzone na podstawie tego samego źródła. Odcisk palca w wersji 1.0.5.0 jest dłuższy niż wersja 1.0.4.0.

Przykład odcisku palca 1.0.4.0:

0x2C5677D76F76D77F80

Przykład odcisku palca 1.0.5.0:

0x373B314B78E8D59A0925494558FEF14B726216C5

Zmiana powoduje występowanie problemów podczas operacji tworzenia kopii zapasowych i przywracania.

Przykład:

Masz kopię zapasową bazy danych zaszyfrowaną za pomocą klucza asymetrycznego w usłudze Key Vault w wystąpieniu sql1 .

Wystąpienie sql2 ma utworzony klucz asymetryczny.

Jeśli spróbujesz przywrócić kopię zapasową w wystąpieniu sql2 , operacja zakończy się niepowodzeniem i zwróci komunikat o błędzie podobny do następującego komunikatu:

Msg 33111, poziom 16, stan 4, numer wiersza <>

Nie można odnaleźć klucza asymetrycznego serwera z odciskiem palca "0x2C5677D76F76D77F80".

Uwagi:

Zapytanie do pobrania odcisku palca każdego klucza jest następujące:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

Zapytanie do pobrania odcisku palca każdej bazy danych TDE jest następujące:

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

Przyczyna

Wprowadzono aktualizację w wersji 1.0.5.0 łącznika programu SQL Server dla usługi Key Vault, która zmienia sposób obliczania odcisków palca przez program. W wersji 1.0.5.0 to obliczenie jest zgodne z logiką używaną przez aparat programu do obsługi następującego scenariusza migracji:

Z: lokalny program Microsoft SQL Server, który korzysta z rozszerzalnego zarządzania kluczami (EKM)

Do: Usługa Microsoft Azure SQL Database korzystająca z obsługi funkcji Bring Your Own Key (BYOK) dla funkcji Transparent Data Encryption (TDE)

Z powodu tej zmiany mogą wystąpić problemy podczas próby przywrócenia kopii zapasowych bazy danych z wersji 1.0.4.0 lub starszej.

Rozwiązanie

  1. Skopiuj łącznik programu SQL Server dla usługi Key Vault w wersji 1.0.4.0 lub starszej sql2 do serwera wystąpień.

  2. Uruchom następujące zapytanie na sql2 serwerze, aby zmienić CRYPTOGRAPHIC PROVIDER wersję na 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. Uruchom ponownie program SQL Server.

    2. Utwórz nowy klucz asymetryczny przy użyciu CRYPTOGRAPHIC PROVIDER wersji 1.0.4.0.

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. Istnienie obu kluczy asymetrycznych można potwierdzić przy użyciu następującego zapytania:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Dodaj poświadczenia do logowania mapowanego asymetrycznego klucza (TDE_Login w poniższym przykładzie) przy użyciu zapytania podobnego do następującego zapytania:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Teraz powinno być możliwe przywrócenie kopii zapasowej.

  6. Uruchom następujące zapytanie, sql2 aby przywrócić CRYPTOGRAPHIC PROVIDER wersję 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. Uruchom ponownie program SQL Server.

  8. Aby użyć nowego odcisku palca, uruchom następujące zapytanie przy użyciu tego samego klucza asymetrycznego lub nowego klucza asymetrycznego wersji.

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