Partager via


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

Le connecteur SQL Server pour Microsoft Azure Key Vault permet au chiffrement SQL Server d'utiliser le service Azure Key Vault comme un fournisseur Gestion de clés extensible (EKM) pour protéger ses clés de chiffrement.

Dans cette rubrique :

  • Utilisations de la gestion de clés extensible

  • Étape 1 : Configuration du coffre de clés pour une utilisation par SQL Server

  • Étape 2 : Installation du connecteur SQL Server

  • Étape 3 : Configuration de SQL Server afin d'utiliser un fournisseur EKM pour le coffre de clés

  • Exemple A : Chiffrement transparent des données à l'aide d'une clé asymétrique du coffre de clés

  • Exemple B : Chiffrement des sauvegardes à l'aide d'une clé asymétrique du coffre de clés

  • Exemple C : Chiffrement de niveau colonne à l'aide d'une clé asymétrique du coffre de clés

Utilisations de la gestion de clés extensible

Une organisation peut utiliser le chiffrement SQL Server pour protéger des données sensibles. Le chiffrement SQL Server inclut le Chiffrement transparent des données (TDE), le chiffrement de niveau colonne et le Backup Encryption. Dans tous ces cas de figure, 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 de données à l'aide d'une clé asymétrique stockée en dehors de SQL Server, dans un fournisseur de services 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 et les données.

Le connecteur SQL Server pour Azure Key Vault permet à SQL Server d'utiliser le service de coffre de clés extensible à hautes performances et haute disponibilité comme un fournisseur EKM pour la protection des clés de chiffrement. Le service de coffre de clés peut être utilisé avec des installations SQL Server sur des machines virtuelles Microsoft Azure et pour des 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.

Haut

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 des étapes du processus dans l'image ne correspondent pas aux numéros des étapes d'installation qui suivent l'image.

Gestion de clés extensible (EKM) SQL Server avec le coffre de clés Azure

Étape 1 : Configuration du coffre de clés pour une utilisation par SQL Server

Effectuez les étapes suivantes pour configurer un coffre de clés à utiliser avec le Moteur de base de données SQL Server pour protéger les clés de chiffrement. Un coffre est peut-être déjà en cours d'utilisation pour l'organisation. S'il n'existe pas de coffre, l'administrateur Azure de votre organisation qui est 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 et autoriser SQL Server à utiliser la clé. Pour vous familiariser avec le service Key Vault, consultez Prise en main d'Azure Key Vault et les informations de référence sur les applets de commande Azure Key Vault de PowerShell.

Important

