MASTER veritabanını geri yükleyerek bir TDE sertifikasını kurtarabilir miyim?


10

(Neyse ki, şu anda bu durumda değiliz, sadece seçeneklerimizin ne olursa olsun ne olacağını görmek için önceden planlıyoruz.)

Şeffaf Tarih Şifreleme (TDE) ile şifrelenmiş bir veritabanı için, şifrelemek için kullanılan sertifikanın yedeğine sahip olmadıkça veritabanı yedeklemesinin bir kopyası kurtarılamaz.

Ya sahip değilsen? Başka seçenek var mı?

Toplam sunucu hatası durumunda, yeni donanımda MASTER veritabanının yedeğinin geri yüklenmesi de sertifikayı geri yükler mi?

Yanıtlar:


9

TDE, ana bilgisayarda depolanan bir sertifikaya (veritabanı şifreleme anahtarını şifrelemek için kullanılır) dayandığından, bu yalnızca ana veritabanını sertifikanın şifresi çözülebilecek şekilde başka bir sunucuya geri yükleyebilmeniz durumunda işe yarar .

Bu TDE şifreleme hiyerarşisidir:

  1. Hizmet ana anahtarı (Windows tarafından korunur; hizmet hesabı kimlik bilgilerine ve bir makine anahtarına bağlı)
  2. Veritabanı ana anahtarı (bu durumda ana veritabanı için olan)
  3. sertifika
  4. TDE şifreleme anahtarı

