Gestion de clés extensible (EKM)

S'applique à : SQL Server

SQL Server fournit des fonctions de chiffrement de données en même temps que la gestion de clés extensible (EKM, Extensible Key Management) à l’aide du fournisseur de l’API Microsoft Cryptographic (MSCAPI) pour le chiffrement et la génération de clés. Les clés de chiffrement pour les données et le chiffrement à clé sont créés dans des conteneurs de clé transitoires, et ils doivent être exportés d'un fournisseur avant d'être stockés dans la base de données. Cette approche permet à SQL Server d’assurer la gestion des clés, notamment la hiérarchie des clés de chiffrement et la sauvegarde des clés.

Face à la demande croissante de conformité aux normes et aux problèmes liés à la confidentialité des données, les organisations font appel au chiffrement afin d'apporter une solution de « défense en profondeur ». Cette approche est souvent peu pratique car elle utilise uniquement des outils de gestion de chiffrement de base de données. Les fabricants de matériel fournissent des produits qui prennent en charge la gestion des clés dans l’entreprise à l’aide des modules de la sécurité matériels . Les périphériques HSM stockent des clés de chiffrement dans les modules matériels ou logiciels. Il s'agit d'une solution plus sécurisée parce que les clés de chiffrement ne résident pas avec les données de chiffrement.

Plusieurs fournisseurs offrent HSM pour la gestion des clés et l'accélération du chiffrement. Les périphériques HSM utilisent des interfaces matérielles avec un processus serveur comme intermédiaire entre une application et un HSM. Les fournisseurs implémentent également des fournisseurs MSCAPI sur leurs modules qui peuvent être matériels ou logiciels. MSCAPI offre souvent seulement un sous-ensemble des fonctionnalités offertes par un HSM. Les fournisseurs peuvent également fournir le logiciel de gestion pour HSM, la configuration de clé et l'accès aux clés.

Les mises en œuvre de HSM varient d’un fournisseur à l’autre, et leur utilisation avec SQL Server nécessite une interface commune. Si MSCAPI fournit cette interface, elle prend en charge uniquement un sous-ensemble des fonctionnalités HSM. Elle connaît aussi d'autres limitations, telles que l'incapacité à rendre persistantes en mode natif des clés symétriques et une absence de prise en charge orientée session.

SQL Server Extensible Key Management permet aux fournisseurs tiers d’EKM/HSM d’enregistrer leurs modules dans SQL Server. Une fois inscrits, les utilisateurs de SQL Server peuvent utiliser les clés de chiffrement stockées dans les modules EKM. SQL Server peut ainsi accéder aux fonctionnalités de chiffrement avancées offertes par ces modules, à savoir le déchiffrement et le chiffrement en bloc. Il a par ailleurs accès aux fonctions de gestion de clés, notamment le vieillissement de clé et la permutation de clé.

Lorsque SQL Server est exécuté dans un ordinateur virtuel Azure, il peut utiliser des clés stockées dans Azure Key Vault. Pour plus d’informations, consultez Gestion de clés extensible à l’aide d’Azure Key Vault (SQL Server).

Configuration EKM

La gestion des clés extensibles est non disponible dans toutes les éditions de Microsoft SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prise en charge par les éditions de SQL Server 2016.

Par défaut, la gestion de clés extensible est désactivée. Pour activer cette fonctionnalité, utilisez la commande sp_configure avec l'option et la valeur suivantes, comme dans l'exemple ci-après :

sp_configure 'show advanced', 1  
GO  
RECONFIGURE  
GO  
sp_configure 'EKM provider enabled', 1  
GO  
RECONFIGURE  
GO  

Remarque

Si vous utilisez la commande sp_configure pour cette option sur les éditions de SQL Server qui ne prennent pas en charge la gestion de clés extensible, vous recevrez un message d’erreur.

Pour désactiver la fonctionnalité, affectez-lui la valeur 0. Pour plus d’informations sur la définition des options du serveur, consultez sp_configure (Transact-SQL).

Comment utiliser EKM

La gestion de clés extensible SQL Server active les clés de chiffrement qui protègent les fichiers de base de données à stocker dans un appareil distant comme une carte à puce, un périphérique USB ou un module EKM/HSM. Elle permet aussi la protection des données pour les administrateurs de base de données (sauf les membres du groupe sysadmin). Les données peuvent être chiffrées à l'aide des clés de chiffrement auxquelles seul l'utilisateur de base de données peut accéder sur le module EKM/HSM externe.