Si vous avez plusieurs abonnements Azure, vous devez utiliser l'abonnement qui contient SQL Server.

  1. Créez un coffre : créez un coffre en suivant les instructions de la section Créer un coffre de clés dans Prise en main d'Azure Key Vault. Notez le nom du coffre. Cette rubrique utilise ContosoKeyVault comme nom du coffre de clés.

  2. Générez une clé asymétrique dans le coffre : La clé asymétrique du coffre de clés est utilisée pour protéger les clés de chiffrement SQL Server. Seule la partie publique de la clé asymétrique sort du coffre ; la partie privée n'est jamais exportée par le coffre. Toutes les opérations de chiffrement effectuées à l'aide de la clé asymétrique sont déléguées à Azure Key Vault et sont protégées par la sécurité du coffre de clés.

    Plusieurs méthodes existent pour générer une clé asymétrique et la stocker dans le coffre. Vous pouvez générer en externe une clé, puis l'importer dans le coffre sous forme de fichier .pfx. Vous pouvez aussi créer la clé directement dans le coffre à l'aide de l'API du coffre de clés.

    Le connecteur SQL Server requiert que les clés asymétriques soient chiffrées avec RSA 2048 bits ; le nom de la clé peut utiliser seulement les caractères « a-z », « A-Z », « 0-9 » et « - ». Dans ce document, le nom de la clé asymétrique utilisée est ContosoMasterKey. Remplacez celui-ci par le nom unique que vous utilisez pour la clé.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    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. Si une clé asymétrique est perdue, les données sont définitivement irrécupérables.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Le coffre de clés prend en charge plusieurs versions de la même clé nommée. Les clés que doit utiliser le connecteur SQL Server ne doivent pas être stockées en plusieurs versions ni modifiées. Si l'administrateur veut modifier la clé utilisée pour le chiffrement SQL Server, une nouvelle clé avec un autre nom doit être créée dans le coffre et utilisée pour chiffrer la clé de chiffrement des données.

    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), consultez la section Ajouter une clé ou une clé secrète au coffre de clés dans Prise en main d'Azure Key Vault.

    Important

    Les utilisateurs doivent avoir accès au moins aux opérations wrapKey et unwrapKey pour le coffre de clés.

  3. Obtenez les principaux du service Azure Active Directory à utiliser pour SQL Server : Quand l'organisation s'inscrit à un service cloud Microsoft, elle obtient un annuaire Azure Active Directory. Créez les principaux du service dans Azure Active Directory que doit utiliser SQL Server (pour s'authentifier auprès d'Azure Active Directory) lors de l'accès au coffre de clés.

    • Un principal du service est requis par un administrateur SQL Server pour accéder au coffre lors de la configuration de SQL Server pour l'utilisation du chiffrement.

    • Un autre principal du service est requis par le Moteur de base de données SQL Server pour accéder au coffre pour désencapsuler les clés utilisées dans le chiffrement SQL Server.

    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 DE CLIENT) et une clé d'authentification (également appelée clé secrète) pour chaque principal du service Azure Active Directory. Quand elle est utilisée dans l'instruction CREATE CREDENTIAL, le trait d'union doit être supprimé de l'ID DE CLIENT. Notez ces informations pour les utiliser dans les scripts ci-dessous :

    • Principal du 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.

  4. Accordez des autorisations pour que les principaux du service accèdent au coffre de clés : Les deux principaux du service CLIENTID_sysadmin_login et CLIENTID_DBEngine requièrent les autorisations get, list, wrapKey et unwrapKey dans le coffre de clés. Si vous prévoyez de créer des clés via SQL Server, vous devez également accorder l'autorisation create dans le coffre de clés.

    Pour plus d'informations sur l'octroi d'autorisations dans le coffre, consultez la section Autoriser l'application à utiliser la clé ou la clé secrète dans Prise en main d'Azure Key Vault.

    Liens vers la documentation d'Azure Key Vault

Haut

Étape 2 : Installation du 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 peut être téléchargé à partir du Centre de téléchargement Microsoft. Recherchez Connecteur SQL Server pour Microsoft Azure Key Vault, examinez les détails, la configuration système requise et les instructions d'installation, choisissez de télécharger le connecteur et démarrez l'installation en utilisant Exécuter. Lisez le contrat de licence, acceptez-le et poursuivez.

Par défaut, le connecteur est installé dans C:\Program Files\SQL Server Connector for 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 Azure Key Vault: 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.

Haut

Étape 3 : Configuration de SQL Server afin d'utiliser un fournisseur EKM pour le coffre de clés

Autorisations

Pour effectuer tout ce processus, l'autorisation CONTROL SERVER ou l'appartenance au rôle de serveur fixe sysadmin est requise. 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.

  • Pour créer des informations d'identification, l'autorisation ALTER ANY CREDENTIAL est requise.

  • Pour ajouter des informations d'identification à une connexion, l'autorisation ALTER ANY LOGIN est requise.

  • Pour créer une clé asymétrique, l'autorisation CREATE ASYMMETRIC KEY est requise.

Icône de flèche utilisée avec le lien Retour en haut[Top]

