Aracılığıyla paylaş


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

Ö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 bir 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 için SQL Server Bağlayıcısı'nı veya önceki bir sürümü kullanan SQL Server'dan 1.0.5.0 Microsoft Azure Key Vault için SQL Server Bağlayıcısı bir veritabanı yedeklemesini 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 Key Vault 1.0.4.0 için SQL Server Bağlayıcısı dağıtıldı.

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

  • Key Vault'ta aynı asimetrik anahtar kaynağından hem hem de sql1 sql2 örneklere 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şturulmuş olsa da farklı olduğunu 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.

Örnek:

Örnekte Key Vault'taki asimetrik anahtarla şifrelenmiş bir veritabanı yedeğiniz sql1 var.

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

Örnekteki 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 sunuldu. 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 (KAG) 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üklemeye çalıştığınızda 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'i 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 her iki asimetrik anahtarın da 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ükleyebilmeniz gerekir.

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

    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'i 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>