วิธีค้นหาว่าการสำรองข้อมูลเซิร์ฟเวอร์ SQL นั้นถูกเข้ารหัสด้วย TDE โดยไม่กู้คืนการสำรองข้อมูลหรือไม่


13

มีวิธีการค้นหาจากไฟล์ SQL Server Backup หรือตาราง MSDB หรือไม่หากการสำรองข้อมูลถูกเข้ารหัสด้วย TDE โดยไม่ต้องพยายามเรียกคืนไฟล์ข้อมูลสำรอง?

ขอบคุณ

คำตอบ:


10

ลองคิดดูสักครู่ว่าคุณมีฐานข้อมูล 1 เทราไบต์ การสำรองข้อมูลใช้เวลาสักครู่และการเข้ารหัสจะใช้เวลาครู่หนึ่ง ดังนั้นลองจินตนาการว่า:

  • 9:00 น. - คุณเริ่มทำการสำรองข้อมูลเต็มรูปแบบ
  • 9:01 น. - ในหน้าต่างอื่นคุณเริ่มเปิดใช้งาน TDE บนฐานข้อมูล
  • 9:05 น. - การสำรองข้อมูลเสร็จสมบูรณ์
  • 9:10 น. - TDE เสร็จสมบูรณ์

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

ในทางกลับกันลองจินตนาการว่าคุณเริ่มต้นด้วยฐานข้อมูลที่เข้ารหัสไว้แล้วและ:

  • 9:00 น. - คุณลบ TDE (ซึ่งใช้เวลาพอสมควร)
  • 9:01 น. - คุณเริ่มการสำรองข้อมูลเต็มรูปแบบ
  • 9:05 น. - หน้าข้อมูลจะไม่ถูกเข้ารหัสอีกต่อไป
  • 09:06 น - การสำรองข้อมูลทั้งหมดของคุณเสร็จสมบูรณ์

คุณคาดหวังให้แบบสอบถามส่งคืนอะไร เหล่านี้เป็นตัวอย่างสถานการณ์ที่ว่าทำไมการเข้ารหัส TDE ไม่ได้เป็นหนึ่งของเขตข้อมูลที่รวมอยู่ในmsdb.dbo.backupset


ขอบคุณทุกท่านสำหรับการตอบกลับอย่างรวดเร็วและ @ScottHodgin ใช่ฉันต้องการทราบว่าการสำรองข้อมูลมาจากฐานข้อมูล TDE หรือไม่และคำตอบของ Brent ทำให้ชัดเจน
yegnasew

@Bent Ozar: ในทั้งสองกรณีฉันต้องการให้ข้อความค้นหาส่งคืน "เข้ารหัสบางส่วน" ใช่นี่หมายถึงการมีทรัพย์สิน 3 สถานะแทนที่จะเป็นบูลีน เห็นได้ชัดว่าสถานที่ให้บริการดังกล่าวไม่สามารถทำได้หากไม่ได้ใช้งาน Microsoft
Brian

@Brian bingo ไม่สามารถทำได้เนื่องจากสถานะปัจจุบัน
Brent Ozar

30

ฉันลงมติให้คำตอบของเบรนต์เนื่องจากสถานการณ์ของเขาอาจทำให้น้ำขุ่นมัวอย่างแน่นอนว่าข้อมูลสำรองมีข้อมูล TDE หรือไม่

อย่างไรก็ตามหากคุณเปิดใช้งาน TDE มาระยะหนึ่งดูเหมือนว่าRESTORE FILELISTONLY (Transact-SQL) อาจให้ข้อมูลที่คุณต้องการ มีคอลัมน์ในชุดผลลัพธ์ที่เรียกว่าTDEThumbprint"แสดงรหัสประจำตัวของคีย์การเข้ารหัสฐานข้อมูลรหัสประจำตัวของการเข้ารหัสคือแฮช SHA-1 ของใบรับรองที่มีการเข้ารหัสคีย์"

ฉันดูข้อมูลสำรองบางส่วนซึ่งเข้ารหัสทั้ง TDE และไม่เข้ารหัส TDE

การสำรองข้อมูลของฐานข้อมูล TDE ของฉันมีรหัสประจำตัวใบรับรองในคอลัมน์นั้นและการสำรองข้อมูลที่ไม่มีฐานข้อมูล TDE นั้นเป็นโมฆะ


2

ขยายคำตอบของ Scott นี่คือ SQL Query ที่จะบอกคุณว่าการสำรองข้อมูลถูกเข้ารหัสหรือไม่

Declare @backupFile varchar(max) = 'J:\backups\psa20191029.bak'

 DECLARE @fileListTable TABLE (
    [LogicalName]           NVARCHAR(128),
    [PhysicalName]          NVARCHAR(260),
    [Type]                  CHAR(1),
    [FileGroupName]         NVARCHAR(128),
    [Size]                  NUMERIC(20,0),
    [MaxSize]               NUMERIC(20,0),
    [FileID]                BIGINT,
    [CreateLSN]             NUMERIC(25,0),
    [DropLSN]               NUMERIC(25,0),
    [UniqueID]              UNIQUEIDENTIFIER,
    [ReadOnlyLSN]           NUMERIC(25,0),
    [ReadWriteLSN]          NUMERIC(25,0),
    [BackupSizeInBytes]     BIGINT,
    [SourceBlockSize]       INT,
    [FileGroupID]           INT,
    [LogGroupGUID]          UNIQUEIDENTIFIER,
    [DifferentialBaseLSN]   NUMERIC(25,0),
    [DifferentialBaseGUID]  UNIQUEIDENTIFIER,
    [IsReadOnly]            BIT,
    [IsPresent]             BIT,
    [TDEThumbprint]         VARBINARY(32) -- remove this column if using SQL 2005
)
INSERT INTO @fileListTable EXEC('RESTORE FILELISTONLY FROM DISK = '''+@backupFile+'''')


select distinct LogicalName + case when TDEThumbprint is null then ' is not encrypted'
                                    else ' is encrypted'
                                    end as AmIEncrypted
from @fileListTable
where type='D'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.