Зашифрован ли сетевой трафик при записи удаленных резервных копий с использованием SQL Server TDE?

9

Они говорят, что такой вещи, как «глупый вопрос», не существует, так что вот так:

Я понимаю, что SQL Server Transparent Data Encryption (TDE) шифрует данные в состоянии покоя, поэтому файлы вашей базы данных (.mdf) и файлы резервных копий (.bak) шифруются на случай, если кто-то проникнет в ваше хранилище и похитит эти файлы. Я также понимаю, что данные считываются при чтении с диска, поэтому они не зашифрованы в памяти (в движении). Поэтому данные, запрашиваемые пользователем, выполняющим удаленный запрос (выберите * из SensitiveData), будут незашифрованными при путешествии по сети и, следовательно, уязвимы для перехвата.

Итак, если предположить, что все вышеприведенное верно, вот мой глупый вопрос: если мой экземпляр SQL Server находится на компьютере A, а мои резервные копии базы данных TDE записаны в хранилище на удаленном компьютере B, шифруются ли данные операции резервного копирования по мере их поступления из компьютер A будет записан на диск на компьютере B? Я предполагаю, что это должно быть (потому что я предполагаю, что операция шифрования сначала выполняется на компьютере A), но я не могу найти подтверждения этому ни в одной из документов Microsoft или в блогах. И точно так же, во время операции восстановления - кто-нибудь должен был перехватить данные, передаваемые с диска на компьютер B, чтобы восстановить базу данных на компьютере A - они обнаружат, что данные в движении зашифрованы?

SQLServerVillain
источник
2
Это действительно хороший вопрос
Шэнки

Ответы:

7

Да, резервные копии шифруются при перемещении по сети, поскольку данные TDE шифруются на диске, и операция резервного копирования никогда не расшифровывает их .

Резервные мифы Пола Рэндала :

Миф 30-09) резервное копирование чтения данных через буферный пул

Нет . Подсистема резервного копирования открывает свои собственные каналы для файлов базы данных, чтобы избежать снижения производительности при необходимости чтения всего в память SQL Server и возврата обратно на устройство резервного копирования (а также эффективной очистки пула буферов в процессе). Если вы запрашиваете проверку контрольной суммы страницы, она использует свою небольшую часть памяти.

Если страницы были загружены в буферный пул («нормальное» пространство памяти, используемое SQL для кэширования таблицы базы данных и индексирования данных), их пришлось бы расшифровать. Но резервные копии этого не делают, они просто сбрасывают необработанные зашифрованные «экстенты» (непрерывные 8-страничные блоки) в место назначения резервной копии.

Мне удалось получить подтверждение от Пола Рэндала, что его вышеупомянутый комментарий по-прежнему актуален для TDE :

Это работает точно так же. Буферный пул выполняет шифрование, затем добавляет контрольную сумму страницы перед записью страницы на диск. Резервные копии никогда не читаются через буферный пул. Так что да, в резервной копии базы данных TDE есть шифрование. Контрольные суммы страниц проверяются, но по коду резервной копии, а не коду пула буферов.

Другими словами, если вы включили CHECKSUM в базу данных, они добавляются (во время обычных операций записи SQL) после выполнения шифрования. Это означает, что процесс резервного копирования может считывать необработанный (зашифрованный) экстент, проверять контрольную сумму и записывать резервную копию, и все это без расшифровки данных.

Это почти наверняка является причиной того, что (до SQL 2016) включение сжатия резервной копии в базе данных с TDE ничего не делало, поскольку зашифрованные данные не очень сжимаемы :

Это связано с тем, что при создании резервных копий зашифрованной базы данных TDE страницы базы данных не дешифруются при резервном копировании. Они сохраняются в том же зашифрованном состоянии, в котором они обычно находятся, а затем сжимаются . По своей природе зашифрованные данные очень уникальны, поэтому сжатие данных не очень помогает против зашифрованных данных.

Для операции восстановления применяется тот же принцип. Зашифрованная резервная копия остается зашифрованной по всей сети и записывается на диск восстанавливающего сервера в их все еще зашифрованном состоянии. Они дешифруются только тогда, когда база данных загружена в память после завершения восстановления.

BradC
источник
3

... Зашифрованы ли данные операции резервного копирования при передаче с компьютера A для записи на диск на компьютере B?

Да, он расшифровывается при входе в пул буферов и шифруется при выходе. В этой ситуации, поскольку мы пишем на диск, он сначала шифруется, а затем записывается. Поскольку записи выполняются по сети, сами данные зашифрованы, а любые другие части сетевого трафика - нет.

... во время операции восстановления ... они обнаружат, что данные в движении зашифрованы?

Да, поскольку применимо то же, что и выше, но в обратном порядке. Данные были зашифрованы на диске, читаются и передаются в зашифрованном виде. Затем он попадает в экземпляр и загружается в буферный пул, где он не шифруется как шаг в пути.

Шон Галларди
источник
1
Я думаю, что это правильно, но я не уверен, что это правильно по причинам, которые вы говорите. Я думал, что BACKUP отправит необработанные базы данных EXTENTS (не страницы) на диск, поэтому обходя этап расшифровки, когда они загружаются в память. Я могу ошибаться, но сейчас ищу документацию.
BradC
1
Обнаружил это, см . Миф Пола Рэндала 30-09 : «Подсистема резервного копирования открывает свои собственные каналы для файлов базы данных, чтобы избежать снижения производительности при необходимости чтения всего в память SQL Server и возврата к устройству резервного копирования». В частности, не упоминается TDE, но если процесс резервного копирования является собственным каналом, расшифровка может показаться пустой тратой, просто немедленно перешифровав. Он может даже проверять CHECKSUMS и / или применять сжатие без расшифровки, если они включены.
BradC
@BradC Я не говорил, что сама резервная копия будет работать таким образом, но как процесс шифрования / дешифрования будет работать с данными покоя. Если это двусмысленно, я изменю это, однако я не говорю, что это - то, как резервное копирование работает только тогда, когда и где происходит шифрование / дешифрование.
Шон Галларди
Но если в процессе резервного копирования не используется пул буферов, ваши рассуждения неверны, даже если заключение (пакеты резервного копирования зашифрованы) верны по другой причине.
BradC
@BradC Нет, причина в том, что он уже записан на диск, поэтому он уже зашифрован ... Не уверен, как вы получаете, что я утверждаю, что резервная копия дешифруется, а затем повторно шифруется, проходя через БП. Я подумал, что довольно просто сказать, что он уже зашифрован, поэтому копирование на другой диск или копирование с другого диска не расшифровывает его ... Не знаю, как вы это путаете.
Шон Галларди