Zum Hauptinhalt springen

Sicherung & Wiederherstellung

Gilt für:
SQL Server 2016+TDE-verschlüsselte DBsServerübergreifende Wiederherstellung

Ü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​

1

Überprüfen, ob die Datenbank verschlüsselt ist

Verschlüsselungsstatus prüfenSQL
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
Warnung

Fahren Sie mit der Sicherung erst fort, wenn encryption_state = 3 (Encrypted) ist.

2

Sicherung erstellen

Vollständige DatenbanksicherungSQL
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB.bak'
WITH
  COMPRESSION,
  STATS = 10,
  CHECKSUM;
GO
3

Sicherung überprüfen

Integrität der Sicherung überprüfenSQL
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH CHECKSUM;
GO
Tipp

Ü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

Dieselbe SQL EKM-AppOder gemeinsame Setup-Datei vom Primärserver
EKM-Provider installiertUnd ordnungsgemäß konfiguriert
Zugriff auf denselben VaultZugriff auf denselben DuoKey-Vault und dieselben Schlüssel
NetzwerkverbindungHTTPS zur DuoKey-Plattform
1

Sekundären Server konfigurieren

Konfigurieren Sie den sekundären Server mit denselben Anmeldeinformationen wie den primären:

EKM auf dem sekundären Server konfigurierenSQL
-- 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

Vorhandenen Schlüssel öffnen

Öffnen Sie den vorhandenen asymmetrischen Schlüssel aus DuoKey:

Vorhandenen asymmetrischen Schlüssel öffnenSQL
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key
FROM PROVIDER DuoKeyProvider
WITH
  PROVIDER_KEY_NAME = 'SQL_EKM_Key',
  CREATION_DISPOSITION = OPEN_EXISTING;
GO
Wichtig

Verwenden 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.

3

Schlüssel-Anmeldeinformationen erstellen

Schlüssel-Login und -Anmeldeinformationen erstellenSQL
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

Datenbank wiederherstellen

Verschlüsselte Datenbank wiederherstellenSQL
RESTORE DATABASE EmployeeDB
FROM DISK = 'C:\Backups\EmployeeDB.bak'
WITH REPLACE;
GO
Tipp

Die Option WITH REPLACE überschreibt die vorhandene Datenbank, falls sie existiert.

5

Wiederherstellung überprüfen

Wiederhergestellte Datenbank überprüfenSQL
-- 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

Best 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​

SQL Agent-Sicherungsauftrag erstellenSQL
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

Wiederherstellungsszenarien​

Fehlerbehebung​

Befehle für Sicherungsinformationen​

Sicherungsinhalt anzeigenSQL
-- 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

Nächste Schritte​