ฉันสามารถกู้คืนใบรับรอง TDE ได้โดยกู้คืนฐานข้อมูล MASTER หรือไม่


10

(เราโชคดีที่ไม่ได้อยู่ในสถานการณ์นี้เพียงวางแผนล่วงหน้าเพื่อดูว่าตัวเลือกของเราจะเป็นอย่างไรถ้าเกิดขึ้น)

สำหรับฐานข้อมูลที่เข้ารหัสด้วยการเข้ารหัสวันที่โปร่งใส (TDE) สำเนาของการสำรองฐานข้อมูลจะไม่สามารถกู้คืนได้เว้นแต่คุณจะมีสำเนาสำรองของใบรับรองที่ใช้ในการเข้ารหัส

ถ้าคุณไม่มีสิ่งนั้น มีตัวเลือกเพิ่มเติมหรือไม่?

ในกรณีที่เซิร์ฟเวอร์ล้มเหลวทั้งหมดจะคืนค่าการสำรองข้อมูลของฐานข้อมูล MASTER บนฮาร์ดแวร์ใหม่จะคืนค่าใบรับรองหรือไม่

คำตอบ:


9

เนื่องจาก TDE อาศัยใบรับรองที่เก็บไว้ในต้นแบบ (ซึ่งใช้ในการเข้ารหัสคีย์การเข้ารหัสฐานข้อมูล) ดังนั้นวิธีนี้จะใช้ได้ผลก็ต่อเมื่อคุณสามารถกู้คืนฐานข้อมูลหลักไปยังเซิร์ฟเวอร์อื่นด้วยวิธีที่สามารถถอดรหัสใบรับรองได้

นี่คือลำดับชั้นการเข้ารหัส TDE:

  1. Service master key (ป้องกันโดย Windows เชื่อมโยงกับข้อมูลรับรองบัญชีบริการและรหัสเครื่อง)
  2. คีย์หลักของฐานข้อมูล (ในกรณีนี้หนึ่งสำหรับฐานข้อมูลหลัก)
  3. ใบรับรอง
  4. คีย์การเข้ารหัส TDE

