Microsoft Azure Key Vault için SQL Server Bağlayıcısı'ın eski sürümlerinden yedeklemeler geri yüklenirken hata 33111

Özgün KB numarası: 4470999

Bu makalede, Microsoft Azure Key Vault için SQL Server Bağlayıcısı'nın eski sürümlerini kullanan sunucularda yapılan Saydam Veri Şifrelemesi (TDE) yedeklemesini geri yüklemeye çalıştığınızda oluşan bir hata açıklanır.

Belirtiler

Key Vault 1.0.4.0 veya önceki bir sürüm için SQL Server Bağlayıcısı kullanan SQL Server veritabanı yedeklemesini 1.0.5.0 Microsoft Azure Key Vault için SQL Server Bağlayıcısı geri yüklemeye çalıştığınızda sorunlarla karşılaşırsınız.

Aşağıdaki Microsoft SQL Server örneklerini dağıttığınızı varsayalım:

  • SQL Server örneğinde sql1 dağıtılan Key Vault 1.0.4.0 için SQL Server Bağlayıcısı vardır.

  • SQL Server örneğinde sql2 dağıtılan Key Vault 1.0.5.0 için SQL Server Bağlayıcısı vardır.

  • Key Vault'de aynı asimetrik anahtar kaynağından hem hem de sql1sql2 örneklerde asimetrik anahtar dağıtmak için aşağıdaki sorguyu kullanın:

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

Her iki sunucudaki parmak izlerinin değerini gözden geçirirseniz, parmak izi uzunluklarının aynı kaynaktan oluşturuldukları halde farklılık gösterdiğini fark edeceksiniz. Sürüm 1.0.5.0 parmak izi 1.0.4.0 sürümünden daha uzundur.

1.0.4.0 parmak izi örneği:

0x2C5677D76F76D77F80

1.0.5.0 parmak izi örneği:

0x373B314B78E8D59A0925494558FEF14B726216C5

Değişiklik, yedekleme ve geri yükleme işlemleri sırasında sorunların oluşmasına neden olur.

Örneğin:

Örnekteki Key Vault asimetrik anahtarla şifrelenen bir veritabanı yedeğiniz sql1 var.

Örnekte sql2 asimetrik bir anahtar oluşturulmuştur.

Örnekte yedeklemeyi sql2 geri yüklemeye çalışırsanız işlem başarısız olur ve aşağıdaki iletiye benzer bir hata iletisi döndürür:

Msg 33111, Düzey 16, State 4, Line <LineNumber>

Parmak izi '0x2C5677D76F76D77F80' olan sunucu asimetrik anahtarı bulunamıyor.

Notlar:

Her anahtarın parmak izini almak için sorgu aşağıdaki gibidir:

SELECT thumbprint, * FROM master.sys.asymmetric_keys

Her TDE veritabanının parmak izini almak için sorgu aşağıdaki gibidir:

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

Neden

Key Vault için SQL Server Bağlayıcısı'nın 1.0.5.0 sürümünde, programın parmak izlerini hesaplama biçimini değiştiren bir güncelleştirme kullanıma sunulmuştur. Sürüm 1.0.5.0'da bu hesaplama, aşağıdaki geçiş senaryolarını desteklemek için program altyapısı tarafından kullanılan mantıkla eşleşir:

Kimden: Genişletilebilir Anahtar Yönetimi (EKM) kullanan şirket içi Microsoft SQL Server

To: Saydam Veri Şifrelemesi (TDE) için Kendi Anahtarını Getir (BYOK) desteğini kullanan Microsoft Azure SQL Veritabanı

Bu değişiklik nedeniyle, veritabanı yedeklerini 1.0.4.0 veya önceki bir sürümden geri yüklemeyi denediğinizde sorunlarla karşılaşabilirsiniz.

Çözüm

  1. Key Vault 1.0.4.0 veya önceki bir sürüm için SQL Server Bağlayıcısını örnek sunucuya sql2 kopyalayın.

  2. 1.0.4.0 sürümünü değiştirmek CRYPTOGRAPHIC PROVIDER için sunucuda aşağıdaki sorguyu sql2 çalıştırın:

    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. SQL Server yeniden başlatın.

    2. 1.0.4.0 kullanarak CRYPTOGRAPHIC PROVIDER yeni bir asimetrik anahtar oluşturun.

        CREATE ASYMMETRIC KEY TDE_KEY_1040 
        FROM PROVIDER AzureKeyVaultProvider 
        WITH PROVIDER_KEY_NAME = 'key1', 
        CREATION_DISPOSITION = OPEN_EXISTING
      
  3. Aşağıdaki sorguyu kullanarak asimetrik anahtarların her ikisinin de varlığını onaylayabilirsiniz:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. Aşağıdaki sorguya benzer bir sorgu kullanarak asimetrik anahtar eşlenmiş oturum açma bilgilerine (aşağıdaki örnekte TDE_Login) kimlik bilgileri ekleyin:

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. Artık yedeklemeyi geri yükleyebiliyor olmanız gerekir.

  6. 1.0.5.0 sürümüne geri dönmek CRYPTOGRAPHIC PROVIDER için aşağıdaki sorguyu sql2 çalıştırın:

    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. SQL Server yeniden başlatın.

  8. Yeni parmak izini kullanmak için aynı asimetrik anahtarı veya yeni sürüm asimetrik anahtarını kullanarak aşağıdaki sorguyu çalıştırın.

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