Aller au contenu principal

Rotation des clés

S'applique à :
SQL Server 2016+Bases chiffrées TDERôle Sysadmin requis

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énarioCe qui tourneComplexitéType d'opération
Rotation de la DEK uniquementClé de chiffrement de base de donnéesFaibleEn ligne, routinière
Rotation de la MEK uniquementClé asymétrique (MEK)MoyennePlanifiée, coordonnée
Rotation complèteDEK et MEKÉlevéePlanifiée, coordonnée
La rotation de la clé maître est une opération planifié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éesIntervalle de rotation
Données critiquesTous les 3-6 mois
Données sensiblesTous les 6-12 mois
Données standardAnnuellement
Basée sur incidentImmé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.

1

Vérifier l'état actuel

Check Encryption StatusSQL
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

Régénérer la DEK

Regenerate Database Encryption KeySQL
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
REGENERATE
WITH ALGORITHM = AES_256;
GO
3

Suivre la progression

Monitor RegenerationSQL
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
Remarque

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

1

Créer une nouvelle clé asymétrique

Create New Key in DuoKeySQL
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

Créer les identifiants pour la nouvelle clé

Create Key CredentialsSQL
CREATE CREDENTIAL SQL_EKM_Key_Rotated_CRED
WITH IDENTITY = '<client_id>',
SECRET = '<enrolled-agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO
3

Créer une connexion pour la nouvelle clé

Create and Map LoginSQL
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

Activer Encrypt dans DuoKey

Avertissement

L'opération de chiffrement DOIT être activée dans DuoKey avant de continuer.

  1. Connectez-vous à DuoKey Cockpit
  2. Accédez à la section Keys
  3. Recherchez SQL_EKM_Key_Rotated
  4. Activez l'opération Encrypt
  5. Enregistrez les modifications
5

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

Change DEK ProtectionSQL
USE EmployeeDB;
ALTER DATABASE ENCRYPTION KEY
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key_Rotated;
GO
Important

Il 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é.

Astuce

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

6

Vérifier la rotation

Verify Key RotationSQL
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

Tâches post-rotation​

Tester les opérations sur la base de données​

Verify Database AccessSQL
-- 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

Effectuer une nouvelle sauvegarde​

Important

Sauvegardez toujours les bases immédiatement après la rotation des clés.

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

Rotation automatisée des clés​

SQL Agent Job for Quarterly 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
Attention

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

Avertissement

En cas de compromission suspectée d'une clé, effectuez une rotation d'urgence immédiatement.

Actions immédiates​

  1. Isoler les systèmes : Restreignez l'accès aux systèmes concernés
  2. Notifier l'équipe de sécurité : Alertez la sécurité de l'information
  3. Évaluer l'impact : Déterminez l'étendue de la compromission potentielle
  4. Exécuter la rotation : Effectuez une rotation accélérée
Emergency Rotation ScriptSQL
-- 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

Dépannage​

Bonnes pratiques​

Liste de contrôle de la rotation des clés

Sauvegarder d'abordSauvegardez toujours avant la rotation
Tester en développementTestez la rotation en dehors de la production d'abord
Suivre la progressionSurveillez encryption_state et percent_complete
Documenter les changementsConsignez la rotation dans la gestion des changements

Étapes suivantes​