La gestion de clés extensible offre aussi les avantages suivants :

  • Contrôle d'autorisation supplémentaire (activant la séparation des tâches).

  • Performances supérieures pour le chiffrement/déchiffrement basé sur le matériel.

  • Génération de clé de chiffrement externe.

  • Stockage de clé de chiffrement externe (séparation physique des données et des clés).

  • Récupération de clés de chiffrement.

  • Rétention de clé de chiffrement externe (permet la rotation de clé de chiffrement).

  • Récupération simplifiée de clé de chiffrement.

  • Distribution gérable de clé de chiffrement.

  • Suppression de clé de chiffrement sécurisée.

Vous pouvez utiliser la gestion de clés extensible pour une combinaison de nom d’utilisateur et de mot de passe ou d’autres méthodes définies par le pilote EKM.

Attention

Pour le dépannage, le support technique de Microsoft peut requérir la clé de chiffrement du fournisseur EKM. Vous devrez peut-être aussi accéder aux outils ou aux processus du fournisseur pour aider à résoudre un problème.

Authentification avec un périphérique EKM

Un module EKM peut prendre en charge plusieurs types d'authentification. Chaque fournisseur n’expose qu’un seul type d’authentification à SQL Server. Autrement dit, si le module prend en charge les types d’authentification de base ou autre, il expose l’un ou l’autre, mais pas les deux.

Authentification de base spécifique au périphérique EKM à l'aide du nom d'utilisateur/mot de passe

Pour les modules EKM qui prennent en charge l’authentification de base à l’aide d’une paire nom d’utilisateur/mot de passe, SQL Server fournit une authentification transparente à l’aide d’identifiants. Pour plus d’informations sur les identifiants, consultez Identifiants (moteur de base de données).

Un identifiant peut être créé pour un fournisseur EKM et mappé à une connexion (comptes Windows et SQL Server) pour accéder à un module EKM sur la base d’une connexion individuelle. Le champ Identité des informations d’identification contient le nom d’utilisateur. Le champ Secret contient un mot de passe pour la connexion à un module EKM.

S’il n’y a pas d’identifiant de connexion mappé pour le fournisseur EKM, l’identifiant mappé au compte de service SQL Server est utilisé.

Une connexion peut avoir plusieurs informations d'identification mappées à elle, à condition qu'elles soient utilisées pour des fournisseurs EKM distinctifs. Il ne doit y avoir qu'une seule information d'authentification mappée par fournisseur EKM par connexion. La même information d'identification peut être mappée à d'autres connexions.

Autres types d'authentification spécifique au périphérique EKM

Pour les modules EKM qui ont une authentification autre que Windows ou des combinaisons utilisateur/mot de passe, l’authentification doit être effectuée indépendamment de SQL Server.

Chiffrement et déchiffrement par un périphérique EKM

Vous pouvez utiliser les fonctions et fonctionnalités suivantes pour chiffrer et déchiffrer des données à l'aide des clés symétriques et asymétriques :

Fonction ou fonctionnalité Référence
Chiffrement à clé symétrique CREATE SYMMETRIC KEY (Transact-SQL)
Chiffrement à clé asymétrique CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)

Chiffrement de clés de base de données par les clés EKM

SQL Server peut utiliser des clés EKM pour chiffrer d’autres clés dans une base de données. Vous pouvez créer et utiliser à la fois des clés symétriques et asymétriques sur un périphérique EKM. Vous pouvez chiffrer des clés symétriques natives (non-EKM) avec des clés asymétriques EKM.

L'exemple suivant crée une clé symétrique de base de données et la chiffre à l'aide d'une clé sur un module EKM.

CREATE SYMMETRIC KEY Key1  
WITH ALGORITHM = AES_256  
ENCRYPTION BY EKM_AKey1;  
GO  
--Open database key  
OPEN SYMMETRIC KEY Key1  
DECRYPTION BY EKM_AKey1  

Pour plus d’informations sur les clés de base de données et de serveur dans SQL Server, consultez SQL Server et les clés de chiffrement de base de données (moteur de base de données).

Remarque

Vous ne pouvez pas chiffrer une clé EKM avec une autre clé EKM.

SQL Server ne prend pas en charge la signature des modules à partir de clés asymétriques générées par un fournisseur EKM.

Fournisseur EKM activé (option de configuration de serveur)

Activer le chiffrement transparent des données à l’aide de la gestion de clés extensible (EKM)

Gestion de clés extensible à l’aide d’Azure Key Vault (SQL Server)

Voir aussi

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL)
Sauvegarder et restaurer les clés de chiffrement Reporting Services
Supprimer et recréer des clés de chiffrement (Gestionnaire de configuration de SSRS)
Ajouter et supprimer des clés de chiffrement pour un déploiement avec montée en puissance parallèle (Gestionnaire de configuration de SSRS)
Sauvegarder la clé principale du service
Restaurer la clé principale du service
Créer une clé principale de base de données
Sauvegarder une clé primaire de base de données
Restaurer une clé principale de base de données
Créer des clés symétriques identiques sur deux serveurs