Come scoprire se il backup del server SQL è crittografato con TDE senza ripristinare il backup


13

Esiste un modo per trovare dal file di backup di SQL Server o dalle tabelle MSDB se il backup è crittografato con TDE senza tentare di ripristinare il file di backup?

Grazie

Risposte:


10

Immagina per un secondo di avere un database da 1 terabyte. Il backup richiede un po 'di tempo e la crittografia richiede un po' di tempo. Quindi immagina che:

  • 9:00 - inizi a eseguire un backup completo
  • 9:01 - in un'altra finestra, si avvia l'abilitazione di TDE sul database
  • 9:05 - il backup è completo
  • 9:10 - TDE viene completato

Cosa ti aspetteresti che la tua query restituisca, dato che non appena finisci di ripristinare il backup completo, continuerà ad applicare TDE, crittografando il resto del tuo database?

Al contrario, immagina di iniziare con un database già crittografato e:

  • 9:00 - rimuovi TDE (che richiede del tempo)
  • 9:01 - si avvia un backup completo
  • 9:05 - le pagine dei dati non sono più crittografate
  • 9:06 - il backup completo è completo

Cosa ti aspetteresti che la query restituisca? Questi sono scenari di esempio del perché la crittografia TDE non è uno dei campi inclusi in msdb.dbo.backupset .


Grazie a tutti per una rapida risposta e @ScottHodgin sì, volevo sapere se il backup proviene da un database TDE e la risposta di Brent lo ha chiarito.
yegnasew,

@Brent Ozar: In entrambi i casi, vorrei che la query restituisse "Parzialmente crittografato". Sì, questo significa avere una proprietà a 3 stati anziché un valore booleano. Ovviamente una tale proprietà non è realmente fattibile se Microsoft non la implementa.
Brian

@Brian bingo. Non è possibile dato lo stato attuale.
Brent Ozar,

30

Ho votato a favore della risposta di Brent , poiché il suo scenario potrebbe sicuramente confondere la questione se il backup contenesse dati TDE.

Tuttavia, se TDE è stato abilitato per un po ', sembra che RESTORE FILELISTONLY (Transact-SQL) possa fornire le informazioni che stai cercando. Sul set di risultati è presente una colonna denominata TDEThumbprint"Mostra l'identificazione personale della chiave di crittografia del database. L'identificazione personale del crittografo è un hash SHA-1 del certificato con il quale è crittografata la chiave."

Ho esaminato alcuni dei miei backup che erano entrambi crittografati TDE e non crittografati TDE.

I backup dei miei database TDE avevano l'identificazione personale del certificato in quella colonna e i backup che non avevano database TDE erano nulli.


2

Estendendo la risposta di Scott, ecco la query SQL che ti dirà se un backup è crittografato o meno.

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'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.