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

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.

  1. Ouvrez le portail Azure et localisez la base de données pour laquelle vous souhaitez activer les enclaves sécurisées.

  2. Dans les paramètres de sécurité, sélectionnez Chiffrement de données.

  3. Dans le menu Chiffrement de données, sélectionnez l'onglet Always Encrypted.

  4. Définissez Activer les enclaves sécurisées sur MARCHE. Si la fonction est déjà définie sur MARCHE, passez à l'étape suivante.

    Capture d’écran de l’activation des enclaves sécurisées sur une base de données existante dans le portail Azure.

  5. 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.

  1. 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.

    1. 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.

    2. 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).

    3. Sélectionnez l’onglet Always Encrypted.

    4. Assurez-vous que la case Activer Always Encrypted (chiffrement de colonne) n’est pas cochée.

      Capture d’écran de Se connecter au serveur en utilisant SSMS sans Always Encrypted activé.

    5. Sélectionnez Connecter.

  2. 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
    
  3. 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.

  1. À 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.

  2. Provisionnez une nouvelle clé principale de colonne prenant en charge les enclaves :

    1. Cliquez avec le bouton droit sur Clés Always Encrypted et sélectionnez Nouvelle clé principale de colonne... .
    2. Entrez un nom pour la nouvelle clé principale de colonne : CMK1.
    3. 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.)
    4. 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. Capture d’écran de la sélection de Autoriser les calculs d’enclave dans SSMS lors de la création d’une clé principale de colonne.
    5. Sélectionnez OK.
  3. Créez une clé de chiffrement de colonne prenant en charge les enclaves :

    1. Cliquez avec le bouton droit sur Clés Always Encrypted et sélectionnez Nouvelle clé de chiffrement de colonne.
    2. Entrez un nom pour la nouvelle clé de chiffrement de colonne : CEK1.
    3. 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.
    4. 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.

  1. 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.

    1. Démarrez une nouvelle instance SSMS.

    2. 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.

    3. 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).

    4. Sélectionnez l’onglet Always Encrypted.

    5. Cochez la case Activer Always Encrypted (chiffrement de colonne).

    6. Sélectionnez Activer les enclaves sécurisées.

    7. Définissez Protocole sur Aucun. Consultez la capture d’écran ci-dessous.

      Capture d’écran de l’onglet Always Encrypted de la boîte de dialogue Se connecter au serveur de SSMS, avec le protocole d’attestation défini sur Aucun.

    8. Sélectionnez Connecter.

    9. Si vous êtes invité à activer les requêtes Paramétrage pour Always Encrypted, sélectionnez Activer.

  2. 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.

  3. 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.

  1. Dans l’instance SSMS avec Always Encrypted activé, vérifiez que Paramétrage pour Always Encrypted est également activé.

    1. Sélectionnez Outils dans le menu principal de SSMS.
    2. Sélectionnez Options... .
    3. Accédez à Exécution de la requête>SQL Server>Avancé.
    4. Vérifiez que la case Activer Paramétrage pour Always Encrypted est cochée.
    5. Sélectionnez OK.
  2. 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;
    
  3. 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 :

Voir aussi