Sicherung & Wiederherstellung
Sicherung und Wiederherstellung
TDE-verschlüsselte Datenbanken über SQL Server-Instanzen hinweg sichern und wiederherstellen
Überblick
Wenn eine Datenbank mit TDE verschlüsselt ist, sind auch die Sicherungsdateien verschlüsselt. Um diese Sicherungen wiederherzustellen, benötigen Sie Zugriff auf denselben asymmetrischen Schlüssel und dieselben DuoKey-Anmeldeinformationen.
Voraussetzungen
- Mit DuoKey EKM verschlüsselte Datenbank
- SQL Server Management Studio (SSMS) installiert
- Angemessene Sicherungs-/Wiederherstellungsberechtigungen
- Verständnis der TDE-Sicherungsanforderungen
Sicherungsanforderungen
Um TDE-verschlüsselte Sicherungen wiederherzustellen, benötigen Sie:
Denselben asymmetrischen Schlüssel
Der Schlüssel, der den DEK geschützt hat, muss zugänglich sein
DuoKey-Anmeldeinformationen
Dieselben App-Anmeldeinformationen wie auf dem Quellserver
EKM-Provider
Der Provider muss auf dem Zielserver installiert sein
Netzwerkzugriff
HTTPS-Verbindung zur DuoKey-Plattform
Sicherung auf dem primären Server
Überprüfen, ob die Datenbank verschlüsselt ist
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';
GOFahren Sie mit der Sicherung erst fort, wenn encryption_state = 3 (Encrypted) ist.
Sicherung erstellen
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB.bak'
WITH
COMPRESSION,
STATS = 10,
CHECKSUM;
GOSicherung überprüfen
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH CHECKSUM;
GOÜbertragen Sie die Sicherungsdatei sicher über verschlüsselte Kanäle (SFTP, SCP oder verschlüsselte Netzwerkfreigabe) auf den sekundären Server.
Wiederherstellung auf dem sekundären Server
Voraussetzungen für den sekundären Server
Anforderungen an den sekundären Server
Sekundären Server konfigurieren
Konfigurieren Sie den sekundären Server mit denselben Anmeldeinformationen wie den primären:
-- 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;
GOVorhandenen Schlüssel öffnen
Öffnen Sie den vorhandenen asymmetrischen Schlüssel aus DuoKey:
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key
FROM PROVIDER DuoKeyProvider
WITH
PROVIDER_KEY_NAME = 'SQL_EKM_Key',
CREATION_DISPOSITION = OPEN_EXISTING;
GOVerwenden Sie CREATION_DISPOSITION = OPEN_EXISTING, um den vorhandenen Schlüssel aus DuoKey zu öffnen. Verwenden Sie NICHT CREATE_NEW, da dies einen anderen Schlüssel erstellen würde.
Schlüssel-Anmeldeinformationen erstellen
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;
GODatenbank wiederherstellen
RESTORE DATABASE EmployeeDB
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH REPLACE;
GODie Option WITH REPLACE überschreibt die vorhandene Datenbank, falls sie existiert.
Wiederherstellung überprüfen
-- 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;
GOBest Practices für Sicherungen
Strategie
Vollständige Sicherungen wöchentlich, differenzielle täglich, Protokollsicherungen stündlich
Speicherung
Sicherungen sind durch TDE verschlüsselt; bewahren Sie sie an sicheren, zugriffskontrollierten Orten auf
Extern
Halten Sie externe Kopien für die Notfallwiederherstellung vor
Überprüfung
Überprüfen Sie Sicherungen immer nach der Erstellung
Automatisierter Sicherungsauftrag
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';
GOWiederherstellungsszenarien
Fehlerbehebung
Befehle für Sicherungsinformationen
-- 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