İlk üç öğe ana veritabanında depolanır ve bunların tümü yedeklenebilir. Dördüncüsü, şifrelenmiş veritabanının başlığında saklanır (# 3'ten gelen sertifika tarafından şifrelenir).

Bu nedenle, bir başarısızlık senaryosunda, TDE anahtarını okumanıza izin verecek kadar şifreleme hiyerarşisini geri yüklemeniz gerekir. SQL Server, kurulum sırasında hizmet ana anahtarını oluşturur; böylece ana veritabanını farklı bir örneğe geri yüklerken, öğe 2 ve 3'ü de geri yüklerken, bunların şifresini çözmek için gerekli anahtar (lar) mevcut olmayacaktır. Sonuç: okunamayan veriler.

En iyi iki seçenek, sertifikayı (# 3) bir yedeklemeden geri yüklemektir (master, herhangi bir nedenle geri yüklenemezse iyi bir seçenektir) veya ana veritabanınızı ve ana anahtarını (# 2) bir yedeklemeden geri yüklemektir. Bu anahtarla korunan çok sayıda sertifikanız / anahtarınız varsa ve bunların tümünü aynı anda erişilebilir hale getirmeniz gerekiyorsa ana anahtarı geri yüklemek daha iyi bir seçenek olabilir. Bu, normalde ana veritabanını geri yüklemeyle ilişkili aynı önlemlerle birlikte gelir (harmanlamalar, girişler, veritabanı adları ve dosya yolları vb.)

Genel olarak, yalnızca kurtarma senaryosunda master'ı geri yüklemenizi öneririm. Geçiş / ölçeklendirme senaryosu için (Kullanılabilirlik Gruplarını kullanma / TDE şifreli bir veritabanıyla yansıtma gibi) sertifikayı (# 3) yedeklemek / geri yüklemek daha iyidir, böylece taşıdığı her örneğe özgü ana anahtarlar kullanılarak şifrelenir için. Özel anahtarı sertifika yedeklemesine eklemeniz gerekir.

Her durumda, anahtar / sertifika yedeklemeleri yapmanız gerekir, bu yüzden onları iyi koruyun ve yedekli, güvenli yerlerde saklayın. Basitçe ustanın yedeğini sahip olmayacak bir TDE felaket seni çıkarırım; en az bir anahtarın veya sertifikanın yedeğine ihtiyacınız olacak.


Hmm, yani SMK (1) veya master db DMK (2) 'yi geri yüklemeden sertifikayı başka bir sunucuya nasıl geri yükleyebiliriz? Kendini bu yeni sunucudan SMK / DMK'ya "ekliyor" mu?
BradC

Ah, sanırım anlıyorum: sertifikayı dışa aktardığınızda, orijinal sunucudan SMK / DMK'ya bağımlılığın yerini alan ihracat için açıkça bir anahtar sağlıyorsunuz. Yeni sunucuyu içe aktardıktan sonra, bağımlılığı yeni sunucunun SMK / DMK'sına aktarıyorsunuz. Kulağa doğru geliyor mu?
BradC

Evet, neredeyse aynen öyle. Bir sertifikayı dışa veya içe aktarırken, yedeklemeyi şifrelemek / şifresini çözmek için kullanılan bir parola sağlamanız gerekir. Yedeklemeyi geri yüklediğinizde, sertifika alınır ve hedef sunucunun DMK'sıyla yeniden şifrelenir.
db2

5

1.Her zamanki gibi şifreli bir yedeği başka bir sunucuya geri yüklemek isterseniz, aşağıdaki hatayla karşılaşırsınız

 Cannot find server certificate with thumbprint …...

2. sertifika adını bulun: bu örnekte vestacert

   SELECT  * FROM   sys.certificates

3. sertifikayı kaynak sunucudan yedekleyin (Kaynak şifreli sunucu):

BACKUP CERTIFICATE vestacert
TO FILE = 'c:\Backup\certificate_TDE_Test_Certificate.cer'
WITH PRIVATE KEY
(FILE = 'c:\Backup\certificate_TDE_Test_Key.pvk',
ENCRYPTION BY PASSWORD = 'Password12#')

Zaten mevcut değilse UAT sunucusunda yeni Master Sertifikası oluşturun

USE master GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'D1ffPa$$w0rd'

5. yedek sertifikaları UAT sunucusunda geri yükleme (UATserver)

CREATE CERTIFICATE vestacert2
FROM FILE = 'C:\tmp\certificate_TDE_Test_Certificate.cer'     
WITH PRIVATE KEY (FILE = 'C:\tmp\LCMS\certificate_TDE_Test_Key.pvk', 
DECRYPTION BY PASSWORD = 'Passsword12#')

6. Bu adımdan sonra yedeklemeyi geri yüklemekte herhangi bir hata yoktur ve tüm veriler okunabilir.

7.Ama komik olan şey, şifrelemeyi basitçe kaldırmak ve yeni bir yedek almak ve son sunucuya (Final Server) geri yüklemek çalışmıyor ve aşağıdaki hatayı veriyor "mydb_log" dosyası doğru şekilde başlatılamadı. Daha fazla ayrıntı için hata günlüklerini inceleyin.

8.UAT'den şifrelemeyi kaldırmanın doğru yolu, aşağıdaki gibi tüm işaretleri adım adım ve aşağıdan yukarıya kaldırmaktır

    USE master
    ALTER DATABASE mydb SET ENCRYPTION OFF
    USE mydb
    DROP DATABASE ENCRYPTION KEY 
    USE master
    DROP CERTIFICATE vestacert2 
    DROP MASTER KEY

9.Şimdi UAT sunucusundan yeni bir yedekleme oluşturun ve son sunucuya geri yükleyin

iyi makale: http://sqlserverzest.com/2013/10/03/sql-server-restoring-a-tde-encrypted-database-to-a-different-server/


1
Günlük dosyasında hala şifreli içerik bulunduğundan günlüğün geri yüklenmesi başarısız olur. Devre dışı bıraktıktan sonra, Basit moda geçin, günlüğü kısaltmak için bir geri yapın ve ardından yedeklemeyi tekrar yapın.
ıdisposable

0

Sisteminiz çökerse ve kullanılamaz hale gelirse, yeni sistemde aynı hizmet hesabını kullandığınız sürece TDE sertifikasını kurtarmak için yeni bir sistem oluşturabilir ve ana veritabanını mevcut olanın üzerine geri yükleyebilirsiniz.. Daha sonra, yerel ana makine anahtarıyla Servis Ana Anahtarının şifrelemesini düzeltmek için sistemi yeniden başlatmalısınız. Bundan sonra, TDE sertifikasını yedekleyebilmeniz veya kullanıcı veritabanını geri yükleyebilmeniz ve verilere erişebilmeniz gerekir. Hizmet Ana Anahtarı, ilk olarak sisteme özgü yerel makine anahtarı ve ikinci olarak veritabanı motorunun hizmet hesabı kullanılarak Windows sunucusunun Veri Koruma API'sı tarafından iki şekilde korunur. Sistem çökmesi nedeniyle artık orijinal sistemin yerel makine anahtarına sahip olmayacağınızdan, aynı hizmet hesabını kullanmanız gerekir. TDE sertifikası veritabanıyla yedeklenir, ancak şifreleme hiyerarşisi tamamlanana kadar erişilemez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.