Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Chiffrement de la sauvegarde de la base de données SQL Server

Pour gérer la sécurité des données qui ont été sauvegardées par le système de fichiers en tant que fichiers de sauvegarde de base de données, SQL Server fournit la fonctionnalité de chiffrement de sauvegarde. Dans cet article, nous parlerons des options de chiffrement disponibles dans SQL Server pour les sauvegardes de bases de données. Nous examinerons de plus près les détails d'utilisation, les avantages et les pratiques recommandées pour chiffrer la sauvegarde de la base de données SQL Server pendant le processus de sauvegarde.

Qu'est-ce que le chiffrement de sauvegarde de base de données ?

Le besoin de sécuriser les données augmente considérablement. En plus des données, vous devez vous assurer que vos fichiers de sauvegarde de base de données sont également sécurisés, en particulier ceux sur un système de fichiers de serveur. Les données contenues dans les fichiers de sauvegarde SQL Server natifs sont stockées sous forme de texte brut sur le système de fichiers. Vous pouvez le lire sans effort à l'aide d'un éditeur de texte.
Selon les types de données utilisés dans vos tableaux, certaines données sont beaucoup plus faciles à lire que d'autres. L'image suivante montre le fichier de sauvegarde ouvert dans l'éditeur de texte du Bloc-notes :

Comme vous pouvez le voir, le code T-SQL est visible et facile à lire. Cependant, une fois que nous aurons créé la sauvegarde avec un cryptage, personne n'aura la chance de passer sous le capot.

L'image suivante montre le même AdventureWorks2014.bak avec un cryptage.

À partir de SQL Server 2014, le moteur de base de données peut chiffrer les données lors de la création d'un fichier de sauvegarde. Vous pouvez spécifier l'algorithme de chiffrement et le chiffreur, soit un certificat ou une clé asymétrique, lors de la création d'une sauvegarde. La fonction de chiffrement de sauvegarde améliore la sécurité et fonctionne dans n'importe quel domaine où SQL Server lui-même peut être utilisé.

Qu'est-ce qui est requis ?

Pour chiffrer la sauvegarde de la base de données, vous devez spécifier un algorithme de chiffrement et un chiffreur. Il existe deux options de chiffrement prises en charge :

  • Algorithme de chiffrement :AES_128, AES_192, AES_256 et Triple_DES_3Key
  • Crypteur :un certificat ou une clé asymétrique

Si vous perdez accidentellement le certificat ou la clé asymétrique, vous n'aurez jamais la possibilité de restaurer le fichier de sauvegarde. Il est donc très important de conserver le certificat ou la clé asymétrique dans un endroit sûr.

Avantages du chiffrement de la sauvegarde de la base de données

  • Aide à sécuriser les données.
  • Peut être appliqué aux bases de données chiffrées à l'aide de Transparent Data Encryption (TDE).
  • Pris en charge pour les sauvegardes créées par la sauvegarde gérée de SQL Server vers Microsoft Azure, qui fournit une sécurité supplémentaire pour les sauvegardes hors site.
  • Prend en charge de nombreux algorithmes de chiffrement jusqu'à AES 256 bits. Cela vous permet de sélectionner un algorithme qui répond à vos besoins.
  • Possibilité d'intégrer des clés de chiffrement avec des fournisseurs de gestion étendue des clés (EKM).

Modifications des tables système

Lors de la création de la sauvegarde chiffrée, certaines informations sont enregistrées dans la MSDB base de données système :l'algorithme de clé, le type de chiffrement et l'empreinte numérique de chiffrement utilisés.
Le sauvegarde table contient des informations pour chaque jeu de sauvegarde. Un jeu de sauvegarde contient la sauvegarde d'une seule opération de sauvegarde réussie.
Les colonnes suivantes :key_algorithm , encryptor_thumprint , type_de_chiffrement de ce DMV stockent des informations indiquant si la sauvegarde est cryptée, le type de crypteur et l'empreinte numérique du crypteur.

SELECT 5 TOP 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 

Voici ce que vous verrez :

Pour obtenir plus d'informations sur la table backupset, lisez la page de documentation MSDN suivante :backupset (Transact-SQL)

Le jeu de médias de sauvegarde Le tableau contient des informations pour chaque jeu de supports de sauvegarde. La colonne is_encrypted indique si la sauvegarde est chiffrée ou non. 0 – non crypté et 1 – crypté. Initialement, cette valeur est définie sur NULL, ce qui indique un jeu de supports de sauvegarde non chiffré.

SÉLECTIONNER LES 5 MEILLEURS media_set_id, is_encrypted, is_compressedFROM msdb.dbo.backupmediaset AS mediaset avec (NOLOCK)ORDER BY mediaset.media_set_id DESCGO

Le jeu de résultats :

Méthodes de chiffrement de sauvegarde de base de données

1. Avec l'aide de dbForge Studio pour SQL Server

Il est possible de créer un cryptage de sauvegarde de base de données à l'aide de SSMS, mais j'ai personnellement préférébForge Studio pour SQL Server - un puissant IDE pour la gestion, l'administration, le développement, la création de rapports de données et l'analyse de SQL Server. Cet IDE est comme un couteau suisse pour les développeurs de bases de données. L'outil fournit des fonctionnalités essentielles qui sont regroupées dans une interface graphique bien conçue et intuitive. Pour vous familiariser avec les fonctionnalités clés, consultez la vidéo d'introduction dbForge Studio for SQL Server - Overview (04:03 min) :

