Zum Hauptinhalt springen

Schlüsselrotation

Gilt für:
SQL Server 2016+TDE-verschlüsselte DBsSysadmin erforderlich

Überblick​

Die Schlüsselrotation ist eine bewährte Sicherheitspraxis, bei der Verschlüsselungsschlüssel regelmäßig ersetzt werden. In DuoKey SQL EKM gibt es zwei Arten von Schlüsseln, die rotiert werden können:

Voraussetzungen

  • Mit DuoKey EKM verschlüsselte Datenbank
  • SQL Server mit DuoKey EKM-Provider konfiguriert
  • SQL Server Management Studio (SSMS) installiert
  • Sysadmin-Rechte auf SQL Server
  • Verständnis der Schlüsselhierarchie in TDE

Schlüsseltypen und Rotationsszenarien​

Master Encryption Key (MEK)

Asymmetrischer Schlüssel, gespeichert in der DuoKey-Plattform

Database Encryption Key (DEK)

Symmetrischer Schlüssel, der die Datenbank verschlüsselt

SzenarioWas rotiert wirdKomplexitätOperationstyp
Nur DEK-RotationDatabase Encryption KeyNiedrigOnline, Routine
Nur MEK-RotationAsymmetrischer Schlüssel (MEK)MittelGeplant, koordiniert
Vollständige RotationDEK und MEKHochGeplant, koordiniert
Die Rotation des Masterschlüssels ist eine geplante Operation

Die Rotation des (asymmetrischen) Masterschlüssels ist keine routinemäßige Aufgabe „ohne Ausfallzeit". Sie muss geplant und koordiniert werden: Binden Sie den neuen Master, verschlüsseln Sie jeden abhängigen DEK mit dem neuen Schlüssel neu und behalten Sie den alten Master bei, bis jede abhängige Datenbank und jede darauf beruhende Sicherung migriert wurde. Löschen, rotieren oder verschieben Sie einen gebundenen Masterschlüssel NICHT, solange noch eine TDE-Datenbank oder Sicherung von ihm abhängt, da die Datenbank sonst in den Zustand „suspect"/offline übergeht, weil ihr DEK nicht mehr entpackt werden kann.

Warum Schlüssel rotieren?​

Exposition begrenzen

Verringert das Risiko einer Schlüsselkompromittierung im Laufe der Zeit

Compliance

Erfüllung regulatorischer Anforderungen (PCI-DSS, HIPAA)

Incident Response

Teil der Verfahren bei Sicherheitsvorfällen

Best Practice

Branchenübliche Sicherheitspraxis

Empfohlener Rotationszeitplan​

DatenklassifizierungRotationsintervall
Kritische DatenAlle 3–6 Monate
Sensible DatenAlle 6–12 Monate
StandarddatenJährlich
VorfallbasiertSofort bei vermuteter Kompromittierung

Nur DEK-Rotation​

Die einfachste Rotation – der Database Encryption Key wird neu generiert, während derselbe MEK beibehalten wird.

1

Aktuellen Status überprüfen

Verschlüsselungsstatus prüfenSQL
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  percent_complete,
  key_algorithm,
  key_length
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO
2

DEK neu generieren

Database Encryption Key neu generierenSQL
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
REGENERATE
WITH ALGORITHM = AES_256;
GO
3

Fortschritt überwachen

Neugenerierung überwachenSQL
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  CASE encryption_state
      WHEN 4 THEN 'Key change in progress'
      WHEN 3 THEN 'Key change complete'
      ELSE 'Unexpected state'
  END AS Status,
  percent_complete
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO
Hinweis

Während der DEK-Rotation zeigt encryption_state = 4 an, dass die Rotation läuft.

Vollständige Schlüsselrotation (MEK + DEK)​

Vollständige Schlüsselrotation durch Erstellen eines neuen asymmetrischen Schlüssels und Rotieren des DEK.

1

Neuen asymmetrischen Schlüssel erstellen

Neuen Schlüssel in DuoKey erstellenSQL
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key_Rotated
FROM PROVIDER DuoKeyProvider
WITH ALGORITHM = RSA_2048,
PROVIDER_KEY_NAME = 'SQL_EKM_Key_Rotated',
CREATION_DISPOSITION = CREATE_NEW;
GO
2

Anmeldeinformationen für den neuen Schlüssel erstellen

Schlüssel-Anmeldeinformationen erstellenSQL
CREATE CREDENTIAL SQL_EKM_Key_Rotated_CRED
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO
3

Login für den neuen Schlüssel erstellen

Login erstellen und zuordnenSQL
CREATE LOGIN SQL_EKM_Key_Rotated_LOGIN
FROM ASYMMETRIC KEY SQL_EKM_Key_Rotated;
GO

ALTER LOGIN SQL_EKM_Key_Rotated_LOGIN
ADD CREDENTIAL SQL_EKM_Key_Rotated_CRED;
GO
4

Encrypt in DuoKey aktivieren

Warnung

Die Verschlüsselungsoperation MUSS in DuoKey aktiviert werden, bevor Sie fortfahren.

  1. Melden Sie sich beim DuoKey Cockpit an
  2. Navigieren Sie zum Bereich Keys
  3. Suchen Sie nach SQL_EKM_Key_Rotated
  4. Aktivieren Sie die Operation Encrypt
  5. Speichern Sie die Änderungen
5

Den DEK mit dem neuen Masterschlüssel neu verschlüsseln

Binden Sie den vorhandenen DEK an den neuen asymmetrischen Schlüssel. Der DEK wird mit dem neuen Master neu verschlüsselt (rewrapped); sein AES_256-Algorithmus bleibt unverändert.