Pour configurer SQL Server pour l'utilisation d'un fournisseur de chiffrement

  1. Configurez le Moteur de base de données pour l'utilisation d'EKM et inscrivez (créez) le fournisseur de chiffrement auprès de 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 
    
  2. Définissez des informations d'identification SQL Server pour une connexion d'administrateur SQL Server pour utiliser le coffre de clés, de façon à pouvoir configurer et gérer des scénarios de chiffrement SQL Server.

    Important

    L'argument IDENTITY de CREATE CREDENTIAL requiert le nom du coffre de clés. L'argument SECRET de CREATE CREDENTIAL requiert que <ID de client> (sans trait d'union) et <Clé secrète> soient passés ensemble sans espace entre eux.

    Dans l'exemple suivant, les traits d'union sont supprimés de l'ID de client (EF5C8E09-4D2A-4A76-9998-D93440D8115D) et il est entré sous la forme EF5C8E094D2A4A769998D93440D8115D ; Clé secrète 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 arguments CREATE CREDENTIAL et la suppression par programmation des traits d'union de l'ID de client, consultez CREATE CREDENTIAL (Transact-SQL).

  3. 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 votre nom de la clé dans l'exemple suivant.

    CREATE ASYMMETRIC KEY CONTOSO_KEY 
    FROM PROVIDER [AzureKeyVault_EKM_Prov]
    WITH PROVIDER_KEY_NAME = 'ContosoMasterKey',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    Bien que non recommandé pour la production (parce que la clé ne peut pas être exportée), il est possible de créer une clé asymétrique directement dans le coffre depuis 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, en utilisant 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';
    

Pour plus d'informations, consultez les documents suivants :

Icône de flèche utilisée avec le lien Retour en haut[Top]

Exemples

Exemple A : Chiffrement transparent des données à l'aide d'une clé asymétrique du 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.

Pour chiffrer une base de données, l'autorisation CONTROL sur la base de données est requise.

Pour activer le chiffrement transparent des données à l'aide d'EKM et du coffre de clés

  1. Créez des informations d'identification SQL Server qui seront utilisées par le Moteur de base de données pour accéder à l'EKM du coffre de clés lors du chargement de la base de données.

    Important

    L'argument IDENTITY de CREATE CREDENTIAL requiert le nom du coffre de clés. L'argument SECRET de CREATE CREDENTIAL requiert que <ID de client> (sans trait d'union) et <Clé secrète> soient passés ensemble sans espace entre eux.

    Dans l'exemple suivant, les traits d'union sont supprimés de l'ID client (EF5C8E09-4D2A-4A76-9998-D93440D8115D) et il est entré sous la forme EF5C8E094D2A4A769998D93440D8115D ; Clé secrète est représenté 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 ;
    
  2. Créez une connexion SQL Server à utiliser par le Moteur de base de données pour le chiffrement transparent des données, et ajoutez-lui 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é ou créé précédemment pour la base de données MASTER, comme décrit à l'Étape 3, 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
    
  3. Créez la clé de chiffrement de base de données qui sera utilisée pour le chiffrement transparent des données. La clé de chiffrement de base de données peut être créée en utilisant n'importe quel algorithme ou longueur de clé pris en charge par SQL Server. La clé de chiffrement de base de données est protégée par la clé asymétrique du 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é ou créé précédemment, comme décrit à l'Étape 3, 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 documents suivants :

Haut

Exemple B : Chiffrement des sauvegardes à l'aide d'une clé asymétrique du coffre de clés

Les sauvegardes chiffrées sont prises en charge à partir de . L'exemple suivant crée et restaure une sauvegarde chiffrée en utilisant une clé de chiffrement de données protégée par la clé asymétrique du 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 de niveau colonne à l'aide d'une clé asymétrique du coffre de clés

L'exemple suivant crée une clé symétrique protégée par la clé asymétrique du 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é ou créé précédemment, comme décrit à l'Étape 3, 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

Référence

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)

CREATE CREDENTIAL (Transact-SQL)

CREATE ASYMMETRIC KEY (Transact-SQL)

CREATE SYMMETRIC KEY (Transact-SQL)

Concepts

Gestion de clés extensible (EKM)

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

Autres ressources

Backup Encryption

Create an Encrypted Backup