Gestion de clés extensible à l'aide d'Azure Key Vault (SQL Server)
Le connecteur SQL Server pour Microsoft Azure Key Vault permet SQL Server chiffrement de tirer parti du service Azure Key Vault en tant que fournisseur EKM (Extensible Key Management) pour protéger ses clés de chiffrement.
Contenu de cette rubrique :
Étape 1 : Configuration du coffre de clés pour une utilisation par SQL Server
Étape 3 : Configurer SQL Server pour utiliser un fournisseur EKM pour le coffre de clés
Exemple B : chiffrement des sauvegardes à l'aide d'une clé asymétrique dans le coffre de clés
Exemple C : chiffrement au niveau colonne à l'aide d'une clé asymétrique dans le coffre de clés
Utilisations de la gestion de clés extensible
Un organization peut utiliser le chiffrement SQL Server pour protéger les données sensibles. SQL Server chiffrement comprend le chiffrement transparent des données (TDE),le chiffrement au niveau des colonnes (CLE) et le chiffrement de sauvegarde. Dans tous ces cas, les données sont chiffrées à l'aide d'une clé de chiffrement de données symétrique. La clé de chiffrement de données symétrique est ensuite protégée en la chiffrant avec une hiérarchie de clés stockées dans SQL Server. L’architecture du fournisseur EKM permet également à SQL Server de protéger les clés de chiffrement des données à l’aide d’une clé asymétrique stockée en dehors de SQL Server dans un fournisseur de chiffrement externe. L'utilisation de l'architecture du fournisseur EKM ajoute une couche supplémentaire de sécurité et permet aux organisations de séparer la gestion des clés de celle des données.
Le connecteur SQL Server pour Azure Key Vault permet SQL Server tirer parti du service de coffre de clés évolutif, hautes performances et hautement disponible en tant que fournisseur EKM pour la protection des clés de chiffrement. Le service de coffre de clés peut être utilisé avec SQL Server installations sur Microsoft Azure Machines Virtuelles et pour les serveurs locaux. Le service de coffre de clés offre également la possibilité d'utiliser des modules de sécurité matériels étroitement contrôlés et surveillés pour augmenter le niveau de protection des clés de chiffrement asymétriques. Pour plus d’informations sur le coffre de clés, consultez Azure Key Vault.
L'illustration suivante résume le flux du processus de la gestion de clés extensible à l'aide du coffre de clés. Les numéros d'étapes de processus dans l'image ne sont pas censés correspondre aux numéros d'étapes d'installation qui suivent l'image.
Étape 1 : configurer le coffre de clés pour une utilisation par SQL Server
Utilisez les étapes suivantes pour configurer un coffre de clés à utiliser avec le moteur de base de données SQL Server pour la protection par clé de chiffrement. Un coffre est peut-être déjà en cours d'utilisation pour l'organisation. Quand un coffre n’existe pas, l’administrateur Azure de votre organization désigné pour gérer les clés de chiffrement peut créer un coffre, générer une clé asymétrique dans le coffre, puis autoriser SQL Server à utiliser la clé. Pour vous familiariser avec le service de coffre de clés, consultez la page Prise en main du coffre de clés Azureet les informations de référence sur les applets de commande du coffre de clés Azure PowerShell.
Important
Si vous avez plusieurs abonnements Azure, vous devez utiliser l’abonnement qui contient SQL Server.
Créer un coffre : Créez un coffre en suivant les instructions de la section Créer un coffre de clés de la page Prise en main du coffre de clés Azure. Notez le nom du coffre. Cette rubrique utilise ContosoKeyVault comme nom de coffre de clés.
Générez une clé asymétrique dans le coffre : La clé asymétrique dans le coffre de clés est utilisée pour protéger SQL Server clés de chiffrement. Seule la partie publique de la clé asymétrique quitte le coffre, la partie privée n'étant jamais exportée par celui-ci. Toutes les opérations de chiffrement à l'aide de la clé asymétrique sont déléguées au coffre de clés Azure et sont protégées par la sécurité du coffre de clés.
Il existe plusieurs méthodes pour générer une clé asymétrique et la stocker dans le coffre. Vous pouvez générer une clé en externe et l'importer dans le coffre en tant que fichier .pfx. Vous pouvez aussi créer la clé directement dans le coffre à l'aide des API du coffre de clés.
Le connecteur SQL Server nécessite que les clés asymétriques soient rsa 2 048 bits, et le nom de la clé ne peut utiliser que les caractères « a-z », « A-Z », « 0-9 » et « - ». Dans ce document, le nom de la clé asymétrique est appelé ContosoMasterKey. Remplacez-le par le nom unique que vous utilisez pour la clé.
Important
L'importation de la clé asymétrique est fortement recommandée dans les scénarios de production, car elle permet à l'administrateur de déposer la clé dans un système de dépôt de clés (Key escrow). Si la clé asymétrique est créée dans le coffre, elle ne peut pas être déposée, car la clé privée ne peut jamais sortir du coffre. Les clés utilisées pour protéger les données critiques doivent être déposées. La perte d'une clé asymétrique rend une partie des données définitivement irrécupérable.
Important
Le coffre de clés prend en charge plusieurs versions de la même clé nommée. Les clés à utiliser par SQL Server Connector ne doivent pas être avec version ni roulées. Si l’administrateur souhaite déployer la clé utilisée pour le chiffrement SQL Server, une nouvelle clé portant un nom différent doit être créée dans le coffre et utilisée pour chiffrer la clé DEK.
Pour plus d'informations sur la façon d'importer une clé dans le coffre de clés ou de créer une clé dans le coffre de clés (non recommandé pour un environnement de production), voir la section Ajouter une clé ou une clé secrète dans le coffre de clés de la page Prise en main d’Azure Key Vault.
Obtenir les principaux du service Azure Active Directory à utiliser pour SQL Server : quand l'organisation s'inscrit à un service cloud Microsoft, elle obtient un répertoire Azure Active Directory. Créez des principaux de service dans Azure Active Directory pour SQL Server à utiliser (pour s’authentifier auprès d’Azure Active Directory) lors de l’accès au coffre de clés.
Un administrateur SQL Server a besoin d’un principal de service pour accéder au coffre lors de la configuration de SQL Server pour utiliser le chiffrement.
Le moteur de base de données SQL Server a besoin d’un autre principal de service pour accéder au coffre pour désencapsuler les clés utilisées dans SQL Server chiffrement.
Pour plus d'informations sur la façon d'inscrire une application et de générer un principal du service, consultez la section Inscrire une application auprès d'Azure Active Directory dans Prise en main d'Azure Active Directory. Le processus d'inscription retourne un ID d'application (également appelé ID CLIENT) et une clé d'authentification (également appelée clé secrète) pour chaque principal du serviceAzure Active Directory. Lorsqu’il est utilisé dans l’instruction
CREATE CREDENTIAL
, le trait d’union doit être supprimé de l’ID CLIENT. Enregistrez ces éléments en vue de les utiliser dans les scripts ci-après :Principal de service pour une connexion sysadmin : CLIENTID_sysadmin_login et SECRET_sysadmin_login
Principal du service pour le moteur de base de données SQL Server : CLIENTID_DBEngine et SECRET_DBEngine.
Accorder l’autorisation aux principaux de service d’accéder à la Key Vault : les principaux CLIENTID_sysadmin_login et CLIENTID_DBEngineService nécessitent les autorisations get, list, wrapKey et unwrapKey dans le coffre de clés. Si vous envisagez de créer des clés via SQL Server vous devez également accorder l’autorisation de création dans le coffre de clés.
Important
Les utilisateurs doivent avoir au moins les opérations wrapKey et unwrapKey pour le coffre de clés.
Pour plus d'informations sur l'octroi d'autorisations dans le coffre, voir la section Autoriser l'application à utiliser la clé ou la clé secrète de la page Prise en main du coffre de clés Azure.
Liens vers la documentation du coffre de clés Azure
Informations de référence sur les applets de commande Azure Key Vault de PowerShell
Étape 2 : installer le connecteur SQL Server
Le connecteur SQL Server est téléchargé et installé par l’administrateur de l’ordinateur SQL Server. Le connecteur SQL Server est disponible en téléchargement à partir du Centre de téléchargement Microsoft. Recherchez le connecteur SQL Server pour le coffre de clés Microsoft Azure, passez en revue les détails, la configuration système requise et les instructions d'installation, téléchargez le connecteur et démarrez l'installation à l'aide de l'option Exécuter. Passez en revue la licence et acceptez-la, puis continuez.
Par défaut, le connecteur est installé dans C:\Program Files\connecteur SQL Server pour Microsoft Azure Key Vault. Cet emplacement peut être changé lors de l'installation. (S'il est changé, adaptez les scripts ci-dessous).
À la fin de l'installation, les éléments suivants sont installés sur l'ordinateur :
Microsoft.AzureKeyVaultService.EKM.dll: il s’agit de la DLL du fournisseur EKM de chiffrement qui doit être inscrite auprès de SQL Server à l’aide de l’instruction CREATE CRYPTOGRAPHIC PROVIDER.
Connecteur SQL Server pour le coffre de clés Azure: Il s'agit d'un service Windows qui permet au fournisseur EKM de chiffrement de communiquer avec le coffre de clés.
L’installation du connecteur SQL Server vous permet également de télécharger des exemples de scripts pour le chiffrement SQL Server.
Étape 3 : Configurer SQL Server pour utiliser un fournisseur EKM pour le coffre de clés
Autorisations
L'exécution de l'ensemble de ce processus nécessite l'autorisation CONTROL SERVER ou l'appartenance au rôle serveur fixe sysadmin . Des actions spécifiques nécessitent les autorisations suivantes :
Pour créer un fournisseur de chiffrement, l'autorisation CONTROL SERVER ou l'appartenance au rôle de serveur fixe sysadmin est requise.
Pour modifier une option de configuration et exécuter l'instruction RECONFIGURE, vous devez disposer de l'autorisation de niveau serveur ALTER SETTINGS. L'autorisation ALTER SETTINGS est implicitement détenue par les rôles serveur fixes sysadmin et serveradmin .
La création des informations d'identification nécessite l'autorisation ALTER ANY CREDENTIAL.
L'ajout d'informations d'identification à une connexion nécessite l'autorisation ALTER ANY LOGIN.
La création d'une clé asymétrique nécessite l'autorisation CREATE ASYMMETRIC KEY.
Pour configurer SQL Server afin d'utiliser un fournisseur de chiffrement
Configurez le moteur de base de données pour utiliser EKM et inscrivez (créez) le fournisseur de chiffrement avec SQL Server.
-- Enable advanced options. USE master; GO sp_configure 'show advanced options', 1 ; GO RECONFIGURE ; GO -- Enable EKM provider sp_configure 'EKM provider enabled', 1 ; GO RECONFIGURE ; GO -- Create a cryptographic provider, using the SQL Server Connector -- which is an EKM provider for the Azure Key Vault. This example uses -- the name AzureKeyVault_EKM_Prov. CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
Configurez des informations d’identification SQL Server pour une connexion d’administrateur SQL Server afin d’utiliser le coffre de clés afin de configurer et de gérer des scénarios de chiffrement SQL Server.
Important
L’argument IDENTITY de
CREATE CREDENTIAL
nécessite le nom du coffre de clés. L’argument SECRET deCREATE CREDENTIAL
nécessite que l’ID<> client (sans traits d’union) et <le secret> soient passés ensemble sans espace entre eux.Dans l’exemple suivant, l’ID client (
EF5C8E09-4D2A-4A76-9998-D93440D8115D
) est supprimé des traits d’union et entré en tant que chaîneEF5C8E094D2A4A769998D93440D8115D
et le secret est représenté par la chaîne SECRET_sysadmin_login.USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_sysadmin_login' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ; -- Add the credential to the SQL Server administrators domain login ALTER LOGIN [<domain>/<login>] ADD CREDENTIAL sysadmin_ekm_cred;
Pour obtenir un exemple d’utilisation de variables pour les
CREATE CREDENTIAL
arguments et de suppression programmatique des traits d’union de l’ID client, consultez CREATE CREDENTIAL (Transact-SQL).Si vous avez importé une clé asymétrique comme décrit précédemment dans l'étape 1 de la section 3, ouvrez la clé en fournissant son nom dans l'exemple suivant.
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH PROVIDER_KEY_NAME = 'ContosoMasterKey', CREATION_DISPOSITION = OPEN_EXISTING;
Bien qu’il ne soit pas recommandé en production (car la clé ne peut pas être exportée), il est possible de créer une clé asymétrique directement dans le coffre à partir de SQL Server. Si vous n'avez pas déjà importé de clé, créez une clé asymétrique dans le coffre de clés à des fins de test en utilisant le script suivant. Exécutez le script à l'aide d'une connexion configurée avec les informations d'identification sysadmin_ekm_cred .
CREATE ASYMMETRIC KEY CONTOSO_KEY FROM PROVIDER [AzureKeyVault_EKM_Prov] WITH ALGORITHM = RSA_2048, PROVIDER_KEY_NAME = 'ContosoMasterKey';
Conseil
Les utilisateurs recevant l’erreur Impossible d’exporter la clé publique du fournisseur. Code d’erreur du fournisseur : 2053. doivent case activée leurs autorisations get, list, wrapKey et unwrapKey dans le coffre de clés.
Pour plus d’informations, consultez les rubriques suivantes :
Exemples
Exemple A : chiffrement transparent des données à l'aide d'une clé asymétrique dans le coffre de clés
Après avoir effectué les étapes ci-dessus, créez des informations d'identification et une connexion, puis créez une clé de chiffrement de base de données protégée par la clé asymétrique dans le coffre de clés. Utilisez la clé de chiffrement de base de données pour chiffrer une base de données avec le chiffrement transparent des données.
Chiffrer une base de données nécessite l'autorisation CONTROL sur la base de données.
Pour activer le chiffrement transparent des données à l'aide de la gestion de clés extensible et du coffre de clés
Créez des informations d’identification SQL Server dont se servira le moteur de base de données pour accéder à la gestion de clés extensible du coffre de clés au moment du chargement de la base de données.
Important
L’argument IDENTITY de
CREATE CREDENTIAL
nécessite le nom du coffre de clés. L’argument SECRET deCREATE CREDENTIAL
nécessite que l’ID<> client (sans traits d’union) et <le secret> soient passés ensemble sans espace entre eux.Dans l'exemple suivant, l' ID client (
EF5C8E09-4D2A-4A76-9998-D93440D8115D
) est débarrassé des tirets et entré comme chaîneEF5C8E094D2A4A769998D93440D8115D
, tandis que la clé secrète est représentée par la chaîne SECRET_DBEngine.USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoKeyVault', SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_DBEngine' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
Créez une connexion SQL Server à utiliser par le moteur de base de données pour TDE, puis ajoutez-y les informations d’identification. Cet exemple utilise la clé asymétrique CONTOSO_KEY stockée dans le coffre de clés, qui a été importée ou créée précédemment pour la base de données MASTER, comme décrit à l' étape 3 de la section 3 ci-dessus.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
Créez la clé de chiffrement de base de données (DEK) qui sera utilisée pour le chiffrement transparent des données. La clé de chiffrement de base de données peut être créée à l'aide de n'importe quelle longueur de clé ou algorithme pris en charge par SQL Server. La clé DEK est protégée par la clé asymétrique dans le coffre de clés.
Cet exemple utilise la clé asymétrique CONTOSO_KEY stockée dans le coffre de clés, qui a été importée ou créée précédemment, comme décrit à l' étape 3 de la section 3 ci-dessus.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON ; GO
Pour plus d’informations, consultez les rubriques suivantes :
Exemple B : chiffrement des sauvegardes à l'aide d'une clé asymétrique dans le coffre de clés
Les sauvegardes chiffrées sont prises en charge à partir de SQL Server 2014. L'exemple suivant crée et restaure une sauvegarde chiffrée avec une clé de chiffrement de données protégée par la clé asymétrique dans le coffre de clés.
USE master;
BACKUP DATABASE [DATABASE_TO_BACKUP]
TO DISK = N'[PATH TO BACKUP FILE]'
WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,
ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY]);
GO
Exemple de code de restauration.
RESTORE DATABASE [DATABASE_TO_BACKUP]
FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE;
GO
Pour plus d’informations sur les options de sauvegarde, consultez BACKUP (Transact-SQL).
Exemple C : chiffrement au niveau colonne à l'aide d'une clé asymétrique dans le coffre de clés
L'exemple suivant crée une clé symétrique protégée par la clé asymétrique dans le coffre de clés. La clé symétrique est ensuite utilisée pour chiffrer les données de la base de données.
Cet exemple utilise la clé asymétrique CONTOSO_KEY stockée dans le coffre de clés, qui a été importée ou créée précédemment, comme décrit à l' étape 3 de la section 3 ci-dessus. Pour utiliser cette clé asymétrique dans la base de données ContosoDatabase
, vous devez réexécuter l'instruction CREATE ASYMMETRIC KEY pour fournir à la base de données ContosoDatabase
une référence à la clé.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY(KEY_GUID('DATA_ENCRYPTION_KEY'), CONVERT(VARBINARY,'Plain text data to encrypt'));
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;
Voir aussi
CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)CREATE CREDENTIAL (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)Extensible Key Management (EKM)Enable TDE using EKMBackup EncryptionCreate an Encrypted Backup Encryption Create an Encrypted Backup Encryption