Bisakah saya memulihkan sertifikat TDE dengan mengembalikan database MASTER?

10

(Untungnya, kita saat ini tidak dalam situasi ini, hanya merencanakan ke depan untuk melihat apa pilihan kita jika itu terjadi.)

Untuk database yang dienkripsi dengan Enkripsi Tanggal Transparan (TDE), salinan cadangan basis data tidak dapat dipulihkan kecuali Anda memiliki cadangan sertifikat yang digunakan untuk mengenkripsi datanya.

Bagaimana jika Anda tidak memilikinya? Apakah ada opsi tambahan?

Jika terjadi kegagalan total server, akankah memulihkan cadangan database MASTER pada perangkat keras baru juga mengembalikan sertifikat?

BradC
sumber

Jawaban:

9

Karena TDE bergantung pada sertifikat yang disimpan dalam master (yang digunakan untuk mengenkripsi kunci enkripsi basis data), maka ini hanya akan berfungsi jika Anda bisa mengembalikan database master ke server lain sedemikian rupa sehingga sertifikat dapat didekripsi.

Ini adalah hierarki enkripsi TDE:

  1. Kunci master layanan (dilindungi oleh Windows; terikat pada kredensial akun layanan, dan kunci mesin)
  2. Kunci master basis data (dalam hal ini, kunci master basis data)
  3. Sertifikat
  4. Kunci enkripsi TDE

Tiga item pertama disimpan dalam database master, dan semuanya dapat dicadangkan. Yang keempat disimpan (dienkripsi oleh sertifikat dari # 3) di header database terenkripsi.

Jadi dalam skenario kegagalan, Anda harus mengembalikan cukup hirarki enkripsi untuk memungkinkan Anda membaca kunci TDE. SQL Server membuat kunci master layanan saat instalasi; jadi sementara mengembalikan database master ke instance yang berbeda juga akan mengembalikan item 2 dan 3, kunci yang diperlukan untuk mendekripsi mereka tidak akan ada. Hasil: data yang tidak dapat dibaca.

Dua opsi terbaik adalah mengembalikan sertifikat (# 3) dari cadangan (opsi yang baik jika master tidak dapat dipulihkan karena alasan apa pun), atau pulihkan database master dan kunci masternya (# 2) dari cadangan. Mengembalikan kunci master mungkin merupakan opsi yang lebih baik jika Anda memiliki banyak sertifikat / kunci yang dilindungi oleh kunci ini, dan harus membuatnya semuanya dapat diakses sekaligus. Ini disertai dengan tindakan pencegahan yang sama yang biasanya terkait dengan memulihkan database master (collations, login, nama database, dan path file, dll.)

Secara umum, saya hanya merekomendasikan memulihkan master dalam skenario pemulihan. Untuk skenario migrasi / peningkatan skala (seperti menggunakan Grup yang Tersedia / mirroring dengan basis data terenkripsi TDE), lebih baik untuk membuat cadangan / mengembalikan sertifikat (# 3) sehingga dienkripsi menggunakan kunci utama yang unik untuk setiap contoh saat bergerak untuk. Anda harus memasukkan kunci pribadi dengan cadangan sertifikat.

Dalam hal apa pun, Anda harus membuat cadangan kunci / sertifikat, jadi jaga dengan baik, dan simpan di lokasi yang aman dan redundan. Cukup memiliki cadangan master tidak akan membuat Anda keluar dari bencana TDE; Anda akan memerlukan cadangan setidaknya satu kunci atau sertifikat.

db2
sumber
Hmm, jadi bagaimana kita bisa mengembalikan sertifikat di server lain tanpa juga mengembalikan SMK (1) atau master db DMK (2)? Apakah itu "melampirkan" dirinya ke SMK / DMK dari server baru itu?
BradC
Ah, saya rasa saya mengerti: ketika Anda mengekspor sertifikat, Anda secara eksplisit memberikan kunci untuk ekspor, yang menggantikan ketergantungan pada SMK / DMK dari server asli. Setelah mengimpor di server baru, Anda kemudian mentransfer ketergantungan ke SMK / DMK server baru. Apakah itu benar?
BradC
Yup, itu persis seperti itu. Saat Anda mengekspor atau mengimpor sertifikat, Anda harus memberikan kata sandi yang digunakan untuk mengenkripsi / mendekripsi cadangan. Ketika Anda mengembalikan cadangan, sertifikat diimpor, dan dienkripsi ulang dengan DMK server tujuan.
db2
5

1.Jika Anda ingin mengembalikan cadangan terenkripsi ke server lain seperti biasa Anda mengalami kesalahan berikut

 Cannot find server certificate with thumbprint …...

2. Temukan nama sertifikat: dalam contoh ini vestacert

   SELECT  * FROM   sys.certificates

3.mundurkan sertifikat dari server sumber (Sumber dienkripsi server):

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#')

4.Buat Master Cert baru di server UAT jika belum ada

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

5. Kembalikan sertifikat cadangan di server UAT (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. Setelah langkah ini mengembalikan cadangan tidak memiliki kesalahan dan semua data dapat dibaca.

7.Tapi yang lucu adalah bahwa menghapus enkripsi sederhana dan mengambil cadangan baru dan mengembalikannya di server final (Final Server) tidak berfungsi dan memberikan kesalahan berikut File "mydb_log" gagal diinisialisasi dengan benar. Periksa log kesalahan untuk detail lebih lanjut.

8. Cara yang benar untuk menghapus enkripsi dari UAT adalah dengan menghapus semua tanda seperti di bawah ini langkah demi langkah dan dari bawah ke atas

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

9. Sekarang buat cadangan baru dari server UAT dan kembalikan ke server final

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

Iman Abidi
sumber
1
Pemulihan log gagal karena file log masih memiliki konten yang dienkripsi. Setelah menonaktifkan, beralih ke mode Sederhana, lakukan kembali untuk memotong log dan MAKA cadangan lagi.
IDisposable
0

Jika sistem Anda mogok dan menjadi tidak dapat digunakan, maka Anda dapat membangun sistem baru dan mengembalikan basis data master dari yang sudah ada untuk memulihkan sertifikat TDE selama Anda menggunakan akun layanan yang sama pada sistem baru. Anda kemudian harus memulai ulang sistem untuk memperbaiki enkripsi Kunci Master Layanan dengan kunci mesin lokal. Setelah itu, Anda harus dapat mencadangkan sertifikat TDE atau mengembalikan basis data pengguna dan mengakses data. Service Master Key dilindungi oleh API Perlindungan Data dari server Windows dalam dua cara, pertama menggunakan kunci mesin lokal yang khusus untuk sistem dan kedua menggunakan akun layanan dari mesin database. Karena Anda tidak lagi memiliki kunci mesin lokal dari sistem asli karena sistem crash, Anda harus menggunakan akun layanan yang sama. Sertifikat TDE didukung dengan database, tetapi tidak dapat diakses sampai hierarki enkripsi selesai.

Michael Keleher
sumber