Une fois que vous avez téléchargé et installé l'outil, vous devez créer la connexion à la base de données.

Notez que la fonctionnalité de chiffrement de sauvegarde est introduite dans SQL Server 2014. SQL Server Express ne prend pas en charge le chiffrement pendant la sauvegarde.

1. Une fois que vous vous êtes connecté à une instance SQL Server requise, dans Database Explorer , cliquez sur le nom du serveur pour développer l'arborescence des serveurs.

2. Cliquez avec le bouton droit sur une base de données requise, pointez sur Tâches, puis cliquez sur Sauvegarder . La boîte de dialogue Sauvegarder la base de données s'affiche.

Dans la Connexion liste déroulante, vérifiez le nom de la connexion. Vous pouvez éventuellement sélectionner une autre connexion dans la liste.

3. Cliquez sur Suivant pour passer aux Options multimédias .

L'option de cryptage est désactivée si vous sélectionnez l'ajout à l'option de jeu de sauvegarde existant sur la page Options de support de l'assistant de sauvegarde de la base de données. Choisissez la sauvegarde sur un nouveau jeu de supports et effacez tous les jeux de sauvegarde existants.
Créez le certificat/la clé avant de commencer le processus. Le certificat ou la clé asymétrique créé avant de lancer l'assistant de sauvegarde de la base de données sera répertorié dans la liste déroulante.

Sélectionnez Sauvegarder sur un nouveau jeu de supports et effacer tous les jeux de sauvegarde existants possibilité de créer une nouvelle sauvegarde. Saisissez un nom dans le champ Nom du jeu de médias zone de texte et, éventuellement, décrivez le jeu de médias dans la Description du jeu de médias zone de texte.

4. Cliquez sur Suivant pour continuer avec les Options de sauvegarde .

Sur cette page, sélectionnez l'option Chiffrer la sauvegarde. Sélectionnez l'algorithme et le certificat ou la clé asymétrique. Cliquez sur Sauvegarder . Le processus prend plusieurs secondes dans mon cas.

2. Utilisation des instructions Transact-SQL

Nous utiliserons la BACKUP DATABASE déclaration pour créer une sauvegarde de la base de données et le LOG DE SAUVEGARDE pour créer un fichier de sauvegarde du journal des transactions.

Sauvegarde complète de la base de données

Ce type de sauvegarde sauvegarde l'intégralité de la base de données. Il inclut une partie du journal des transactions afin que la base de données complète puisse être récupérée après la restauration d'une sauvegarde complète de la base de données.

Le code suivant crée une base de données complète chiffrée sauvegarde à l'emplacement indiqué à l'aide du certificat et de l'algorithme de chiffrement spécifiés.

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

Remarque :si le certificat utilisé pour le chiffrement n'a jamais été sauvegardé, l'avertissement suivant s'affiche lorsque la sauvegarde est terminée. Assurez-vous de prendre une sauvegarde du certificat avec la clé privée associée au certificat :

Avertissement :Le certificat utilisé pour chiffrer la clé de chiffrement de la base de données n'a pas été sauvegardé. Vous devez immédiatement sauvegarder le certificat et la clé privée associée au certificat. Si le certificat devient indisponible ou si vous devez restaurer ou attacher la base de données sur un autre serveur, vous devez avoir des sauvegardes du certificat et de la clé privée ou vous ne pourrez pas ouvrir la base de données.

Sauvegarde différentielle de la base de données

Lors de la création de ce type de sauvegarde, la sauvegarde de la base de données ou du fichier se compose uniquement des parties de la base de données ou du fichier modifiées depuis la dernière sauvegarde complète. De plus, ce type de sauvegarde prend généralement moins d'espace qu'une sauvegarde complète.

Le code suivant crée une base de données différentielle chiffrée sauvegarde à l'emplacement indiqué à l'aide du certificat et de l'algorithme de chiffrement spécifiés.

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, DIFFÉRENTIEL, CHIFFREMENT (ALGORITHME =AES_256, CERTIFICAT SERVEUR =Cert1)GO

Sauvegarde du journal des transactions de la base de données

La base de données SQL Server contient un ou plusieurs fichiers journaux de transactions, en plus des fichiers de données, qui enregistrent toutes les transactions et les modifications de base de données effectuées par chaque transaction. Les informations de transaction sont collectées uniquement dans les bases de données où le mode de récupération de base de données est défini sur complet récupération ou consignation groupée récupération.

Le code suivant crée le journal des transactions de la base de données chiffré sauvegarde à l'emplacement indiqué à l'aide du certificat et de l'algorithme de chiffrement spécifiés.

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

3. Utiliser PowerShell

SQL Server 2014 vous permet de sauvegarder la base de données à l'aide de Windows Powershell. Le code suivant crée les options de chiffrement et les utilise comme valeur de paramètre dans le commandlet 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

En comparant les approches mentionnées ci-dessus, il ne fait aucun doute que la création de sauvegardes de bases de données cryptées est une tâche assez facile lorsque vous disposez du bon outil, comme dbForge Studio for SQL Server de Devart.

Lecture supplémentaire

Mon ami, Pinal Dave – passionné de technologie SQL Server, consultant indépendant, auteur de divers livres SQL Server, et de cours Pluralsight, a écrit un excellent article, que je vous suggère de lire plus en détail :SQL SERVER – A Practical Use of Backup Encryption