DEK-Schutz ändernSQL
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key_Rotated;
GO
Wichtig

Es findet keine zwischenzeitliche Algorithmusänderung statt. Der DEK bleibt durchgehend AES_256 – nur der Masterschlüssel, der ihn schützt, ändert sich. Behalten Sie den vorherigen Masterschlüssel bei, bis jede abhängige Datenbank und Sicherung auf den neuen Schlüssel migriert wurde.

Tipp

Um zusätzlich einen frischen DEK unter dem neuen Master auszustellen, führen Sie nach Abschluss der Neuverschlüsselung ALTER DATABASE EmployeeDB ENCRYPTION KEY REGENERATE WITH ALGORITHM = AES_256; aus.

6

Rotation überprüfen

Schlüsselrotation überprüfenSQL
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  encryptor_thumbprint,
  encryptor_type
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO

-- Compare with new key thumbprint
USE master;
SELECT
  name AS AsymmetricKeyName,
  thumbprint,
  algorithm_desc
FROM sys.asymmetric_keys
WHERE name = 'SQL_EKM_Key_Rotated';
GO

Aufgaben nach der Rotation​

Datenbankoperationen testen​

Datenbankzugriff überprüfenSQL
-- Test read access
USE EmployeeDB;
SELECT TOP 10 * FROM Employees;
GO

-- Test write access
INSERT INTO Employees (EmployeeID, FirstName, LastName, Salary)
VALUES (999, 'Test', 'User', 50000.00);
GO

-- Verify and cleanup
SELECT * FROM Employees WHERE EmployeeID = 999;
DELETE FROM Employees WHERE EmployeeID = 999;
GO

Neue Sicherung erstellen​

Wichtig

Sichern Sie Datenbanken immer unmittelbar nach der Schlüsselrotation.

Sicherung nach der RotationSQL
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB_AfterRotation.bak'
WITH
  COMPRESSION,
  CHECKSUM,
  STATS = 10;
GO

Automatisierte Schlüsselrotation​

SQL Agent-Auftrag für vierteljährliche DEK-RotationSQL
USE msdb;
GO

EXEC dbo.sp_add_job
  @job_name = N'QuarterlyKeyRotation',
  @enabled = 1,
  @description = N'Rotates DEK for encrypted databases';
GO

EXEC dbo.sp_add_jobstep
  @job_name = N'QuarterlyKeyRotation',
  @step_name = N'RotateDEK',
  @subsystem = N'TSQL',
  @command = N'
      USE EmployeeDB;
      ALTER DATABASE ENCRYPTION KEY
      REGENERATE WITH ALGORITHM = AES_256;

      -- Wait for completion
      WAITFOR DELAY ''00:01:00'';

      -- Backup after rotation
      BACKUP DATABASE EmployeeDB
      TO DISK = N''C:\Backups\EmployeeDB_PostRotation.bak''
      WITH COMPRESSION;',
  @retry_attempts = 2,
  @retry_interval = 5;
GO

EXEC dbo.sp_add_schedule
  @schedule_name = N'Quarterly',
  @freq_type = 16, -- Monthly
  @freq_interval = 1,
  @freq_recurrence_factor = 3; -- Every 3 months
GO

EXEC dbo.sp_attach_schedule
  @job_name = N'QuarterlyKeyRotation',
  @schedule_name = N'Quarterly';
GO
Vorsicht

Die automatisierte Rotation sollte gründlich getestet und überwacht werden. Beziehen Sie stets Fehlerbehandlung und Benachrichtigungen ein.

Notfall-Schlüsselrotation​

Warnung

Führen Sie bei vermuteter Schlüsselkompromittierung sofort eine Notfallrotation durch.

Sofortmaßnahmen​

  1. Systeme isolieren: Zugriff auf betroffene Systeme einschränken
  2. Sicherheitsteam benachrichtigen: Informationssicherheit alarmieren
  3. Auswirkung bewerten: Umfang der potenziellen Kompromittierung ermitteln
  4. Rotation ausführen: Beschleunigte Rotation durchführen
Skript für NotfallrotationSQL
-- 1. Create emergency key
USE master;
CREATE ASYMMETRIC KEY Emergency_Rotation_Key
FROM PROVIDER DuoKeyProvider
WITH ALGORITHM = RSA_2048,
PROVIDER_KEY_NAME = 'Emergency_Rotation_Key',
CREATION_DISPOSITION = CREATE_NEW;
GO

-- 2. Configure credentials (follow standard steps)
-- 3. Enable encrypt operation in DuoKey
-- 4. Re-encrypt the DEK by the emergency master key
--    (DEK stays AES_256 - no intermediate algorithm change)

USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER ASYMMETRIC KEY Emergency_Rotation_Key;
GO

-- 5. Optionally issue a fresh DEK under the new master
ALTER DATABASE ENCRYPTION KEY
REGENERATE WITH ALGORITHM = AES_256;
GO

-- 6. Verify and backup
SELECT * FROM sys.dm_database_encryption_keys;
GO

BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmergencyRotation.bak'
WITH COMPRESSION;
GO

Fehlerbehebung​

Best Practices​

Checkliste für die Schlüsselrotation

Zuerst sichernVor der Rotation immer sichern
In Dev testenRotation zuerst außerhalb der Produktion testen
Fortschritt überwachenencryption_state und percent_complete beobachten
Änderungen dokumentierenRotation im Change-Management erfassen

Nächste Schritte​