Czy ruch sieciowy jest szyfrowany podczas pisania zdalnych kopii zapasowych przy użyciu programu SQL Server TDE?

9

Mówią, że nie ma czegoś takiego jak „głupie pytanie”, więc oto:

Rozumiem, że SQL Server Transparent Data Encryption (TDE) szyfruje dane w spoczynku, więc pliki bazy danych (.mdf) i pliki kopii zapasowych (.bak) są szyfrowane, jeśli ktoś włamie się do twojego magazynu i ukradnie te pliki. Rozumiem również, że dane są odszyfrowywane podczas odczytu z dysku, więc nie są szyfrowane w pamięci (w ruchu). Dlatego dane żądane przez użytkownika uruchamiającego zdalne zapytanie (wybierz * z SensitiveData) nie będą szyfrowane podczas podróży przez sieć, a zatem będą podatne na przechwytywanie.

Tak więc, zakładając, że wszystkie powyższe informacje są poprawne, oto moje głupie pytanie: jeśli moja instancja SQL Server znajduje się na komputerze A, a moje kopie zapasowe bazy danych TDE są odpisywane do pamięci na komputerze zdalnym B, czy dane operacji tworzenia kopii zapasowej są szyfrowane podczas podróży z komputer A ma zostać zapisany na dysku na komputerze B? Zakładam, że tak musi być (ponieważ przypuszczam, że operacja szyfrowania odbywa się najpierw na komputerze A), ale nie mogę znaleźć potwierdzenia tego w żadnej dokumentacji Microsoft ani na blogach. Podobnie podczas operacji przywracania - czy ktoś przechwycił dane przesyłane z dysku na komputerze B w celu przywrócenia bazy danych na komputerze A - czy uzna, że ​​dane w ruchu są zaszyfrowane?

SQLServerVillain
źródło
2
To naprawdę dobre pytanie
Shanky

Odpowiedzi:

7

Tak, kopie zapasowe są szyfrowane podczas przenoszenia przez sieć, ponieważ dane TDE są szyfrowane na dysku, a operacja tworzenia kopii zapasowej nigdy ich nie odszyfrowuje .

Mity zapasowe Paula Randala :

Mit 30-09) kopie zapasowe odczytują dane przez pulę buforów

Nie . Podsystem tworzenia kopii zapasowych otwiera własne kanały dla plików bazy danych, aby uniknąć spadku wydajności wynikającego z konieczności wczytywania wszystkiego do pamięci SQL Server i powrotu do urządzenia kopii zapasowej (a także skutecznego opróżniania puli buforów). Jeśli poprosisz o sprawdzenie sumy kontrolnej strony, wykorzystuje ona swoją małą część pamięci.

Jeśli strony zostały załadowane do puli buforów („normalna” przestrzeń pamięci, której SQL używa do buforowania tabeli bazy danych i danych indeksu), musiałaby zostać odszyfrowana. Ale kopie zapasowe tego nie robią, po prostu zrzucają nieprzetworzone zaszyfrowane „zakresy” (ciągłe 8-stronicowe fragmenty) do miejsca docelowego kopii zapasowej.

Udało mi się uzyskać od Paula Randala potwierdzenie, że jego powyższy komentarz jest nadal istotny dla TDE :

Działa dokładnie tak samo. Pula buforów dokonuje szyfrowania, a następnie dodaje sumę kontrolną strony przed zapisaniem strony na dysku. Kopie zapasowe nigdy nie czytają puli buforów. Tak więc, kopia zapasowa bazy danych TDE wciąż zawiera szyfrowanie. Sumy kontrolne strony są sprawdzane, ale kod zapasowy, a nie kod puli buforów.

Innymi słowy, jeśli włączyłeś CHECKSUM w bazie danych, zostaną one dodane (podczas normalnych operacji zapisu SQL) po wystąpieniu szyfrowania. Oznacza to, że proces tworzenia kopii zapasowej może odczytać nieprzetworzony (zaszyfrowany) zakres, sprawdzić sumę kontrolną i zapisać kopię zapasową, wszystko bez odszyfrowywania danych.

Jest to prawie na pewno powód, dla którego (przed SQL 2016) włączenie kompresji kopii zapasowej bazy danych za pomocą TDE nic nie zrobiło, ponieważ zaszyfrowane dane nie są bardzo kompresowalne :

