Tutoriel : bien démarrer avec Always Encrypted
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Ce tutoriel vous apprend à bien démarrer avec Always Encrypted. Il vous montre comment :
- Comment chiffrer les colonnes sélectionnées dans votre base de données.
- Comment interroger des colonnes chiffrées.
Remarque
Si vous cherchez des informations sur Always Encrypted avec les enclaves sécurisées, consultez plutôt les tutoriels suivants :
Prérequis
Pour ce didacticiel, vous avez besoin des éléments suivants :
- Une base de données vide dans la base de données Azure SQL, Azure SQL Managed Instance ou SQL Server. Les instructions ci-dessous supposent que le nom de la base de données est ContosoHR. Vous devez être propriétaire de la base de données (membre du rôle db_owner ). Pour plus d’informations sur la création d’une base de données, consultez Démarrage rapide : Créer une base de données unique – base de données Azure SQL ou Créer une base de données dans SQL Server.
- Facultatif, mais recommandé, en particulier si votre base de données se trouve dans Azure : un 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 :
- La dernière version de SQL Server Management Studio (SSMS) ou encore celle des modules SqlServer et Az PowerShell. Le module Az PowerShell est obligatoire uniquement si vous utilisez Azure Key Vault.
Étape 1 : créer et remplir le schéma de la base de données
Dans cette étape, vous allez créer le schéma RH et la table Employees. Ensuite, vous remplirez la table en y ajoutant des données.
Connectez-vous à votre base de données. Pour obtenir des instructions sur la façon de se connecter à une base de données à partir de SSMS, consultez Démarrage rapide : Se connecter et interroger une base de données Azure SQL ou Azure SQL Managed Instance à l’aide de SQL Server Management Studio (SSMS) ou démarrage rapide : Se connecter et interroger une instance SQL Server à l’aide de SQL Server Management Studio (SSMS).
Ouvrez une nouvelle fenêtre Requête pour la base de données ContosoHR.
Collez et exécutez les instructions ci-dessous pour créer une table nommée Employees.
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];
Collez et exécutez les instructions ci-dessous pour ajouter quelques enregistrements employés à la table Employees.
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 2 : chiffrer les colonnes
Dans cette étape, vous fournirez une clé principale de colonne et une clé de chiffrement de colonne pour Always Encrypted. Ensuite, vous chiffrerez les colonnes SSN et Salary dans la table Employees.
SSMS propose un assistant qui vous aide à configurer facilement Always Encrypted en définissant une clé principale de colonne, une clé de chiffrement de colonne, et en chiffrant les colonnes sélectionnées.
Dans l’Explorateur d’objets, développez Bases de données>ContosoHR>Tables.
Faites un clic droit sur la table Employees et sélectionnez Chiffrer les colonnes pour ouvrir l’assistant Always Encrypted.
Sélectionnez Suivant sur la page d’introduction de l’Assistant.
Sur la page de sélection des colonnes.
- Sélectionnez les colonnes SSN et Salary. Choisissez le chiffrement déterministe pour la colonne SSN et le chiffrement aléatoire pour la colonne Salary. Le chiffrement déterministe prend en charge les requêtes, telles que les recherches de points qui impliquent des comparaisons d’égalité sur des colonnes chiffrées. Le chiffrement aléatoire ne prend pas en charge les calculs sur les colonnes chiffrées.
- Conservez CEK-Auto1 (Nouveau) comme clé de chiffrement de colonne pour les colonnes SSN et Salary. Cette clé n’existe pas encore et sera générée par l’Assistant.
- Cliquez sur Suivant.
Dans la page Configuration de la clé principale, configurez une nouvelle clé principale de colonne qui sera générée par l’Assistant. Tout d’abord, vous devez sélectionner l’emplacement où vous souhaitez stocker votre clé principale de colonne. L’Assistant prend en charge deux types de magasins de clés :
- Azure Key Vault : recommandé si votre base de données se trouve dans Azure
- Magasin de certificats Windows
En général, Azure Key Vault est l’option recommandée, surtout si votre base de données se trouve dans Azure.
Pour utiliser Azure Key Vault :
- Sélectionnez Azure Key Vault.
- Sélectionnez Se connecter et poursuivez la connexion à Azure.
- Une fois connecté, la page affiche la liste des abonnements et des coffres de clés auxquels vous avez accès. Sélectionnez un abonnement Azure contenant le coffre de clés que vous souhaitez utiliser.
- Sélectionnez votre coffre de clés.
- Cliquez sur Suivant.
Pour utiliser le magasin de certificats de Windows :
Sélectionnez le magasin de certificats de Windows.
Conservez la sélection par défaut de l’utilisateur actuel : cette option indique à l’assistant de générer un certificat (votre nouvelle clé principale de colonne) dans le magasin de l’utilisateur actuel.
Cliquez sur Suivant.
Sur la page Paramètres de chiffrement local, aucune configuration supplémentaire n’est requise, car la base de données n’a pas d’enclave activée. Cliquez sur Suivant.
Sur la page Paramètres d’exécution, il vous est demandé si vous souhaitez procéder au chiffrement ou générer un script PowerShell qui sera exécuté ultérieurement. Conservez les paramètres par défaut et sélectionnez Suivant.
Dans la page Résumé, l’Assistant vous informe des actions qu’il exécutera. Vérifiez que toutes les informations sont correctes et sélectionnez Terminer.
Dans la page Résultats, vous pouvez surveiller la progression des opérations de l’Assistant. Patientez jusqu’à ce que toutes les opérations soient terminées, puis sélectionnez Fermer.
(Facultatif) Explorez les modifications apportées à l’Assistant dans votre base de données.
Développez ContosoHR>Security>Always Encrypted Keys pour explorer les objets de métadonnées pour la clé principale de colonne et le chiffrement de colonne que l’Assistant a créés.
Vous pouvez également exécuter les requêtes ci-dessous sur les affichages catalogue du système qui contiennent des métadonnées clés.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_values
Dans l’Explorateur d’objets, faites un clic droit sur la table Employees et sélectionnez Table de script comme>CREATE To>Nouvelle éditeur de requête Window. Une nouvelle fenêtre Requête s’ouvre alors avec l’instruction CREATE TABLE pour la table Employees. Notez la clause ENCRYPTED WITH qui apparaît dans les définitions des colonnes SSN et Salary.
Vous pouvez également exécuter la requête suivante sur sys.columns pour récupérer les métadonnées de chiffrement au niveau de la colonne pour les deux colonnes chiffrées.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Étape 3 : interroger des colonnes chiffrées
Connectez-vous à votre base de données en désactivant la fonction Always Encrypted pour votre connexion.
- Ouvrez une fenêtre de nouvelle requête.
- Faites un clic droit sur n’importe quel point de la fenêtre Requête et sélectionnez Connexion>Changer la connexion. La boîte de dialogue Se connecter au moteur de base de données s’ouvre.
- Cliquez sur Options<<. Cette option affiche des onglets supplémentaires dans la boîte de dialogue Se connecter au Moteur de base de données.
- Sélectionnez l’onglet Always Encrypted.
- Assurez-vous que l’option Activer Always Encrypted (chiffrement de la colonne) n’est pas sélectionnée.
- Sélectionnez Connecter.
Collez et exécutez la requête suivante. La requête doit retourner des données chiffrées binaires.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Connectez-vous à votre base de données en activant la fonction Always Encrypted pour votre connexion.
- Faites un clic droit sur n’importe quel point de la fenêtre Requête et sélectionnez Connexion>Changer la connexion. La boîte de dialogue Se connecter au moteur de base de données s’ouvre.
- Cliquez sur Options<<. Cette option affiche des onglets supplémentaires dans la boîte de dialogue Se connecter au Moteur de base de données.
- Sélectionnez l’onglet Always Encrypted.
- Sélectionnez Activer Always Encrypted (chiffrement de colonne).
- Sélectionnez Connecter.
Exécutez à nouveau la même requête. Étant donné que la connexion aux bases de données est activée sur Always Encrypted, le gestionnaire client de SSMS tentera de déchiffrer les données stockées dans les deux colonnes chiffrées. Si vous utilisez Azure Key Vault, vous pouvez être invité à vous connecter à Azure.
Activez le paramétrage pour Always Encrypted. Cette fonctionnalité vous permet d’exécuter des requêtes qui filtrent les données par colonnes chiffrées (ou insèrent des données dans des colonnes chiffrées).
- Sélectionnez Requête dans le menu principal de SSMS.
- Sélectionnez Options de requête….
- Accédez à Exécution>Avancé.
- Assurez-vous que l’option Activer le paramétrage pour Always Encrypted est cochée.
- Cliquez sur OK.
Collez et exécutez la requête ci-dessous, qui filtre les données par la colonne SSN chiffrée. La requête doit retourner une ligne contenant des valeurs de texte en clair.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSN
Par ailleurs, si vous utilisez Azure Key Vault configuré selon le modèle de autorisations de la stratégie d’accès, suivez les étapes ci-dessous pour voir ce qui se passe lorsqu’un utilisateur tente de récupérer des données de texte en clair à partir de colonnes chiffrées sans avoir accès à la clé principale de la colonne protégeant les données.
- Supprimez l’autorisation de la clé
unwrap
pour vous-même dans la stratégie d’accès à votre coffre de clés. Pour plus d’informations, consultez Attribuer une stratégie d’accès Key Vault. - Étant donné que le gestionnaire client dans SSMS met en cache les clés de chiffrement de colonne acquises à partir d’un coffre de clés pendant 2 heures, fermez SSMS et ouvrez-la à nouveau. Cette option garantit que le cache de clés est vide.
- Connectez-vous à votre base de données en activant la fonction Always Encrypted pour votre connexion.
- Collez et exécutez la requête suivante. La requête devrait échouer et afficher un message d’erreur indiquant qu’il manque l’autorisation
unwrap
requise.
SELECT [SSN], [Salary] FROM [HR].[Employees]
- Supprimez l’autorisation de la clé
Étapes suivantes
Voir aussi
- Documentation Always Encrypted
- Always Encrypted avec une documentation sur les enclaves sécurisées
- Provisionner des clés Always Encrypted à l’aide de SQL Server Management Studio
- Configurer Always Encrypted à l’aide de PowerShell
- Assistant Chiffrement intégral
- Interroger des colonnes en utilisant Always Encrypted avec SQL Server Management Studio