Schlüsselrotation
Schlüsselrotation
Verschlüsselungsschlüssel für erhöhte Sicherheit mit DuoKey EKM rotieren
Ü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
| Szenario | Was rotiert wird | Komplexität | Operationstyp |
|---|---|---|---|
| Nur DEK-Rotation | Database Encryption Key | Niedrig | Online, Routine |
| Nur MEK-Rotation | Asymmetrischer Schlüssel (MEK) | Mittel | Geplant, koordiniert |
| Vollständige Rotation | DEK und MEK | Hoch | Geplant, koordiniert |
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
| Datenklassifizierung | Rotationsintervall |
|---|---|
| Kritische Daten | Alle 3–6 Monate |
| Sensible Daten | Alle 6–12 Monate |
| Standarddaten | Jährlich |
| Vorfallbasiert | Sofort bei vermuteter Kompromittierung |
Nur DEK-Rotation
Die einfachste Rotation – der Database Encryption Key wird neu generiert, während derselbe MEK beibehalten wird.
Aktuellen Status überprüfen
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';
GODEK neu generieren
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
REGENERATE
WITH ALGORITHM = AES_256;
GOFortschritt überwachen
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';
GOWä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.
Neuen asymmetrischen Schlüssel erstellen
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;
GOAnmeldeinformationen für den neuen Schlüssel erstellen
CREATE CREDENTIAL SQL_EKM_Key_Rotated_CRED
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GOLogin für den neuen Schlüssel erstellen
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;
GOEncrypt in DuoKey aktivieren
Die Verschlüsselungsoperation MUSS in DuoKey aktiviert werden, bevor Sie fortfahren.
- Melden Sie sich beim DuoKey Cockpit an
- Navigieren Sie zum Bereich Keys
- Suchen Sie nach
SQL_EKM_Key_Rotated - Aktivieren Sie die Operation Encrypt
- Speichern Sie die Änderungen
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.
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key_Rotated;
GOEs 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.
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.
Rotation überprüfen
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';
GOAufgaben nach der Rotation
Datenbankoperationen testen
-- 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;
GONeue Sicherung erstellen
Sichern Sie Datenbanken immer unmittelbar nach der Schlüsselrotation.
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB_AfterRotation.bak'
WITH
COMPRESSION,
CHECKSUM,
STATS = 10;
GOAutomatisierte Schlüsselrotation
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';
GODie automatisierte Rotation sollte gründlich getestet und überwacht werden. Beziehen Sie stets Fehlerbehandlung und Benachrichtigungen ein.
Notfall-Schlüsselrotation
Führen Sie bei vermuteter Schlüsselkompromittierung sofort eine Notfallrotation durch.
Sofortmaßnahmen
- Systeme isolieren: Zugriff auf betroffene Systeme einschränken
- Sicherheitsteam benachrichtigen: Informationssicherheit alarmieren
- Auswirkung bewerten: Umfang der potenziellen Kompromittierung ermitteln
- Rotation ausführen: Beschleunigte Rotation durchführen
-- 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