Sauvegarde et restauration
Sauvegarde et restauration
Sauvegarder et restaurer des bases chiffrées avec TDE entre instances SQL Server
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
Vérifier que la base est chiffrée
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';
GONe procédez à la sauvegarde que lorsque encryption_state = 3 (chiffré).
Créer une sauvegarde
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB.bak'
WITH
COMPRESSION,
STATS = 10,
CHECKSUM;
GOVérifier la sauvegarde
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH CHECKSUM;
GOTransfé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
Configurer le serveur secondaire
Configurez le serveur secondaire avec les mêmes identifiants que le serveur principal :
-- 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;
GOOuvrir la clé existante
Ouvrez la clé asymétrique existante depuis DuoKey :
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key
FROM PROVIDER DuoKeyProvider
WITH
PROVIDER_KEY_NAME = 'SQL_EKM_Key',
CREATION_DISPOSITION = OPEN_EXISTING;
GOUtilisez CREATION_DISPOSITION = OPEN_EXISTING pour ouvrir la clé existante depuis DuoKey. N'utilisez PAS CREATE_NEW, car cela créerait une clé différente.
Créer les identifiants de clé
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;
GORestaurer la base
RESTORE DATABASE EmployeeDB
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH REPLACE;
GOL'option WITH REPLACE écrase la base existante si elle existe.
Vérifier la restauration
-- 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;
GOBonnes 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
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';
GOScénarios de restauration
Dépannage
Commandes d'information sur les sauvegardes
-- 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