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?
źródło
Odpowiedzi:
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 :
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 :
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 :
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.
źródło
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ą.
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.
źródło