Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verschlüsselung der SQL Server-Datenbanksicherung

Um die Datensicherheit zu verwalten, die vom Dateisystem als Datenbanksicherungsdateien gesichert wurde, bietet SQL Server die Sicherungsverschlüsselungsfunktion. In diesem Artikel werden wir über Verschlüsselungsoptionen sprechen, die in SQL Server für Datenbanksicherungen verfügbar sind. Wir werden uns die Verwendungsdetails, Vorteile und empfohlenen Vorgehensweisen für die Verschlüsselung der SQL Server-Datenbanksicherung während des Sicherungsvorgangs genauer ansehen.

Was ist Datenbank-Backup-Verschlüsselung?

Die Notwendigkeit, Daten sicher aufzubewahren, wächst dramatisch. Zusammen mit den Daten müssen Sie sicherstellen, dass auch Ihre Datenbank-Backup-Dateien gesichert sind, insbesondere die auf einem Server-Dateisystem. Die Daten in den nativen SQL Server-Sicherungsdateien werden als Klartext im Dateisystem gespeichert. Sie können sie mühelos mit einem Texteditor lesen.
Abhängig von den in Ihren Tabellen verwendeten Datentypen sind einige Daten viel einfacher zu lesen als andere. Das folgende Bild zeigt die im Notepad-Texteditor geöffnete Sicherungsdatei:

Wie Sie sehen können, ist der T-SQL-Code sichtbar und einfach zu lesen. Sobald wir jedoch das Backup mit einer Verschlüsselung erstellt haben, hat niemand mehr die Möglichkeit, unter die Haube zu kommen.

Das folgende Bild zeigt dasselbe AdventureWorks2014.bak mit einer Verschlüsselung.

Ab SQL Server 2014 kann die Datenbank-Engine die Daten beim Erstellen einer Sicherungsdatei verschlüsseln. Sie können den Verschlüsselungsalgorithmus und den Verschlüssler angeben, entweder ein Zertifikat oder einen asymmetrischen Schlüssel, während Sie eine Sicherung erstellen. Die Sicherungsverschlüsselungsfunktion verbessert die Sicherheit und funktioniert in jeder Domäne, in der SQL Server selbst verwendet werden kann.

Was ist erforderlich?

Um die Datenbanksicherung zu verschlüsseln, müssen Sie einen Verschlüsselungsalgorithmus und einen Verschlüsseler angeben. Es gibt zwei unterstützte Verschlüsselungsoptionen:

  • Verschlüsselungsalgorithmus:AES_128, AES_192, AES_256 und Triple_DES_3Key
  • Verschlüsselung:Ein Zertifikat oder asymmetrischer Schlüssel

Wenn Sie versehentlich das Zertifikat oder den asymmetrischen Schlüssel verlieren, haben Sie keine Chance, die Sicherungsdatei wiederherzustellen. Daher ist es sehr wichtig, das Zertifikat oder den asymmetrischen Schlüssel an einem sicheren Ort aufzubewahren.

Vorteile der Datenbank-Backup-Verschlüsselung

  • Trägt zum Schutz von Daten bei.
  • Kann auf Datenbanken angewendet werden, die mit Hilfe von Transparent Data Encryption (TDE) verschlüsselt sind.
  • Unterstützt für Backups, die von SQL Server Managed Backup to Microsoft Azure erstellt wurden, was zusätzliche Sicherheit für Offsite-Backups bietet.
  • Unterstützt zahlreiche Verschlüsselungsalgorithmen bis zu AES 256 Bit. Auf diese Weise können Sie einen Algorithmus auswählen, der Ihren Anforderungen entspricht.
  • Möglich, Verschlüsselungsschlüssel mit Anbietern von Extended Key Management (EKM) zu integrieren.

Änderungen in Systemtabellen

Während der Erstellung des verschlüsselten Backups werden einige Informationen in der MSDB aufgezeichnet Systemdatenbank:Schlüsselalgorithmus, Verschlüsselungstyp und verwendeter Verschlüsselungs-Fingerabdruck.
Das Backupset Tabelle enthält Informationen für jeden Sicherungssatz. Ein Sicherungssatz enthält die Sicherung für einen einzelnen, erfolgreichen Sicherungsvorgang.
Die folgenden Spalten:key_algorithm , encryptor_thumprint , Verschlüsselungstyp dieser DMV speichern Informationen darüber, ob die Sicherung verschlüsselt ist, den Verschlüsselungstyp und den Verschlüsselungs-Fingerabdruck.

