Aby zarządzać bezpieczeństwem danych, których kopia zapasowa została utworzona przez system plików jako pliki kopii zapasowej bazy danych, SQL Server zapewnia funkcję szyfrowania kopii zapasowej. W tym artykule omówimy opcje szyfrowania dostępne w SQL Server dla kopii zapasowych baz danych. Przyjrzymy się bliżej szczegółom użytkowania, korzyściom i zalecanym praktykom szyfrowania kopii zapasowej bazy danych SQL Server podczas procesu tworzenia kopii zapasowej.
Co to jest szyfrowanie kopii zapasowej bazy danych?
Potrzeba zapewnienia bezpieczeństwa danych gwałtownie rośnie. Oprócz danych musisz mieć pewność, że pliki kopii zapasowej bazy danych są również zabezpieczone, zwłaszcza te znajdujące się w systemie plików serwera. Dane w natywnych plikach kopii zapasowych programu SQL Server są przechowywane jako zwykły tekst w systemie plików. Możesz je odczytać bez wysiłku za pomocą edytora tekstu.
W zależności od typów danych wykorzystywanych w twoich tabelach, niektóre dane są znacznie łatwiejsze do odczytania niż inne. Poniższy rysunek przedstawia plik kopii zapasowej otwarty w edytorze tekstu Notatnika:
Jak widać, kod T-SQL jest widoczny i łatwy do odczytania. Jednak po utworzeniu kopii zapasowej z szyfrowaniem nikt nie będzie miał szansy dostać się pod maskę.
Poniższy rysunek przedstawia ten sam AdventureWorks2014.bak z szyfrowaniem.
Począwszy od SQL Server 2014, silnik bazy danych może szyfrować dane podczas tworzenia pliku kopii zapasowej. Podczas tworzenia kopii zapasowej można określić algorytm szyfrowania i program szyfrujący — certyfikat lub klucz asymetryczny. Funkcja szyfrowania kopii zapasowych poprawia bezpieczeństwo i działa w każdej domenie, w której można wykorzystać sam SQL Server.
Co jest wymagane?
Aby zaszyfrować kopię zapasową bazy danych, musisz określić algorytm szyfrowania i program szyfrujący. Istnieją dwie obsługiwane opcje szyfrowania:
- Algorytm szyfrowania:AES_128, AES_192, AES_256 i Triple_DES_3Key
- Szyfr:certyfikat lub klucz asymetryczny
Jeśli przypadkowo zgubisz certyfikat lub klucz asymetryczny, nigdy nie będziesz miał szansy na przywrócenie pliku kopii zapasowej. Dlatego bardzo ważne jest przechowywanie certyfikatu lub klucza asymetrycznego w bezpiecznym miejscu.
Korzyści z szyfrowania kopii zapasowych bazy danych
- Pomaga zabezpieczyć dane.
- Może być stosowany do baz danych, które są zaszyfrowane za pomocą przezroczystego szyfrowania danych (TDE).
- Obsługiwane dla kopii zapasowych utworzonych przez zarządzane przez SQL Server kopie zapasowe na Microsoft Azure, co zapewnia dodatkowe bezpieczeństwo kopii zapasowych poza siedzibą.
- Obsługuje wiele algorytmów szyfrowania do 256 bitów AES. Pozwala to wybrać algorytm, który spełnia Twoje wymagania.
- Możliwa integracja kluczy szyfrowania z dostawcami rozszerzonego zarządzania kluczami (EKM).
Zmiany w tabelach systemowych
Podczas tworzenia zaszyfrowanej kopii zapasowej niektóre informacje są zapisywane w MSDB baza danych systemu:algorytm klucza, typ szyfrowania i używany odcisk palca szyfrowania.
Zestaw kopii zapasowej tabela zawiera informacje dla każdego zestawu kopii zapasowych. Zestaw kopii zapasowych zawiera kopię zapasową pojedynczej udanej operacji tworzenia kopii zapasowej.
Następujące kolumny:key_algorithm , szyfrownik_thumprint , typ_szyfratora tego DMV przechowuje informacje o tym, czy kopia zapasowa jest zaszyfrowana, typ programu szyfrującego i odcisk palca programu szyfrującego.
SELECT TOP 5 name, key_algorithm, encryptor_thumbprint, encryptor_type FROM msdb.dbo.backupset AS backupset with (NOLOCK) WHERE type IN ('D', 'I') AND database_name = 'AdventureWorks2014' ORDER BY backupset.backup_start_date DESC GO
Oto, co zobaczysz:
Aby uzyskać więcej informacji na temat tabeli zestawu kopii zapasowych, przeczytaj następującą stronę dokumentacji MSDN:zestaw kopii zapasowych (Transact-SQL)
zapasowy zestaw mediów tabela zawiera informacje dla każdego zestawu nośników kopii zapasowych. Kolumna is_encrypted wskazuje, czy kopia zapasowa jest zaszyfrowana, czy nie. 0 – nieszyfrowane i 1 – zaszyfrowane. Początkowo ta wartość jest ustawiona na NULL, co wskazuje na niezaszyfrowany backupmediaset.
SELECT TOP 5 media_set_id, is_encrypted, is_compressed FROM msdb.dbo.backupmediaset AS mediaset with (NOLOCK) ORDER BY mediaset.media_set_id DESC GO
Zestaw wyników:
Metody szyfrowania kopii zapasowych bazy danych
1. Z pomocą dbForge Studio dla SQL Server
Możliwe jest tworzenie szyfrowania kopii zapasowej bazy danych za pomocą SSMS, ale osobiście wolę dbForge Studio dla SQL Server — potężne IDE do zarządzania, administrowania, rozwoju, raportowania i analizy danych SQL Server. To IDE jest jak szwajcarski nóż dla programistów baz danych. Narzędzie zapewnia podstawowe funkcje, które są zawarte w dobrze zaprojektowanym i intuicyjnym GUI. Aby zapoznać się z kluczowymi funkcjami, zobacz film wprowadzający do dbForge Studio dla SQL Server – Przegląd (04:03 min):
Po pobraniu i zainstalowaniu narzędzia musisz utworzyć połączenie z bazą danych.
Pamiętaj, że funkcja szyfrowania kopii zapasowych została wprowadzona w SQL Server 2014. SQL Server Express nie obsługuje szyfrowania podczas tworzenia kopii zapasowej.
1. Po połączeniu się z wymaganą instancją SQL Server w Eksploratorze bazy danych , kliknij nazwę serwera, aby rozwinąć drzewo serwerów.
2. Kliknij prawym przyciskiem żądaną bazę danych, wskaż Zadania, a następnie kliknij Utwórz kopię zapasową . Pojawi się okno dialogowe Utwórz kopię zapasową bazy danych.
W Połączeniu w polu listy, sprawdź nazwę połączenia. Możesz opcjonalnie wybrać inne połączenie z listy.
3. Kliknij Dalej, aby przejść do Opcji multimediów .
Opcja szyfrowania jest wyłączona, jeśli wybierzesz opcję dołączenia do istniejącego zestawu kopii zapasowych na stronie Opcje nośnika kreatora kopii zapasowej bazy danych. Wybierz kopię zapasową do nowego zestawu nośników i usuń wszystkie istniejące zestawy kopii zapasowych.
Utwórz certyfikat/klucz przed rozpoczęciem procesu. Certyfikat lub klucz asymetryczny utworzony przed uruchomieniem kreatora kopii zapasowej bazy danych zostanie wyświetlony na liście rozwijanej.
Wybierz Utwórz kopię zapasową na nowym zestawie multimediów i usuń wszystkie istniejące zestawy kopii zapasowych możliwość utworzenia nowej kopii zapasowej. Wpisz nazwę w Nazwie zestawu multimediów pole tekstowe i opcjonalnie opisz zestaw multimediów w Opisie zestawu multimediów pole tekstowe.
4. Kliknij Dalej, aby przejść do Opcji kopii zapasowej .
Na tej stronie wybierz opcję Szyfruj kopię zapasową. Wybierz algorytm i klucz certyfikatu lub asymetryczny. Kliknij Utwórz kopię zapasową . W moim przypadku proces trwa kilka sekund.
2. Korzystanie z instrukcji Transact-SQL
Użyjemy BBAZY DANYCH ACKUP oświadczenie o utworzeniu kopii zapasowej bazy danych i DZIENNIK KOPII ZAPASOWYCH aby utworzyć plik kopii zapasowej dziennika transakcji.
Pełna kopia zapasowa bazy danych
Ten typ kopii zapasowej tworzy kopię zapasową całej bazy danych. Zawiera część dziennika transakcji, dzięki czemu można odzyskać pełną bazę danych po przywróceniu pełnej kopii zapasowej bazy danych.
Poniższy kod tworzy pełną bazę danych zaszyfrowaną kopia zapasowa w podanej lokalizacji przy użyciu określonego certyfikatu i algorytmu szyfrowania.
BACKUP DATABASE AdventureWorks2014 TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014.bak' WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Full', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5, COMPRESSION, ENCRYPTION ( ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1 ) GO
Uwaga:Jeśli nigdy nie wykonano kopii zapasowej certyfikatu używanego do szyfrowania, po zakończeniu tworzenia kopii zapasowej pojawi się następujące ostrzeżenie. Upewnij się, że wykonałeś kopię zapasową certyfikatu wraz z kluczem prywatnym skojarzonym z certyfikatem:
Ostrzeżenie :Nie wykonano kopii zapasowej certyfikatu używanego do szyfrowania klucza szyfrowania bazy danych. Należy natychmiast wykonać kopię zapasową certyfikatu i klucza prywatnego skojarzonego z certyfikatem. Jeśli certyfikat kiedykolwiek stanie się niedostępny lub jeśli będziesz musiał przywrócić lub dołączyć bazę danych na innym serwerze, musisz mieć kopie zapasowe zarówno certyfikatu, jak i klucza prywatnego, w przeciwnym razie nie będziesz mógł otworzyć bazy danych.
Różnicowa kopia zapasowa bazy danych
Podczas tworzenia tego typu kopii zapasowej, kopia bazy danych lub pliku składa się tylko z części bazy danych lub pliku, które uległy zmianie od czasu ostatniej pełnej kopii zapasowej. Ponadto ten typ kopii zapasowej zajmuje zwykle mniej miejsca niż pełna kopia zapasowa.
Poniższy kod tworzy różnicową bazę danych szyfrowaną kopia zapasowa w podanej lokalizacji przy użyciu określonego certyfikatu i algorytmu szyfrowania.
BACKUP DATABASE AdventureWorks2014 TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak' WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Differential', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5, COMPRESSION, DIFFERENTIAL, ENCRYPTION ( ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1 ) GO
Kopia zapasowa dziennika transakcji bazy danych
Baza danych SQL Server zawiera jeden lub więcej plików dziennika transakcji, oprócz plików danych, które rejestrują wszystkie transakcje i modyfikacje bazy danych dokonane przez każdą transakcję. Informacje o transakcjach są gromadzone tylko w bazach danych, w których tryb odzyskiwania bazy danych jest ustawiony na pełny odzyskiwanie lub zarejestrowane zbiorczo odzyskiwanie.
Poniższy kod tworzy dziennik transakcji bazy danych zaszyfrowany kopia zapasowa w podanej lokalizacji przy użyciu określonego certyfikatu i algorytmu szyfrowania.
BACKUP LOG AdventureWorks2014 TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak' WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, TLog', FORMAT, INIT, SKIP, STATS = 5, COMPRESSION, ENCRYPTION ( ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1 ) GO
3. Korzystanie z PowerShell
SQL Server 2014 umożliwia tworzenie kopii zapasowych bazy danych przy użyciu programu Windows Powershell. Poniższy kod tworzy opcje szyfrowania i używa ich jako wartości parametru w komendzie Backup-SqlDatabase:
$encryptionOption=New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1” Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –BackupFile “D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak” –CompressionOption On –EncryptionOption $encryptionOption
Porównując powyższe podejścia, nie ma wątpliwości, że tworzenie zaszyfrowanych kopii zapasowych bazy danych jest dość łatwym zadaniem, gdy masz odpowiednie narzędzie, takie jak dbForge Studio dla SQL Server od Devarta.
Dodatkowe czytanie
Mój przyjaciel Pinal Dave – entuzjasta technologii SQL Server, niezależny konsultant, autor różnych książek o SQL Server i kursów Pluralsight napisał doskonały artykuł, do którego sugeruję dalszą lekturę:SQL SERVER – Praktyczne zastosowanie szyfrowania kopii zapasowych