Configurer l’intégration d’Azure Key Vault pour SQL Server sur des machines virtuelles (Resource Manager)

S’applique à :SQL Server sur la machine virtuelle Azure

Il existe plusieurs fonctionnalités de chiffrement SQL Server, telles que le chiffrement transparent des données (TDE), le chiffrement au niveau des colonnes (CLE) et le chiffrement de sauvegarde. Ces types de chiffrement nécessitent que vous gériez et stockiez les clés de chiffrement que vous utilisez pour le chiffrement. Le service Azure Key Vault est conçu pour optimiser la sécurité et la gestion de ces clés dans un emplacement sécurisé et hautement disponible. Le connecteur SQL Server permet à SQL Server d’utiliser ces clés depuis le coffre de clés Azure.

Si vous exécutez SQL Server en local, vous devez suivre la procédure d’accès à Azure Key Vault à partir de votre instance SQL Server locale. Mais, pour SQL Server sur des machines virtuelles Azure, vous pouvez gagner du temps à l’aide de la fonctionnalité Intégration d’Azure Key Vault.

Notes

L’intégration d’Azure Key Vault est disponible uniquement pour les éditions Enterprise, Developer et Evaluation de SQL Server. À compter de SQL Server 2019, l’édition Standard est également prise en charge.

Lorsque cette fonctionnalité est activée, elle installe automatiquement le connecteur SQL Server, configure le fournisseur EKM pour accéder à Azure Key Vault et crée les informations d'identification vous permettant d'accéder à votre coffre. Si vous avez examiné les étapes décrites dans la documentation locale mentionnée précédemment, vous pouvez voir que cette fonctionnalité automatise les étapes 2 et 3. La seule étape que vous devez encore exécuter manuellement consiste à créer le coffre de clé et des clés. À partir de là, la configuration complète de votre machine virtuelle SQL Server est automatisée. Une fois que la fonctionnalité a terminé cette configuration, vous pouvez exécuter des instructions Transact-SQL (T-SQL) pour commencer à chiffrer vos bases de données et vos sauvegardes comme vous le feriez normalement.

Notes

Vous pouvez également configurer l’intégration de Key Vault à l’aide d’un modèle. Pour plus d’informations, consultez l’article Azure quickstart template for Azure Key Vault integration(Modèle de démarrage rapide d’Azure pour l’intégration d’Azure Key Vault).

Préparation pour AKV Integration

Il existe plusieurs conditions préalables pour utiliser Azure Key Vault Integration pour configurer votre machine virtuelle SQL Server :

  1. Installation d'Azure PowerShell
  2. Créer un locataire Microsoft Entra
  3. Création d’un coffre de clés

Les sections suivantes décrivent ces conditions préalables et les informations que vous devez collecter pour exécuter ultérieurement des applets de commande PowerShell.

Notes

Cet article utilise le module Azure Az PowerShell, qui est le module PowerShell recommandé pour interagir avec Azure. Pour démarrer avec le module Az PowerShell, consulter Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Installation d’Azure PowerShell

Assurez-vous que vous avez installé la dernière version du module Azure PowerShell. Pour plus d’informations, consultez Installer et configurer Azure PowerShell.

Inscrivez une application dans votre Microsoft Entra ID

Tout d’abord, vous devez disposer d’un locataire Microsoft Entra dans votre abonnement. Cela vous permet, entre autres avantages, d'accorder des droits d'accès à votre coffre de clés à certains utilisateurs et d'applications.

Ensuite, enregistrez une application avec Microsoft Entra ID. Vous obtiendrez un compte Principal du service ayant un accès à votre coffre de clés dont votre machine virtuelle a besoin. Dans l’article Azure Key Vault, vous pouvez trouver ces étapes dans la section Inscription d’une application auprès de Microsoft Entra ID, ou vous pouvez voir les étapes avec des captures d’écran dans la section Obtention d’une identité pour l’application de ce billet de blog. Avant d’effectuer ces étapes, vous devez collecter les informations suivantes au cours de cette inscription. Elles seront nécessaires ultérieurement lorsque vous activerez Azure Key Vault Integration sur votre machine virtuelle SQL.

  • Après avoir ajouté l’application, trouvez l’ID d’application (également appelé ClientID ou AppID) sur le volet Application inscrite. L’ID d’application est affecté ultérieurement au paramètre $spName (nom de principal du service) dans le script PowerShell pour activer l’intégration Azure Key Vault.

    Application ID

  • Au cours de ces étapes, lors de la création de la clé, copiez son secret comme dans la capture d'écran suivante. Ce secret de clé est affecté ultérieurement au paramètre $spSecret (secret du principal du service) dans le script PowerShell.

    AAD secret

  • L’ID d’application et le secret serviront également à créer des identifiants dans SQL Server.

  • Vous devez autoriser ce nouvel ID d’application (ou ID client) à disposer des autorisations d’accès suivantes : get, wrapKey, unwrapKey. Cette opération s'effectue avec la cmdlet Set-AzKeyVaultAccessPolicy. Pour plus d'informations, consultez Présentation d'Azure Key Vault.

Création d’un coffre de clés

Pour utiliser Azure Key Vault pour stocker les clés que vous utiliserez pour le chiffrement dans votre machine virtuelle, vous devez accéder à un coffre de clés. Si vous n’avez pas déjà configuré votre coffre de clés, créez-en un en suivant les étapes décrites dans la rubrique Prise en main d’Azure Key Vault. Avant d'effectuer ces étapes, vous devez collecter certaines informations au cours de la configuration. Elles seront nécessaires ultérieurement lorsque vous activerez Azure Key Vault Integration sur votre machine virtuelle SQL.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