SELECT TOP 5 name, key_algorithm, encryptor_thumbprint, encryptor_typeFROM msdb.dbo.backupset AS backupset with (NOLOCK)WHERE type IN ('D', 'I') AND database_name ='AdventureWorks2014'ORDER BY backupset.backup_start_date DESCGO 

Hier ist, was Sie sehen werden:

Um weitere Informationen über die Backupset-Tabelle zu erhalten, lesen Sie die folgende MSDN-Dokumentationsseite:backupset (Transact-SQL)

Das Backup-Medienset Die Tabelle enthält Informationen für jeden Sicherungsmediensatz. Die Spalte is_encrypted gibt an, ob die Sicherung verschlüsselt ist oder nicht. 0 – unverschlüsselt und 1 – verschlüsselt. Anfangs ist dieser Wert auf NULL gesetzt, was auf einen unverschlüsselten Sicherungsmediensatz hinweist.

SELECT TOP 5 media_set_id, is_encrypted, is_compressedFROM msdb.dbo.backupmediaset AS mediaset with (NOLOCK)ORDER BY mediaset.media_set_id DESCGO

Die Ergebnismenge:

Verschlüsselungsmethoden für Datenbanksicherungen

1. Mit Hilfe von dbForge Studio für SQL Server

Es ist möglich, mit Hilfe von SSMS eine Datenbank-Backup-Verschlüsselung zu erstellen, aber ich persönlich bevorzuge dbForge Studio für SQL Server – eine leistungsstarke IDE für die Verwaltung, Verwaltung, Entwicklung, Datenberichterstattung und Analyse von SQL Server. Diese IDE ist wie ein Schweizer Messer für Datenbankentwickler. Das Tool bietet wesentliche Funktionen, die in einer gut gestalteten und intuitiven GUI verpackt sind. Um sich mit den wichtigsten Funktionen vertraut zu machen, sehen Sie sich das Einführungsvideo zu dbForge Studio for SQL Server – Überblick (04:03 Min.) an:

Nachdem Sie das Tool heruntergeladen und installiert haben, müssen Sie die Datenbankverbindung herstellen.

Beachten Sie, dass die Sicherungsverschlüsselungsfunktion in SQL Server 2014 eingeführt wurde. SQL Server Express unterstützt keine Verschlüsselung während der Sicherung.

1. Nachdem Sie sich mit einer erforderlichen SQL Server-Instanz verbunden haben, im Datenbank-Explorer , klicken Sie auf den Servernamen, um die Serverstruktur zu erweitern.

2. Klicken Sie mit der rechten Maustaste auf eine erforderliche Datenbank, zeigen Sie auf Aufgaben und klicken Sie dann auf Sichern . Das Dialogfeld „Datenbank sichern“ wird angezeigt.

In der Verbindung Listenfeld den Verbindungsnamen überprüfen. Sie können optional eine andere Verbindung aus der Liste auswählen.

3. Klicken Sie auf Weiter, um mit den Medienoptionen fortzufahren .

Die Verschlüsselungsoption ist deaktiviert, wenn Sie auf der Seite „Medienoptionen“ des Assistenten „Datenbank sichern“ die Option „An bestehenden Sicherungssatz anhängen“ auswählen. Wählen Sie die Sicherung auf einen neuen Mediensatz und löschen Sie alle vorhandenen Sicherungssätze.
Erstellen Sie das Zertifikat/den Schlüssel, bevor Sie mit dem Vorgang beginnen. Zertifikate oder asymmetrische Schlüssel, die vor dem Starten des Assistenten zum Sichern der Datenbank erstellt wurden, werden in der Dropdown-Liste aufgelistet.

Wählen Sie Auf einem neuen Mediensatz sichern und alle vorhandenen Sicherungssätze löschen aus Option zum Erstellen einer neuen Sicherung. Geben Sie unter Mediensatzname einen Namen ein Textfeld und beschreiben Sie optional den Mediensatz in der Mediensatzbeschreibung Textfeld.

4. Klicken Sie auf Weiter, um mit den Sicherungsoptionen fortzufahren .

Wählen Sie auf dieser Seite die Option Sicherung verschlüsseln. Wählen Sie den Algorithmus und das Zertifikat oder den asymmetrischen Schlüssel aus. Klicken Sie auf Sichern . Der Vorgang dauert in meinem Fall mehrere Sekunden.

2. Verwendung von Transact-SQL-Anweisungen

Wir werden die BACKUP DATABASE verwenden -Anweisung zum Erstellen einer Datenbanksicherung und des BACKUP LOG um eine Sicherungsdatei des Transaktionsprotokolls zu erstellen.

