Rotation des clés
Rotation des clés
Effectuer la rotation des clés de chiffrement pour renforcer la sécurité avec le fournisseur EKM DuoKey
Vue d'ensemble
La rotation des clés est une bonne pratique de sécurité qui consiste à remplacer périodiquement les clés de chiffrement. Dans le SQL EKM DuoKey, deux types de clés peuvent faire l'objet d'une rotation :
Prérequis
- Base chiffrée avec le fournisseur EKM DuoKey
- SQL Server configuré avec le fournisseur EKM DuoKey
- SQL Server Management Studio (SSMS) installé
- Privilèges Sysadmin sur SQL Server
- Compréhension de la hiérarchie des clés dans le TDE
Types de clés et scénarios de rotation
Clé de chiffrement maître (MEK)
Clé asymétrique stockée dans la plateforme DuoKey
Clé de chiffrement de base de données (DEK)
Clé symétrique qui chiffre la base de données
| Scénario | Ce qui tourne | Complexité | Type d'opération |
|---|---|---|---|
| Rotation de la DEK uniquement | Clé de chiffrement de base de données | Faible | En ligne, routinière |
| Rotation de la MEK uniquement | Clé asymétrique (MEK) | Moyenne | Planifiée, coordonnée |
| Rotation complète | DEK et MEK | Élevée | Planifiée, coordonnée |
La rotation de la clé maître (asymétrique) n'est pas une tâche routinière « sans interruption ». Elle doit être planifiée et coordonnée : liez la nouvelle clé maître, re-chiffrez chaque DEK dépendante avec la nouvelle clé, et conservez l'ancienne clé maître jusqu'à ce que chaque base dépendante et chaque sauvegarde qui en dépend aient été migrées. Ne supprimez PAS, ne remplacez PAS et ne déplacez PAS une clé maître liée tant qu'une base TDE ou une sauvegarde en dépend encore, sinon la base passera à l'état suspect/hors ligne car sa DEK ne pourra plus être déchiffrée.
Pourquoi effectuer la rotation des clés ?
Limiter l'exposition
Réduit le risque de compromission des clés au fil du temps
Conformité
Répondre aux exigences réglementaires (PCI-DSS, HIPAA)
Réponse aux incidents
Fait partie des procédures d'incident de sécurité
Bonne pratique
Pratique de sécurité standard de l'industrie
Calendrier de rotation recommandé
| Classification des données | Intervalle de rotation |
|---|---|
| Données critiques | Tous les 3-6 mois |
| Données sensibles | Tous les 6-12 mois |
| Données standard | Annuellement |
| Basée sur incident | Immédiatement en cas de compromission suspectée |
Rotation de la DEK uniquement
La rotation la plus simple : régénère la clé de chiffrement de base de données tout en conservant la même MEK.
Vérifier l'état actuel
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';
GORégénérer la DEK
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
REGENERATE
WITH ALGORITHM = AES_256;
GOSuivre la progression
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';
GOPendant la rotation de la DEK, encryption_state = 4 indique que la rotation est en cours.
Rotation complète des clés (MEK + DEK)
Rotation complète des clés en créant une nouvelle clé asymétrique et en effectuant la rotation de la DEK.
Créer une nouvelle clé asymétrique
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;
GOCréer les identifiants pour la nouvelle clé
CREATE CREDENTIAL SQL_EKM_Key_Rotated_CRED
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GOCréer une connexion pour la nouvelle clé
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;
GOActiver Encrypt dans DuoKey
L'opération de chiffrement DOIT être activée dans DuoKey avant de continuer.
- Connectez-vous à DuoKey Cockpit
- Accédez à la section Keys
- Recherchez
SQL_EKM_Key_Rotated - Activez l'opération Encrypt
- Enregistrez les modifications
Re-chiffrer la DEK avec la nouvelle clé maître
Liez la DEK existante à la nouvelle clé asymétrique. La DEK est re-chiffrée (réencapsulée) par la nouvelle clé maître ; son algorithme AES_256 reste inchangé.
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key_Rotated;
GOIl n'y a aucun changement d'algorithme intermédiaire. La DEK reste en AES_256 tout du long ; seule la clé maître qui la protège change. Conservez la clé maître précédente jusqu'à ce que chaque base dépendante et chaque sauvegarde aient été migrées vers la nouvelle clé.
Pour émettre également une nouvelle DEK sous la nouvelle clé maître, exécutez ALTER DATABASE EmployeeDB ENCRYPTION KEY REGENERATE WITH ALGORITHM = AES_256; une fois le re-chiffrement terminé.
Vérifier la rotation
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';
GOTâches post-rotation
Tester les opérations sur la base de données
-- 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;
GOEffectuer une nouvelle sauvegarde
Sauvegardez toujours les bases immédiatement après la rotation des clés.
BACKUP DATABASE EmployeeDB
TO DISK = 'C:\Backups\EmployeeDB_AfterRotation.bak'
WITH
COMPRESSION,
CHECKSUM,
STATS = 10;
GORotation automatisée des clés
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';
GOLa rotation automatisée doit être minutieusement testée et surveillée. Incluez toujours une gestion des erreurs et des notifications.
Rotation d'urgence des clés
En cas de compromission suspectée d'une clé, effectuez une rotation d'urgence immédiatement.
Actions immédiates
- Isoler les systèmes : Restreignez l'accès aux systèmes concernés
- Notifier l'équipe de sécurité : Alertez la sécurité de l'information
- Évaluer l'impact : Déterminez l'étendue de la compromission potentielle
- Exécuter la rotation : Effectuez une rotation accélérée
-- 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