Aller au contenu principal

Sauvegarde et restauration

S'applique à :
SQL Server 2016+Bases chiffrées TDERestauration inter-serveurs

Vue d'ensemble​

Lorsqu'une base est chiffrée avec TDE, les fichiers de sauvegarde sont également chiffrés. Pour restaurer ces sauvegardes, vous devez avoir accès à la même clé asymétrique et aux mêmes identifiants DuoKey.

Prérequis

  • Base chiffrée avec le fournisseur EKM DuoKey
  • SQL Server Management Studio (SSMS) installé
  • Autorisations de sauvegarde/restauration appropriées
  • Compréhension des exigences de sauvegarde TDE

Exigences de sauvegarde​

Pour restaurer des sauvegardes chiffrées avec TDE, vous avez besoin de :

Même clé asymétrique

La clé qui a protégé la DEK doit être accessible

Identifiants DuoKey

Mêmes identifiants d'application que sur le serveur source

Fournisseur EKM

Le fournisseur doit être installé sur le serveur cible

Accès réseau

Connectivité HTTPS vers la plateforme DuoKey

Sauvegarde sur le serveur principal​

1

Vérifier que la base est chiffrée

Check Encryption StatusSQL
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  CASE encryption_state
      WHEN 3 THEN 'Encrypted - Ready for backup'
      ELSE 'Not ready - State: ' + CAST(encryption_state AS VARCHAR)
  END AS Status
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO
Avertissement

Ne procédez à la sauvegarde que lorsque encryption_state = 3 (chiffré).

2

Créer une sauvegarde

Full Database BackupSQL
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB.bak'
WITH
  COMPRESSION,
  STATS = 10,
  CHECKSUM;
GO
3

Vérifier la sauvegarde

Verify Backup IntegritySQL
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH CHECKSUM;
GO
Astuce

Transférez le fichier de sauvegarde de manière sécurisée vers le serveur secondaire en utilisant des canaux chiffrés (SFTP, SCP ou partage réseau chiffré).

Restauration sur le serveur secondaire​

Prérequis pour le serveur secondaire​

Exigences du serveur secondaire

Même application SQL EKMOu fichier d'installation partagé depuis le serveur principal
Fournisseur EKM installéEt correctement configuré
Accès au même VaultAccès au même Vault et aux mêmes clés DuoKey
Connectivité réseauHTTPS vers la plateforme DuoKey
1

Configurer le serveur secondaire

Configurez le serveur secondaire avec les mêmes identifiants que le serveur principal :

Configure EKM on SecondarySQL
-- Enable EKM
sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GO

-- Create cryptographic provider
CREATE CRYPTOGRAPHIC PROVIDER DuoKeyProvider
FROM FILE = 'C:\Program Files\DKE\EKM\dke_ekm_provider.dll';
GO

-- Create credentials (use same values as primary)
CREATE CREDENTIAL DuoKeyCredential
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO

-- Map credentials to login
ALTER LOGIN [sa]
ADD CREDENTIAL DuoKeyCredential;
GO
2

Ouvrir la clé existante

Ouvrez la clé asymétrique existante depuis DuoKey :

Open Existing Asymmetric KeySQL
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key
FROM PROVIDER DuoKeyProvider
WITH
  PROVIDER_KEY_NAME = 'SQL_EKM_Key',
  CREATION_DISPOSITION = OPEN_EXISTING;
GO
Important

Utilisez CREATION_DISPOSITION = OPEN_EXISTING pour ouvrir la clé existante depuis DuoKey. N'utilisez PAS CREATE_NEW, car cela créerait une clé différente.

3

Créer les identifiants de clé

Create Key Login and CredentialsSQL
USE master;
CREATE CREDENTIAL SQL_EKM_Key_Cred
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO

CREATE LOGIN SQL_EKM_Key_Login
FROM ASYMMETRIC KEY SQL_EKM_Key;
GO

ALTER LOGIN SQL_EKM_Key_Login
ADD CREDENTIAL SQL_EKM_Key_Cred;
GO
4

Restaurer la base

Restore Encrypted DatabaseSQL
RESTORE DATABASE EmployeeDB
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH REPLACE;
GO
Astuce

L'option WITH REPLACE écrase la base existante si elle existe.

5

Vérifier la restauration

Verify Restored DatabaseSQL
-- Check database status
SELECT
  name,
  state_desc,
  is_encrypted,
  recovery_model_desc
FROM sys.databases
WHERE name = 'EmployeeDB';
GO

-- Verify encryption is intact
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  percent_complete
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO

-- Test data access
USE EmployeeDB;
SELECT TOP 10 * FROM Employees;
GO

Bonnes pratiques de sauvegarde​

Stratégie

Sauvegardes complètes hebdomadaires, différentielles quotidiennes, sauvegardes de journaux horaires

Stockage

Les sauvegardes sont chiffrées par TDE ; stockez-les dans des emplacements sécurisés à accès contrôlé

Hors site

Conservez des copies hors site pour la reprise après sinistre

Vérification

Vérifiez toujours les sauvegardes après leur création

Tâche de sauvegarde automatisée​

Create SQL Agent Backup JobSQL
USE msdb;
GO

EXEC dbo.sp_add_job
  @job_name = N'DailyBackup_EncryptedDBs',
  @enabled = 1;
GO

EXEC dbo.sp_add_jobstep
  @job_name = N'DailyBackup_EncryptedDBs',
  @step_name = N'BackupStep',
  @subsystem = N'TSQL',
  @command = N'
      BACKUP DATABASE [EmployeeDB]
      TO DISK = N''C:\Backups\EmployeeDB_'' +
                CONVERT(VARCHAR(8), GETDATE(), 112) + ''.bak''
      WITH COMPRESSION, CHECKSUM;',
  @retry_attempts = 3,
  @retry_interval = 5;
GO

EXEC dbo.sp_add_schedule
  @schedule_name = N'DailyAt2AM',
  @freq_type = 4, -- Daily
  @freq_interval = 1,
  @active_start_time = 020000; -- 2:00 AM
GO

EXEC dbo.sp_attach_schedule
  @job_name = N'DailyBackup_EncryptedDBs',
  @schedule_name = N'DailyAt2AM';
GO

EXEC dbo.sp_add_jobserver
  @job_name = N'DailyBackup_EncryptedDBs';
GO

Scénarios de restauration​

Dépannage​

Commandes d'information sur les sauvegardes​

View Backup ContentsSQL
-- View files in backup
RESTORE FILELISTONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak';
GO

-- View backup metadata
RESTORE HEADERONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak';
GO

Étapes suivantes​