Utiliser le connecteur SQL Server avec les fonctionnalités de chiffrement SQL
S'applique à : SQL Server
Les activités de chiffrement SQL Server courantes à l'aide d'une clé asymétrique protégée par Azure Key Vault incluent les trois domaines suivants.
Chiffrement TDE (Transparent Data Encryption) à l’aide d’une clé asymétrique dans Azure Key Vault
Chiffrement des sauvegardes à l'aide d'une clé asymétrique du coffre de clés
Chiffrement au niveau colonne à l’aide d’une clé asymétrique dans le coffre de clés
Exécutez les parties I à IV de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vaultavant de suivre les étapes de cette rubrique.
Remarque
Les versions 1.0.0.440 et antérieures ont été remplacées et ne sont plus prises en charge dans les environnements de production. Effectuez la mise à niveau vers la version 1.0.1.0 ou ultérieure en accédant au Centre de téléchargement Microsoft et en utilisant les instructions fournies dans la page Résolution des problèmes et maintenance du connecteur SQL Server sous « Mise à niveau du connecteur SQL Server ».
Remarque
Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).
Chiffrement TDE (Transparent Data Encryption) à l’aide d’une clé asymétrique dans Azure Key Vault
Une fois les parties I à IV de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault terminées, utilisez la clé Azure Key Vault pour chiffrer la clé de chiffrement de base de données à l’aide du chiffrement TDE. Pour plus d’informations sur la rotation des clés à l’aide de PowerShell, consultez Effectuer une rotation du protecteur TDE (Transparent Data Encryption) à l’aide de PowerShell.
Important
Ne supprimez pas les versions précédentes de la clé après une substitution. Lorsque les clés sont substituées, certaines données sont toujours chiffrées avec les clés précédentes, comme les anciennes sauvegardes de base de données, les fichiers journaux de sauvegardes et de transactions.
Vous devez créer des informations d’identification et une connexion, puis créer une clé de chiffrement de base de données qui chiffre les données et les journaux dans la base de données. Pour chiffrer une base de données, l’autorisation CONTROL sur la base de données est exigée. Le graphique suivant montre la hiérarchie de la clé de chiffrement lors de l’utilisation du coffre Azure Key Vault.
Créer des identifiants SQL Server pour le moteur de base de données à utiliser pour le chiffrement TDE
Le moteur de base de données utilise les identifiants de l'application Microsoft Entra pour accéder au coffre de clés lors du chargement de la base de données. Nous vous recommandons de créer un autre ID client et un autre Secret, comme décrit à l'Étape 1, pour le moteur de base de données, afin de limiter les autorisations de coffre de clés accordées.
Modifiez le script Transact-SQL ci-dessous comme suit :
Modifiez l’argument
IDENTITY
(ContosoDevKeyVault
) de sorte qu’il pointe vers votre coffre Azure Key Vault.- Si vous utilisez Azure global, remplacez l’argument
IDENTITY
par le nom de votre coffre Azure Key Vault de la Partie II. - Si vous utilisez un cloud Azure privé (par exemple Azure Government, Azure opéré par 21Vianet, ou Azure Germany), remplacez l'argument
IDENTITY
par l'URI du coffre renvoyée à l'étape 3 de la Partie II. N’incluez pas « https:// » dans l’URI du coffre.
- Si vous utilisez Azure global, remplacez l’argument
Remplacez la première partie de l'argument
SECRET
par l'ID client de l'application Microsoft Entra de l'Étape 1. Dans cet exemple, l’ID client estEF5C8E094D2A4A769998D93440D8115D
.Important
Vous devez supprimer les tirets de l’ ID client.
Complétez la deuxième partie de l’argument
SECRET
avec la Clé secrète client mentionnée dans la Partie 1. Dans cet exemple, la clé secrète client de la Partie 1 estReplaceWithAADClientSecret
.La chaîne finale pour l’argument SECRET est une longue séquence de lettres et de chiffres, sans tirets.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Créer un compte de connexion SQL Server pour le moteur de base de données pour TDE
Créez un compte de connexion SQL Server et ajoutez-lui les identifiants mentionnés à l'étape 1. Cet exemple Transact-SQL utilise la même clé que celle importée précédemment.
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éer la clé de chiffrement de base de données (DEK)
La clé DEK chiffre vos données et vos fichiers journaux dans l’instance de base de données et est, à son tour, chiffrée par la clé asymétrique Azure Key Vault. 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.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
Activer le chiffrement TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
À l'aide de Management Studio, vérifiez que le chiffrement TDE a été activé en vous connectant à votre base de données avec l'Explorateur d'objets. Cliquez avec le bouton droit sur votre base de données, pointez sur Tâches, puis cliquez sur Gérer le chiffrement de base de données.
Dans la boîte de dialogue Gérer le chiffrement de base de données , vérifiez que le chiffrement TDE est activé et quelle clé asymétrique chiffre la clé DEK.
Vous pouvez aussi exécuter le script Transact-SQL suivant. Un état de chiffrement de 3 indique une base de données.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;
Remarque
La base de données
tempdb
est chiffrée automatiquement chaque fois qu’une base de données permet le chiffrement TDE.
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 SQL Server 2014 (12.x). 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.
Le moteur de base de données utilise les identifiants de l'application Microsoft Entra pour accéder au coffre de clés lors du chargement de la base de données. Nous vous recommandons de créer un autre ID client et un autre Secret, comme décrit à l'Étape 1, pour le moteur de base de données, afin de limiter les autorisations de coffre de clés accordées.
Créer des informations d’identification SQL Server pour le moteur de base de données à utiliser pour le chiffrement de sauvegarde
Modifiez le script Transact-SQL ci-dessous comme suit :
Modifiez l’argument
IDENTITY
(ContosoDevKeyVault
) de sorte qu’il pointe vers votre coffre Azure Key Vault.- Si vous utilisez Azure global, remplacez l’argument
IDENTITY
par le nom de votre coffre Azure Key Vault de la Partie II. - Si vous utilisez un cloud Azure privé (par exemple Azure Government, Microsoft Azure opéré par 21Vianet, ou Azure Germany), remplacez l'argument
IDENTITY
par l'URI du coffre renvoyée à l'étape 3 de la Partie II. N’incluez pas « https:// » dans l’URI du coffre.
- Si vous utilisez Azure global, remplacez l’argument
Remplacez la première partie de l'argument
SECRET
par l'ID client de l'application Microsoft Entra de l'Étape 1. Dans cet exemple, l’ID client estEF5C8E094D2A4A769998D93440D8115D
.Important
Vous devez supprimer les tirets de l’ ID client.
Complétez la deuxième partie de l’argument
SECRET
avec la clé secrète client mentionnée dans la Partie I. Dans cet exemple, la clé secrète client de la Partie I estReplace-With-AAD-Client-Secret
. La chaîne finale pour l’argumentSECRET
est une longue séquence de lettres et de chiffres, sans tirets.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Créer un compte de connexion SQL Server pour le moteur de base de données à utiliser pour le chiffrement de sauvegarde
Créez un compte de connexion SQL Server utilisable par le moteur de base de données pour les sauvegardes chiffrées, et ajoutez-lui les identifiants mentionnés à l'étape 1. Cet exemple Transact-SQL utilise la même clé que celle importée précédemment.
Important
Vous ne pouvez pas utiliser la même clé asymétrique pour le chiffrement de sauvegarde si vous avez déjà utilisé cette clé pour le chiffrement TDE (l'exemple ci-dessus) ou pour le chiffrement au niveau des colonnes (l'exemple suivant).
Cet exemple utilise la clé asymétrique
CONTOSO_KEY_BACKUP
stockée dans le coffre de clés, qui peut être préalablement importée ou créée pour la base de données MASTER, comme décrit à l’étape 5 de la Partie IV.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 Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GO
Sauvegarder la base de données
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.
Dans l’exemple ci-dessous, notez que si la base de données a déjà été chiffrée avec TDE et que la clé asymétrique
CONTOSO_KEY_BACKUP
est différente de la clé asymétrique TDE, la sauvegarde sera chiffrée à la fois par la clé asymétrique TDE et parCONTOSO_KEY_BACKUP
. L'instance SQL Server cible aura besoin des deux clés pour déchiffrer la sauvegarde.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_BACKUP]); GO
Restaurer la base de données
Pour restaurer une sauvegarde de base de données chiffrée avec TDE, l'instance SQL Server cible doit tout d'abord avoir une copie de la clé asymétrique du coffre de clés utilisée pour le chiffrement. Voici comment procéder :
Si la clé asymétrique d’origine utilisée pour le chiffrement TDE n’est plus dans Key Vault, restaurez la sauvegarde de clé Key Vault ou réimportez la clé à partir d’un module HSM local. Important : Pour que l’empreinte numérique de la clé corresponde à celle enregistrée dans la sauvegarde de base de données, la clé doit avoir le même nom que la clé Key Vault, comme c’était le cas initialement.
Appliquez les étapes 1 et 2 sur l'instance SQL Server cible.
Une fois que l'instance SQL Server cible a accès à la ou aux clés asymétriques utilisées pour chiffrer la sauvegarde, restaurez la base de données sur le serveur.
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).
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.
Important
Vous ne pouvez pas utiliser la même clé asymétrique pour le chiffrement au niveau des colonnes si vous avez déjà utilisé cette clé pour le chiffrement de sauvegarde.
Cet exemple utilise la clé asymétrique CONTOSO_KEY_COLUMNS
stockée dans le coffre de clés, qui peut être préalablement importée ou créée, comme décrit à l’étape 3 de la Partie II de la rubrique Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault. 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
avec une référence à la clé.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
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_COLUMNS;
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_COLUMNS;
--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
Étapes de la configuration de la gestion de clés extensible à l’aide d’Azure Key Vault
Gestion de clés extensible à l’aide d’Azure Key Vault
Fournisseur EKM activé (option de configuration de serveur)
Résolution des problèmes et maintenance du connecteur SQL Server