Lorsque vous arrivez à l’étape de création d’un coffre de clés, notez la propriété vaultUri renvoyée. Il s’agit de l’URL du coffre de clés. Dans l’exemple utilisé à cette étape et illustré ci-après, le nom du coffre de clés est ContosoKeyVault. Par conséquent, l’URL du coffre de clés sera https://contosokeyvault.vault.azure.net/.

L’URL du coffre de clés est affectée ultérieurement au paramètre $akvURL dans le script PowerShell pour activer l’intégration du coffre de clés Azure.

Maintenant que le coffre de clés a été créé, nous devons y ajouter une clé, à laquelle il sera fait référence plus tard quand nous créerons une clé asymétrique dans SQL Server.

Notes

La version 1.0.4.0 du fournisseur EKM (Extensible Key Management) est installée sur la machine virtuelle SQL Server via l’extension IaaS (infrastructure as a service) SQL. La mise à niveau de l’extension d’agent IaaS SQL ne met pas à jour la version du fournisseur. Si nécessaire, mettez manuellement à niveau la version du fournisseur EKM (par exemple, lors de la migration vers SQL Managed Instance).

Activer et configurer l’intégration de Key Vault

Vous pouvez activer l’intégration de Key Vault lors de l’approvisionnement ou vous pouvez la configurer pour les machines virtuelles existantes.

Nouvelles machines virtuelles

Si vous approvisionnez une nouvelle machine virtuelle SQL avec Resource Manager, le portail Azure permet d’activer l’intégration d’Azure Key Vault.

SQL Azure Key Vault Integration

Pour une procédure pas à pas de l’approvisionnement, consultez Approvisionner une machine virtuelle SQL dans le portail Azure.

Machines virtuelles existantes

Pour les machines virtuelles SQL existantes, ouvrez votre ressource Machines virtuelles SQL et sélectionnez Sécurité sous Paramètres. Sélectionnez Activer pour activer l’intégration d’Azure Key Vault.

La capture d’écran suivante montre comment activer Azure Key Vault dans le portail pour une machine virtuelle SQL Server existante (cette instance SQL Server utilise un port non défini par défaut 1401) :

SQL Key Vault integration for existing VMs

Quand vous avez terminé, cliquez sur le bouton Appliquer en bas de la page Sécurité pour enregistrer vos modifications.

Notes

Le nom des informations d’identification que nous avons créées ici sera mappé ultérieurement à une connexion SQL. La connexion SQL pourra ainsi accéder au coffre de clés.

Après avoir activé Azure Key Vault Integration, vous pouvez activer le chiffrement SQL Server sur votre machine virtuelle SQL. Tout d'abord, vous devez créer une clé asymétrique à l'intérieur de votre coffre de clés et une clé symétrique dans SQL Server sur votre machine virtuelle. Ensuite, vous serez en mesure d'exécuter les instructions T-SQL pour activer le chiffrement pour vos bases de données et sauvegardes.

Il existe plusieurs types de chiffrement que vous pouvez exploiter :

Les scripts Transact-SQL suivants fournissent des exemples pour chacune de ces options.

Configuration requise pour les exemples

Chaque exemple est basé sur les deux conditions préalables : une clé asymétrique de votre coffre de clés appelée CONTOSO_KEY et une information d’identification créée par le biais de la fonctionnalité AKV Integration appelée Azure_EKM_cred. Les commandes Transact-SQL suivantes installent cette configuration requise pour l’exécution des exemples.

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

Transparent Data Encryption (TDE)

  1. Créez une connexion SQL Server utilisable par le moteur de base de données pour le chiffrement transparent des données, puis ajoutez-lui les informations d'identification.

    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 EKM_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 EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. Créez la clé de chiffrement de base de données qui sera utilisée pour le chiffrement transparent des données.

    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
    

Sauvegardes chiffrées

  1. Créez une connexion SQL Server utilisable par le moteur de base de données pour les sauvegardes chiffrées, puis ajoutez-lui les informations d'identification.

    USE master;
    -- Create a SQL Server login associated with the asymmetric key
    -- for the Database engine to use when it is encrypting the backup.
    CREATE LOGIN EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Sauvegardez le chiffrement spécifiant la spécification de base de données avec la clé asymétrique stockée 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
    

Chiffrement au niveau des colonnes (CLE)

Ce script crée une clé symétrique protégée par la clé asymétrique dans le coffre de clés et utilise ensuite la clé symétrique pour chiffrer les données dans la base de données.

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;

Ressources supplémentaires

Pour plus d'informations sur l'utilisation de ces fonctionnalités de chiffrement, consultez Utilisation d'EKM avec les fonctionnalités de chiffrement SQL Server (en Anglais).

Notez que cet article suppose que vous disposez déjà de SQL Server exécuté sur une machine virtuelle Azure. Dans le cas contraire, consultez l’article Approvisionnement d’une machine virtuelle SQL Server dans Azure. Pour d’autres conseils sur l’exécution de SQL Server sur les machines virtuelles Azure, consultez Vue d’ensemble de SQL Server sur les machines virtuelles Windows Azure.

Étapes suivantes

Pour plus d’informations sur la sécurité, consultez les considérations relatives à la sécurité pour SQL Server sur les machines virtuelles Azure.