Vollständige Datenbanksicherung

Diese Art der Sicherung sichert die gesamte Datenbank. Es enthält einen Teil des Transaktionsprotokolls, sodass die vollständige Datenbank wiederhergestellt werden kann, nachdem eine vollständige Datenbanksicherung wiederhergestellt wurde.

Der folgende Code erstellt eine vollständige Datenbank verschlüsselt Sicherung am angegebenen Ort unter Verwendung des angegebenen Zertifikats und Verschlüsselungsalgorithmus.

BACKUP DATABASE AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, Full', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, COMPRESSION, ENCRYPTION( ALGORITHMUS =AES_256, SERVER CERTIFICATE =Cert1)GO

Hinweis:Wenn das für die Verschlüsselung verwendete Zertifikat noch nie gesichert wurde, wird die folgende Warnung angezeigt, wenn die Sicherung abgeschlossen ist. Stellen Sie sicher, dass Sie zusammen mit dem privaten Schlüssel, der dem Zertifikat zugeordnet ist, eine Sicherungskopie des Zertifikats erstellen:

Warnung :Das zum Verschlüsseln des Datenbankverschlüsselungsschlüssels verwendete Zertifikat wurde nicht gesichert. Sie sollten das Zertifikat und den mit dem Zertifikat verknüpften privaten Schlüssel sofort sichern. Wenn das Zertifikat jemals nicht mehr verfügbar ist oder Sie die Datenbank auf einem anderen Server wiederherstellen oder anhängen müssen, müssen Sie Sicherungskopien sowohl des Zertifikats als auch des privaten Schlüssels haben, sonst können Sie die Datenbank nicht öffnen.

Differentielle Datenbanksicherung

Beim Erstellen dieser Art von Sicherung besteht die Datenbank- oder Dateisicherung nur aus den Teilen der Datenbank oder Datei, die seit der letzten vollständigen Sicherung geändert wurden. Außerdem benötigt diese Art der Sicherung normalerweise weniger Platz als eine vollständige Sicherung.

Der folgende Code erstellt eine differenzielle Datenbank verschlüsselt Sicherung am angegebenen Speicherort unter Verwendung des angegebenen Zertifikats und Verschlüsselungsalgorithmus.

BACKUP DATABASE AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, Differential', FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS =5, COMPRESSION, DIFFERENTIAL,ENCRYPTION( ALGORITHMUS =AES_256, SERVER CERTIFICATE =Cert1)GO

Backup des Datenbanktransaktionsprotokolls

Die SQL Server-Datenbank enthält zusätzlich zu den Datendateien eine oder mehrere Transaktionsprotokolldateien, die alle Transaktionen und Datenbankänderungen aufzeichnen, die von jeder Transaktion vorgenommen wurden. Die Transaktionsinformationen werden nur in den Datenbanken erfasst, in denen der Datenbankwiederherstellungsmodus auf vollständig eingestellt ist Wiederherstellung oder massenprotokolliert Wiederherstellung.

Der folgende Code erstellt ein Datenbanktransaktionsprotokoll verschlüsselt Sicherung am angegebenen Speicherort unter Verwendung des angegebenen Zertifikats und Verschlüsselungsalgorithmus.

BACKUP LOG AdventureWorks2014TO DISK ='D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak'WITH NAME =N'AdventureWorks2014, Compressed, Encrypted, TLog', FORMAT, INIT, SKIP, STATS =5, COMPRESSION, ENCRYPTION( ALGORITHMUS =AES_256, SERVER-ZERTIFIKAT =Cert1)GO

3. Verwenden von PowerShell

Mit SQL Server 2014 können Sie die Datenbank mit Windows Powershell sichern. Der folgende Code erstellt die Verschlüsselungsoptionen und verwendet sie als Parameterwert im Backup-SqlDatabase-Cmdlet:

$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 $verschlüsselungsoption

Wenn man die oben genannten Ansätze vergleicht, besteht kein Zweifel daran, dass das Erstellen verschlüsselter Datenbank-Backups eine ziemlich einfache Aufgabe ist, wenn Sie das richtige Tool wie dbForge Studio für SQL Server haben von Devart.

Zusätzliche Lektüre

Mein Freund, Pinal Dave – Enthusiast der SQL Server-Technologie, unabhängiger Berater, Autor verschiedener SQL Server-Bücher und Pluralsight-Kurse, hat einen ausgezeichneten Artikel geschrieben, den ich Ihnen zur weiteren Lektüre empfehlen möchte:SQL SERVER – A Practical Use of Backup Encryption