Dzieje się tak, ponieważ podczas wykonywania kopii zapasowych zaszyfrowanej bazy danych TDE strony bazy danych nie są odszyfrowywane podczas tworzenia kopii zapasowej. Kopie zapasowe są tworzone w tym samym zaszyfrowanym stanie, w jakim są normalnie, a następnie kompresowane . Z natury zaszyfrowane dane są bardzo unikalne, więc kompresja danych nie ma większego znaczenia w przypadku zaszyfrowanych danych.

W przypadku operacji przywracania obowiązuje ta sama zasada. Zaszyfrowana kopia zapasowa pozostaje zaszyfrowana w sieci i jest zapisywana na dysku serwera przywracającego w stanie nadal zaszyfrowanym. Są odszyfrowywane tylko wtedy, gdy baza danych jest ładowana do pamięci po zakończeniu przywracania.

BradC
źródło
3

... czy dane operacji tworzenia kopii zapasowej są szyfrowane podczas przesyłania z komputera A w celu zapisania na dysku na komputerze B?

Tak, jest odszyfrowywany, gdy wchodzi do puli buforów i szyfrowany, gdy opuszcza. W tej sytuacji, ponieważ piszemy na dysk, najpierw jest szyfrowany, a następnie zapisywany. Ponieważ zapisy są przesyłane przez sieć, dane są szyfrowane, ale inne części ruchu sieciowego nie są.

... podczas operacji przywracania ... czy uznaliby, że dane w ruchu są zaszyfrowane?

Tak, ponieważ obowiązuje to samo co powyżej, ale w odwrotnej kolejności. Dane zostały zaszyfrowane na dysku, są odczytywane i przesyłane w stanie zaszyfrowanym. Następnie dostaje się do instancji i ładuje do puli buforów, gdzie jest odszyfrowywany jako krok po drodze.

Sean Gallardy
źródło
1
Myślę, że to jest poprawne, ale nie jestem pewien, czy jest to poprawne z powodów, które mówisz. Myślałem, że KOPIA ZAPASOWA wyśle ​​surowe ZAKRESY bazy danych (nie strony) na dysk, omijając krok deszyfrowania, gdy zostaną załadowane do pamięci. Mogę się mylić, ale teraz szukam dokumentacji.
BradC
1
Znalazłem go, zobacz mit Paula Randala 30-09 : „Podsystem tworzenia kopii zapasowych otwiera własne kanały dla plików bazy danych, aby uniknąć spadku wydajności wynikającego z konieczności wczytywania wszystkiego do pamięci programu SQL Server i powrotu do urządzenia kopii zapasowej”. Nie wspomina się konkretnie o TDE, ale jeśli proces tworzenia kopii zapasowej jest jego własnym kanałem, rozszyfrowanie po prostu natychmiastowe ponowne szyfrowanie wydawałoby się marnotrawstwem. Może nawet sprawdzić poprawność CHECKSUMS i / lub zastosować kompresję bez deszyfrowania, jeśli są one włączone.
BradC
@BradC Nie mówiłem, że sama kopia zapasowa będzie działać w ten sposób, ale jak proces szyfrowania / deszyfrowania będzie działał z danymi spoczynkowymi. Jeśli jest to niejednoznaczne, zmienię to, jednak nie mówię, że tak działa kopia zapasowa tylko wtedy, gdy i gdzie odbywa się szyfrowanie / deszyfrowanie.
Sean Gallardy
Ale jeśli proces tworzenia kopii zapasowej nie korzysta z puli buforów, wówczas twoje rozumowanie jest niepoprawne, nawet jeśli wniosek (pakiety kopii zapasowych są zaszyfrowane) jest słuszny z innego powodu.
BradC
@BradC Nie, powód jest taki, że jest już zapisany na dysk, więc jest już zaszyfrowany ... Nie jestem pewien, w jaki sposób otrzymujesz, że mówię, że kopia zapasowa jest odszyfrowana, a następnie ponownie zaszyfrowana, przechodząc przez BP. Pomyślałem, że to dość proste stwierdzenie, że było już zaszyfrowane, więc kopiowanie na inny dysk lub kopiowanie z innego dysku go nie odszyfrowuje ... Nie jestem pewien, jak to się myli.
Sean Gallardy