Yedeklemeyi geri yüklemeden SQL sunucu yedeklemesinin TDE ile şifrelenip şifrelenmediğini bulma


13

Yedekleme dosyayı geri yüklemeye çalışmadan TDE ile şifrelenmişse SQL Server Yedekleme dosyasından veya MSDB tablolarından bulmanın bir yolu var mı?

Teşekkürler

Yanıtlar:


10

Bir saniyeliğine 1 terabaytlık bir veritabanınız olduğunu hayal edin. Yedeklemek biraz zaman alır ve şifrelemek biraz zaman alır. Öyleyse şunu hayal edin:

  • 09:00 - tam bir yedek almaya başlıyorsunuz
  • 09:01 - başka bir pencerede, veritabanında TDE'yi etkinleştirmeye başlarsınız
  • 09:05 - yedekleme tamamlanır
  • 09:10 - TDE tamamlandı

Tam yedeklemeyi geri yüklemeyi tamamladığınızda, veritabanınızın geri kalanını şifreleyerek TDE'yi uygulamaya devam edeceği göz önüne alındığında, sorgunuzun geri dönmesini beklersiniz?

Tersine, zaten şifrelenmiş bir veritabanıyla başladığınızı ve:

  • 09:00 - TDE'yi kaldırırsınız (bu biraz zaman alır)
  • 09:01 - tam bir yedeklemeye başlarsınız
  • 09:05 - veri sayfaları artık şifrelenmiyor
  • 09:06 - tam yedeklemeniz tamamlanır

Sorgunun geri dönmesini beklersiniz? Bunlar, TDE şifrelemesinin msdb.dbo.backupset içinde bulunan alanlardan biri olmadığına dair örnek senaryolardır .


Hızlı bir yanıt ve @ScottHodgin için hepinize teşekkür ederim evet Yedeklemenin bir TDE veritabanından olup olmadığını bilmek istedim ve Brent'in cevabı bunu netleştirdi.
yegnasew

@Brent Ozar: Her iki durumda da, sorgunun "Kısmen şifreli." Evet, bu bir boole yerine 3 durumlu bir özelliğe sahip olmak anlamına gelir. Açıkçası böyle bir özellik Microsoft uygulamadığı sürece gerçekten mümkün değildir.
Brian

@Brian bingo. Mevcut durum göz önüne alındığında mümkün değildir.
Brent Ozar

30

Ben senaryoyu yedeklemenin TDE verisi içerip içermediğine dair suyu kesinlikle çamurlayabileceği için Brent'in cevabını oyladım.

Eğer TDE bir süre etkin yaşadım Ancak, görülüyor ki FILELISTONLY (Transact-SQL) RESTORE olabilir peşinde olduğunuz bilgi sağlar. Sonuç kümesinde TDEThumbprint"Veritabanı Şifreleme Anahtarının parmak izini gösterir. Şifreleyici parmak izi, anahtarın şifrelendiği sertifikanın bir SHA-1 karmasıdır" adı verilen bir sütun vardır .

Hem TDE şifreli hem de TDE şifreli olmayan yedeklerimin bazılarına baktım.

TDE veritabanlarımın yedeklerinde bu sütunda sertifika parmak izi ve TDE veritabanlarında olmayan yedekler boştu.


2

Scott'un Cevabı genişletildiğinde, bir yedeklemenin şifrelenip şifrelenmediğini size söyleyecek SQL Sorgusu.

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