백업을 복원하지 않고 SQL Server 백업이 TDE로 암호화되었는지 확인하는 방법


13

백업 파일을 복원하지 않고 TDE로 백업을 암호화 한 경우 SQL Server 백업 파일 또는 MSDB 테이블에서 찾을 수있는 방법이 있습니까?

감사

답변:


10

1 테라 바이트의 데이터베이스를 가지고 있다고 잠시 상상해보십시오. 백업하는 데 시간이 걸리고 암호화하는 데 시간이 걸립니다. 그래서 상상해보십시오.

  • 오전 9:00-전체 백업을 시작합니다
  • 오전 9:01-다른 창에서 데이터베이스에서 TDE 활성화를 시작합니다.
  • 오전 9:05-백업 완료
  • 오전 9:10-TDE 완료

전체 백업 복원을 완료하자마자 TDE를 계속 적용하고 나머지 데이터베이스를 암호화하는 경우 쿼리가 반환 될 것으로 예상되는 것은 무엇입니까?

반대로 이미 암호화 된 데이터베이스로 시작하고 다음을 상상해보십시오.

  • 오전 9시-TDE를 제거합니다 (시간이 걸립니다).
  • 오전 9:01-전체 백업을 시작합니다
  • 오전 9:05-데이터 페이지가 더 이상 암호화되지 않습니다
  • 오전 9:06-전체 백업 완료

쿼리가 무엇을 반환 할 것으로 예상하십니까? 다음은 TDE 암호화가 msdb.dbo.backupset에 포함 된 필드 중 하나가 아닌 이유 시나리오의 예 입니다.


빠른 응답에 감사드립니다. @ScottHodgin 예 백업이 TDE 데이터베이스에서 온 것인지 알고 싶었고 Brent의 답변이 명확했습니다.
yegnasew

@Brent Ozar : 두 경우 모두 쿼리가 "부분적으로 암호화 됨"을 반환하기를 원합니다. 예, 이는 부울 대신 3 가지 상태 속성을 갖는 것을 의미합니다. Microsoft가 구현하지 않는 한 이러한 속성은 실제로 실현 가능하지 않습니다.
Brian

@ 브라이언 빙고. 현재 상태에서는 불가능합니다.
브렌트 오자르

30

그의 시나리오는 백업에 TDE 데이터가 포함되어 있는지 여부에 대해 물을 흐릿하게 만들 수 있기 때문에 브렌트의 대답에 찬성 투표 했습니다.

그러나 잠시 동안 TDE를 사용하도록 설정 한 경우 REFILE FILELISTONLY (Transact-SQL) 사용자가 따르는 정보를 제공 할 수 있습니다 . 결과 집합에는 TDEThumbprint"데이터베이스 암호화 키의 지문이 표시됩니다. 암호화 지문은 키가 암호화 된 인증서의 SHA-1 해시"라는 열이 있습니다.

TDE 암호화 및 TDE 암호화가 아닌 일부 백업을 살펴 ​​보았습니다.

내 TDE 데이터베이스의 백업은 해당 열에 인증서 지문이 있고 TDE 데이터베이스가없는 백업은 널입니다.


2

Scott의 답변을 확장하면 백업이 암호화되었는지 여부를 알려주는 SQL 쿼리가 있습니다.

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.