Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
Les activités courantes de chiffrement SQL Server utilisant une clé asymétrique protégée par Azure Key Vault se répartissent dans les trois domaines suivants :
- Chiffrement transparent des données (TDE) en utilisant une clé asymétrique d’Azure Key Vault.
- Chiffrer les sauvegardes en utilisant une clé asymétrique issue du coffre-fort des clés.
- Chiffrement au niveau colonne en utilisant une clé asymétrique provenant du coffre-fort des clés.
Terminez les étapes 1 à 4 de Configurer Transparent Data Encryption avec Azure Key Vault pour SQL Server avant de suivre les étapes de cet article.
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. Passez à la version 1.0.1.0 ou ultérieure. Téléchargez la version actuelle depuis le Centre de téléchargement Microsoft, et suivez les instructions dans la section « Mise à niveau du SQL Server Connector » de maintenance et résolution des problèmes de SQL Server Connector.
Remarque
Microsoft Entra ID était anciennement appelé Azure Active Directory (Azure AD).
Chiffrement transparent des données en utilisant une clé asymétrique d’Azure Key Vault
Après avoir terminé les étapes 1 à 4 de configurer Transparent Data Encryption avec Azure Key Vault pour SQL Server, utilisez la clé Azure Key Vault pour chiffrer la clé de chiffrement de la base de données avec TDE. Pour plus d’informations sur la rotation des clés avec PowerShell, voir Faire pivoter le protecteur Transparent Data Encryption (TDE) à l’aide de PowerShell.
Important
Ne supprimez pas les versions précédentes de la clé après une rotation. Lors de la rotation des clés, certaines données sont encore chiffrées avec les clés précédentes, comme les anciennes sauvegardes de base de données, les fichiers journaux sauvegardés et les fichiers journaux de transactions.
Vous devez créer des informations d’identification et un nom de 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. Chiffrer une base de données nécessite l’autorisation CONTROL sur la base de données. Le graphique suivant montre la hiérarchie de la clé de chiffrement lorsque vous utilisez Azure Key Vault.
Créer des informations d’identification 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-fort des clés lors du chargement de la base de données. Pour limiter les autorisations du coffre de clés que vous accordez, créez un autre ID client et un autre secret, comme décrit à l’étape 1 : Configurez le modèle d’authentification, pour le Moteur de base de donné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
IDENTITYpar le nom de votre Azure Key Vault de l’Étape 2 : Créer un coffre de clés. - Si vous utilisez un cloud Azure privé, par exemple Azure Government, Azure exploité par 21Vianet, ou Azure Allemagne, remplacez l'
IDENTITYargument par l'URI Vault retourné dans Create a Key Vault and Key by PowerShell. N’incluez pashttps://dans l’URI du coffre de clés.
- Si vous utilisez Azure global, remplacez l’argument
Remplacez la première partie de l’argument
SECRETpar l’ID client de l’application Microsoft Entra de l’étape 1 : Configurez le modèle d’authentification. 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
SECRETavec le Secret du Client de l’étape 1. Dans cet exemple, le Secret client estReplaceWithAADClientSecret.La dernière chaîne de l’argument
SECRETest une longue séquence de lettres et de chiffres, sans traits d’union.
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 ; GOCréer la clé de chiffrement de la base de données (DEK)
Le DEK chiffre vos données et fichiers journaux dans l’instance de la base de données, et est à son tour chiffré par la clé asymétrique Azure Key Vault. Vous pouvez créer le DEK en utilisant n’importe quel algorithme ou longueur de clé que SQL Server supporte.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOActivez le TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOAvec Management Studio, vérifiez que TDE est activé en vous connectant à votre base de données avec Explorateur d'objets. Faites un clic droit sur votre base de données, pointez vers Tâches, puis sélectionnez Gérer le chiffrement de la 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 chiffrée.
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
tempdbest chiffrée automatiquement chaque fois qu’une base de données permet le chiffrement TDE.
Chiffrer des sauvegardes en utilisant une clé asymétrique du coffre à 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 que la clé asymétrique dans le coffre-fort protège.
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. Pour limiter les autorisations de coffre de clés que vous accordez, créez un autre ID client et un autre secret, comme décrit à l’étape 1 : Configurez le modèle d’authentification, pour le Moteur de base de données.
Créez des informations d’identification SQL Server pour que le Moteur de base de données puisse les utiliser pour le chiffrement des sauvegardes
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
IDENTITYpar le nom de votre Azure Key Vault de l’Étape 2 : Créer un coffre de clés. - Si vous utilisez un cloud Azure privé, par exemple Azure Government, Microsoft Azure exploité par 21Vianet, ou Azure Allemagne, remplacez l'
IDENTITYargument par l'URI du Vault retourné dans Create a key vault and key by using PowerShell. N’incluez pashttps://dans l’URI du coffre de clés.
- Si vous utilisez Azure global, remplacez l’argument
Remplacez la première partie de l’argument
SECRETpar l’ID client de l’application Microsoft Entra indiqué dans l’étape 1 : Configurez le modèle d’authentification. 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
SECRETavec le Secret du Client de l’étape 1. Dans cet exemple, le secret client estReplace-With-AAD-Client-Secret. La dernière chaîne de l’argumentSECRETest une longue séquence de lettres et de chiffres, sans traits d’union.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éez un identifiant de connexion SQL Server pour le Moteur de base de données pour le chiffrement des sauvegardes
Créez une connexion SQL Server à utiliser par le moteur de base de données pour les sauvegardes de chiffrement et ajoutez les informations d’identification de l’étape 1 à celle-ci. 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 TDE (l’exemple précédent), ou le chiffrement au niveau colonne (l’exemple suivant).
Cet exemple utilise la
CONTOSO_KEY_BACKUPclé asymétrique stockée dans le coffre à clés, que vous pouvez importer ou créer déjà pour lamasterbase de données, comme décrit à l’étape 2 : Créer un coffre à clés.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 ; GOSauvegardez la base de données
Sauvegardez la base de données en spécifiant le chiffrement avec la clé asymétrique stockée dans le coffre de clés.
Dans l’exemple suivant, notez que si la base de données était déjà chiffrée avec TDE, et que la clé
CONTOSO_KEY_BACKUPasymétrique est différente de la clé asymétrique TDE, la sauvegarde est chiffrée à la fois par la clé asymétrique TDE etCONTOSO_KEY_BACKUP. L’instance SQL Server cible a 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]); GORestaurer la base de données
Pour restaurer une sauvegarde de base de données chiffrée avec TDE, l’instance SQL Server cible doit d’abord posséder une copie de la clé asymétrique de Key Vault utilisée pour le chiffrement. Pour fournir cette copie :
Si la clé asymétrique d’origine utilisée pour le TDE n’est plus dans le coffre de clés, restaurez la sauvegarde de la clé du coffre ou réimportez la clé depuis un HSM local. Pour que l’empreinte digitale de la clé corresponde à celle enregistrée sur la sauvegarde de la base de données, la clé doit utiliser le même nom de clé du coffre de clés qu’elle avait à l’origine.
Appliquez les étapes 1 et 2 sur l’instance cible de SQL Server.
Après que l’instance SQL Server cible ait accès 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; GOPour plus d’informations sur les options de sauvegarde, consultez BACKUP (Transact-SQL).
Chiffrement au niveau de la colonne en utilisant une clé asymétrique provenant de Key Vault
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 chiffre ensuite les données dans la base de données.
Important
Vous ne pouvez pas utiliser la même clé asymétrique pour le chiffrement au niveau colonne si vous avez déjà utilisé cette clé pour le chiffrement de sauvegarde.
Cet exemple utilise la CONTOSO_KEY_COLUMNS clé asymétrique stockée dans le coffre de clés, que vous pouvez importer ou créer plus tôt, comme décrit à l’étape 2 : Créer un coffre de clés. Pour utiliser cette clé asymétrique dans la ContosoDatabase base de données, exécutez à nouveau l’instruction CREATE ASYMMETRIC KEY afin de donner à la ContosoDatabase base de données 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;