Tutoriel : Bien démarrer dans l’utilisation d’Always Encrypted avec enclaves VBS dans Azure SQL Database
S’applique à : Azure SQL Database
Ce tutoriel explique comment démarrer avec Always Encrypted avec enclaves sécurisées dans Azure SQL Database en utilisant des enclaves VBS (Sécurité basée sur la virtualisation). Il vous montre comment :
- Créer un environnement pour tester et évaluer Always Encrypted avec enclaves VBS.
- Chiffrer des données sur place et émettre des requêtes confidentielles complexes sur des colonnes chiffrées en utilisant SQL Server Management Studio (SSMS).
Prérequis
- Un abonnement Azure actif. Si vous n’en avez pas, créez un compte gratuit. Pour pouvoir créer des ressources, vous devez être membre du rôle Contributeur ou du rôle Propriétaire pour l’abonnement.
- Facultatif, mais recommandé pour le stockage de votre clé principale de colonne pour Always Encrypted : coffre de clés dans Azure Key Vault. Pour plus d’informations sur la création d’un coffre de clés, consultez Démarrage rapide : créer un coffre de clés avec le portail Azure.
- Si votre coffre de clés utilise le modèle d’autorisations de stratégie d’accès, vérifiez que vous disposez des autorisations de clé suivantes dans le coffre de clés :
get
,list
,create
,unwrap key
,wrap key
,verify
,sign
. Consultez Attribuer une stratégie d’accès Key Vault. - Si vous utilisez le modèle d’autorisation RBAC (contrôle d’accès en fonction du rôle) Azure, assurez-vous que vous êtes membre du rôle Agent de chiffrement Key Vault pour votre coffre de clés. Consultez Donner accès aux clés, certificats et secrets du coffre de clés avec un contrôle d’accès en fonction du rôle Azure.
- Si votre coffre de clés utilise le modèle d’autorisations de stratégie d’accès, vérifiez que vous disposez des autorisations de clé suivantes dans le coffre de clés :
Exigences de l’outil
SQL Server Management Studio (SSMS) est nécessaire pour ce tutoriel. Vous pouvez choisir d’utiliser PowerShell ou Azure CLI pour activer les enclaves VBS.
Téléchargez la dernière version de SQL Server Management Studio (SSMS).
Étape 1 : Créer et configurer un serveur et une base de données
Au cours de cette étape, vous allez créer un serveur logique Azure SQL Database et une base de données.
Accédez à Démarrage rapide : Créer une base de données unique - Azure SQL Database, et suivez les instructions de la section Créer une base de données unique pour créer un serveur logique Azure SQL Database et une nouvelle base de données.
Important
Veillez à créer une base de données vide avec le nom ContosoHR (et non pas un exemple de base de données).
Étape 2 : Activer une enclave VBS
Dans cette étape, vous allez activer une enclave VBS dans la base de données, ce qui est nécessaires pour Always Encrypted avec enclaves sécurisées. Pour activer les enclaves VBS dans votre base de données, vous devez définir la propriété de base de données preferredEnclaveType sur VBS.
Ouvrez le portail Azure et localisez la base de données pour laquelle vous souhaitez activer les enclaves sécurisées.
Dans les paramètres de sécurité, sélectionnez Chiffrement de données.
Dans le menu Chiffrement de données, sélectionnez l'onglet Always Encrypted.
Définissez Activer les enclaves sécurisées sur MARCHE. Si la fonction est déjà définie sur MARCHE, passez à l'étape suivante.
Pour enregistrer votre configuration Always Encrypted, sélectionnez Enregistrer.
Étape 3 : Remplir votre base de données
Dans cette étape, vous allez créer une table et la remplir avec des données que vous chiffrerez et interrogerez ultérieurement.
Ouvrez SSMS et connectez-vous à la base de données ContosoHR sur le serveur logique Azure SQL que vous avez créé sans Always Encrypted activé dans la connexion de base de données.
Dans la boîte de dialogue Se connecter au serveur, spécifiez le nom complet de votre serveur (par exemple, myserver135.database.windows.net), puis entrez le nom d’utilisateur de l’administrateur et le mot de passe que vous avez spécifié lors de la création du serveur.
Sélectionnez Options >> et sélectionnez l’onglet Propriétés de connexion. Veillez à sélectionner la base de données ContosoHR (et non la base de données
master
par défaut).Sélectionnez l’onglet Always Encrypted.
Assurez-vous que la case Activer Always Encrypted (chiffrement de colonne) n’est pas cochée.
Sélectionnez Connecter.
Créez une nouvelle table nommée Employés.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [SSN] [char](11) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [Salary] [money] NOT NULL ) ON [PRIMARY]; GO
Ajoutez quelques enregistrements d’employés à la table Employés.
INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('795-73-9838' , N'Catherine' , N'Abel' , $31692); INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('990-00-6818' , N'Kim' , N'Abercrombie' , $55415);
Étape 4 : Approvisionner des clés prenant en charge les enclaves
Dans cette étape, vous allez créer une clé principale de colonne et une clé de chiffrement de colonne qui permettent les calculs d’enclave.
À l’aide de l’instance SSMS dans l’étape précédente, dans Explorateur d’objets, développez votre base de données et accédez à Sécurité>Clés Always Encrypted.
Provisionnez une nouvelle clé principale de colonne prenant en charge les enclaves :
- Cliquez avec le bouton droit sur Clés Always Encrypted et sélectionnez Nouvelle clé principale de colonne... .
- Entrez un nom pour la nouvelle clé principale de colonne : CMK1.
- Vérifiez que l’option Autoriser les calculs d’enclave est sélectionnée. (Cette option est sélectionnée par défaut si une enclave sécurisée est activée pour la base de données ; elle doit être activée, car votre base de données utilise la configuration matérielle de série DC.)
- Sélectionnez Azure Key Vault (recommandé) ou Magasin de certificats Windows (Utilisateur actuel ou Ordinateur local).
- Si vous sélectionnez Azure Key Vault, connectez-vous à Azure, sélectionnez un abonnement Azure contenant le coffre de clés que vous souhaitez utiliser, puis sélectionnez votre coffre de clés. Cliquez sur Générer une clé pour créer une clé.
- Si vous sélectionnez Magasin de certificats Windows, sélectionnez le bouton Générer un certificat pour créer un certificat.
- Sélectionnez OK.
Créez une clé de chiffrement de colonne prenant en charge les enclaves :
- Cliquez avec le bouton droit sur Clés Always Encrypted et sélectionnez Nouvelle clé de chiffrement de colonne.
- Entrez un nom pour la nouvelle clé de chiffrement de colonne : CEK1.
- Dans le menu déroulant Clé principale de colonne, sélectionnez la clé principale de colonne que vous avez créée aux étapes précédentes.
- Sélectionnez OK.
Étape 5 : Chiffrer des colonnes sur place
Dans cette étape, vous allez chiffrer les données stockées dans les colonnes SSN et Salaire à l’intérieur de l’enclave côté serveur, puis vous testerez une requête SELECT sur les données.
Ouvrez une nouvelle instance SSMS et connectez-vous à votre base de données avec Always Encrypted activé pour la connexion de base de données.
Démarrez une nouvelle instance SSMS.
Dans la boîte de dialogue Se connecter au serveur, spécifiez le nom complet de votre serveur (par exemple, myserver135.database.windows.net), puis entrez le nom d’utilisateur de l’administrateur et le mot de passe que vous avez spécifié lors de la création du serveur.
Sélectionnez Options >> et sélectionnez l’onglet Propriétés de connexion. Veillez à sélectionner la base de données ContosoHR (et non la base de données
master
par défaut).Sélectionnez l’onglet Always Encrypted.
Cochez la case Activer Always Encrypted (chiffrement de colonne).
Sélectionnez Activer les enclaves sécurisées.
Définissez Protocole sur Aucun. Consultez la capture d’écran ci-dessous.
Sélectionnez Connecter.
Si vous êtes invité à activer les requêtes Paramétrage pour Always Encrypted, sélectionnez Activer.
En utilisant la même instance SSMS (avec Always Encrypted activé), ouvrez une nouvelle fenêtre de requête et chiffrez les colonnes SSN et Salaire en exécutant les instructions ci-dessous.
ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Notes
L’instruction ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE efface le cache du plan de requête de la base de données dans le script ci-dessus. Une fois que vous avez modifié la table, vous devez effacer les plans pour l’ensemble des lots et des procédures stockées qui accèdent à la table, afin d’actualiser les informations de chiffrement des paramètres.
Pour vérifier que les colonnes SSN et Salaire sont maintenant chiffrées, ouvrez une nouvelle fenêtre de requête dans l’instance SSMS sans Always Encrypted activé pour la connexion de base de données et exécutez l’instruction ci-dessous. La fenêtre de requête doit retourner des valeurs chiffrées dans les colonnes SSN et Salaire. Si vous exécutez la même requête à l’aide de l’instance SSMS avec Always Encrypted activé, vous devez voir les données déchiffrées.
SELECT * FROM [HR].[Employees];
Étape 6 : Exécuter des requêtes complexes sur les colonnes chiffrées
Vous pouvez exécuter des requêtes complexes sur les colonnes chiffrées. Un traitement de requête se produit à l’intérieur de votre enclave côté serveur.
Dans l’instance SSMS avec Always Encrypted activé, vérifiez que Paramétrage pour Always Encrypted est également activé.
- Sélectionnez Outils dans le menu principal de SSMS.
- Sélectionnez Options... .
- Accédez à Exécution de la requête>SQL Server>Avancé.
- Vérifiez que la case Activer Paramétrage pour Always Encrypted est cochée.
- Sélectionnez OK.
Ouvrez une nouvelle fenêtre de requête, collez-y la requête ci-dessous et exécutez-la. La requête doit retourner des valeurs de texte en clair et des lignes correspondant aux critères de recherche spécifiés.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
Essayez à nouveau la même requête dans l’instance SSMS pour laquelle Always Encrypted n’est pas activé. Un échec doit survenir.
Étapes suivantes
À l’issue de ce tutoriel, vous pouvez accéder à l’un des tutoriels suivants :
- Tutoriel : Développer une application .NET en utilisant Always Encrypted avec enclaves sécurisées
- Tutoriel : Développer une application .NET Framework avec Always Encrypted avec enclaves sécurisées
- Tutoriel : Création et utilisation des index sur des colonnes prenant en charge les enclaves à l’aide d’un chiffrement aléatoire