สามรายการแรกจะถูกเก็บไว้ในฐานข้อมูลหลักและสามารถสำรองได้ทั้งหมด ที่สี่จะถูกเก็บไว้ (เข้ารหัสโดยใบรับรองจาก # 3) ในส่วนหัวของฐานข้อมูลที่เข้ารหัส

ดังนั้นในสถานการณ์ความล้มเหลวคุณจะต้องกู้คืนลำดับชั้นการเข้ารหัสที่เพียงพอเพื่อให้คุณอ่านคีย์ TDE SQL Server สร้างคีย์บริการหลักเมื่อทำการติดตั้ง ดังนั้นในขณะที่การกู้คืนฐานข้อมูลหลักไปยังอินสแตนซ์ที่แตกต่างกันจะคืนค่ารายการ 2 และ 3 คีย์ที่จำเป็นในการถอดรหัสจะไม่ปรากฏขึ้น ผลลัพธ์: ข้อมูลที่อ่านไม่ได้

สองตัวเลือกที่ดีที่สุดคือการคืนค่าใบรับรอง (# 3) จากการสำรองข้อมูล (ตัวเลือกที่ดีถ้าไม่สามารถเรียกคืนข้อมูลได้ไม่ว่าด้วยเหตุผลใดก็ตาม) หรือกู้คืนฐานข้อมูลหลักของคุณและรหัสหลัก (# 2) จากการสำรองข้อมูล การกู้คืนคีย์หลักอาจเป็นตัวเลือกที่ดีกว่าถ้าคุณมีใบรับรอง / คีย์จำนวนมากที่ได้รับการปกป้องโดยคีย์นี้และต้องทำให้สามารถเข้าถึงได้ทั้งหมดในครั้งเดียว สิ่งนี้มาพร้อมกับข้อควรระวังแบบเดิมที่เกี่ยวข้องกับการกู้คืนฐานข้อมูลหลัก (การเรียงหน้าการเข้าสู่ระบบชื่อฐานข้อมูลและเส้นทางไฟล์ ฯลฯ )

โดยทั่วไปฉันขอแนะนำเฉพาะการกู้คืนข้อมูลหลักในสถานการณ์การกู้คืน สำหรับสถานการณ์การย้ายข้อมูล / การปรับมาตราส่วน (เช่นการใช้กลุ่มความพร้อมใช้งาน / การทำมิเรอร์กับฐานข้อมูลที่เข้ารหัสด้วย TDE) จะเป็นการดีกว่าในการสำรอง / กู้คืนใบรับรอง (# 3) เพื่อให้มีการเข้ารหัสโดยใช้คีย์หลัก ถึง. คุณจะต้องรวมคีย์ส่วนตัวด้วยการสำรองข้อมูลใบรับรอง

ไม่ว่าในกรณีใดคุณจะต้องทำการสำรองข้อมูลคีย์ / ใบรับรองดังนั้นจึงควรปกป้องข้อมูลเหล่านั้นให้ดีและเก็บไว้ในตำแหน่งที่ปลอดภัยซ้ำซ้อน เพียงแค่มีการสำรองข้อมูลของอาจารย์คุณจะไม่ได้รับความเสียหายจาก TDE คุณจะต้องสำรองข้อมูลของคีย์หรือใบรับรองอย่างน้อยหนึ่งรายการ


อืมดังนั้นเราจะสามารถเรียกคืนใบรับรองบนเซิร์ฟเวอร์อื่นโดยไม่เรียกคืน SMK (1) หรือ master db DMK (2) ได้อย่างไร มัน "แนบ" ตัวเองเพื่อ SMK / DMK จากเซิร์ฟเวอร์ใหม่ที่?
BradC

อ่าฉันคิดว่าฉันเข้าใจแล้ว: เมื่อคุณส่งออกใบรับรองคุณกำลังระบุรหัสสำหรับการส่งออกอย่างชัดเจนซึ่งจะแทนที่การพึ่งพา SMK / DMK จากเซิร์ฟเวอร์ดั้งเดิม เมื่อนำเข้าบนเซิร์ฟเวอร์ใหม่คุณจะโอนการพึ่งพาไปยัง SMK / DMK ของเซิร์ฟเวอร์ใหม่ เสียงนั้นใช่ไหม
BradC

ใช่นั่นมันสวยมาก เมื่อคุณส่งออกหรือนำเข้าใบรับรองคุณต้องระบุรหัสผ่านที่ใช้ในการเข้ารหัส / ถอดรหัสการสำรองข้อมูล เมื่อคุณกู้คืนการสำรองข้อมูลใบรับรองจะถูกนำเข้าและเข้ารหัสอีกครั้งด้วย DMK ของเซิร์ฟเวอร์ปลายทาง
db2

5

1. ถ้าคุณต้องการคืนค่าสำเนาสำรองที่เข้ารหัสไปยังเซิร์ฟเวอร์อื่นตามปกติคุณจะพบข้อผิดพลาดต่อไปนี้

 Cannot find server certificate with thumbprint …...

2. หาชื่อใบรับรอง: ในตัวอย่างนี้ vestacert

   SELECT  * FROM   sys.certificates

3. สำรองใบรับรองจากเซิร์ฟเวอร์ต้นทาง (ซอร์สเข้ารหัสเซิร์ฟเวอร์):

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. สร้าง Master Cert ใหม่บนเซิร์ฟเวอร์ UAT หากยังไม่มีอยู่

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

5. กู้คืนการสำรองข้อมูล certs ในเซิร์ฟเวอร์ 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. หลังจากขั้นตอนนี้การกู้คืนข้อมูลสำรองไม่มีข้อผิดพลาดและข้อมูลทั้งหมดอ่านได้

7. แต่สิ่งที่ตลกคือการลบการเข้ารหัสและทำการสำรองข้อมูลใหม่และกู้คืนบนเซิร์ฟเวอร์สุดท้าย (เซิร์ฟเวอร์สุดท้าย) ไม่ทำงานและให้ข้อผิดพลาดต่อไปนี้ไฟล์ "mydb_log" ล้มเหลวในการเริ่มต้นอย่างถูกต้อง ตรวจสอบบันทึกข้อผิดพลาดเพื่อดูรายละเอียดเพิ่มเติม

8. วิธีที่ถูกต้องในการลบการเข้ารหัสจาก UAT คือการลบสัญญาณทั้งหมดเช่นด้านล่างทีละขั้นตอนและจากล่างขึ้นบน

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

9. ตอนนี้สร้างการสำรองข้อมูลใหม่จากเซิร์ฟเวอร์ UAT และคืนค่าเป็นเซิร์ฟเวอร์สุดท้าย

บทความที่ดี: http://sqlserverzest.com/2013/10/03/sql-server-restoring-a-tde-encrypted-database-to-a-different-server/


1
การคืนค่าบันทึกล้มเหลวเนื่องจากไฟล์บันทึกยังคงมีเนื้อหาที่เข้ารหัส หลังจากปิดใช้งานให้สลับไปที่โหมดแบบง่ายทำย้อนกลับเพื่อตัดทอนบันทึกและสำรองข้อมูลอีกครั้ง
IDisposable

0

หากระบบของคุณล้มเหลวและไม่สามารถใช้งานได้คุณสามารถสร้างระบบใหม่และกู้คืนฐานข้อมูลหลักบนระบบที่มีอยู่เพื่อกู้คืนใบรับรอง TDE ตราบใดที่คุณใช้บัญชีบริการเดียวกันในระบบใหม่. จากนั้นคุณควรรีสตาร์ทระบบเพื่อแก้ไขการเข้ารหัสของ Service Master Key ด้วยรหัสของเครื่อง หลังจากนั้นคุณควรจะสามารถสำรองใบรับรอง TDE หรือกู้คืนฐานข้อมูลผู้ใช้และเข้าถึงข้อมูล Service Master Key ได้รับการปกป้องโดย Data Protection API ของเซิร์ฟเวอร์ Windows ในสองวิธีขั้นแรกให้ใช้รหัสเครื่องท้องถิ่นที่เฉพาะเจาะจงกับระบบและอันดับที่สองโดยใช้บัญชีบริการของโปรแกรมฐานข้อมูล เนื่องจากคุณจะไม่มีรหัสเครื่องท้องถิ่นของระบบเดิมอีกต่อไปเนื่องจากระบบล่มคุณจึงต้องใช้บัญชีบริการเดียวกัน ใบรับรอง TDE ถูกสำรองข้อมูลกับฐานข้อมูล แต่ไม่สามารถเข้าถึงได้จนกว่าลำดับชั้นการเข้ารหัสเสร็จสมบูรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.