Share via


Tutoriel : Bien démarrer dans l’utilisation d’Always Encrypted avec enclaves Intel SGX 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. Vous allez utiliser des enclaves Intel Software Guard Extensions (Intel SGX). Il vous montre comment :

  • Comment créer un environnement pour tester et évaluer Always Encrypted avec des enclaves Intel SGX.
  • 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

Configuration requise pour PowerShell

Notes

La configuration requise indiquée dans cette section s’applique uniquement si vous choisissez d’utiliser PowerShell pour certaines des étapes de ce tutoriel. Si vous prévoyez d’utiliser à la place le portail Azure, vous pouvez ignorer cette section.

Le module Azure Az PowerShell version 9.3.0 ou ultérieure est nécessaire. Pour plus d’informations sur l’installation du module PowerShell Az, consultez Installer le module PowerShell Azure Az. Pour déterminer la version du module Az PowerShell installée sur votre ordinateur, exécutez la commande suivante depuis PowerShell.

Get-InstalledModule -Name Az

Étape 1 : Créer et configurer un serveur et une base de données de série DC

Au cours de cette étape, vous allez créer un serveur logique Azure SQL Database et une base de données avec matériel de série DC qui sont nécessaires pour Always Encrypted avec enclaves sécurisées. Pour plus d’informations, consultez Série DC.

  1. Accédez à la page Sélectionner l’option de déploiement SQL.

  2. Si vous n’êtes pas déjà connecté au portail Azure, connectez-vous quand vous y êtes invité.

  3. Sous Bases de données SQL, laissez Type de ressource défini sur Base de données unique, puis sélectionnez Créer.

    Screenshot of Azure portal, showing the Add to Azure SQL deployment option.

  4. Sous l’onglet De base du formulaire Créer une base de données SQL, sous Détails du projet, sélectionnez l’Abonnement Azure souhaité.

  5. Pour Groupe de ressources, sélectionnez Créer, entrez un nom pour votre groupe de ressources, puis sélectionnez OK.

  6. Pour Nom de la base de données, entrez ContosoHR.

  7. Pour Serveur, sélectionnez Créer, puis remplissez le formulaire Nouveau serveur avec les valeurs suivantes :

    • Nom du serveur : entrez mysqlserver et ajoutez quelques caractères pour l’unicité. Nous ne pouvons pas fournir un nom de serveur exact à utiliser, car les noms de serveur doivent être globalement uniques pour tous les serveurs dans Azure, et non pas seulement dans un abonnement. Entrez un nom comme mysqlserver135, le portail vous indique s’il est disponible ou non.
    • Emplacement : sélectionnez un emplacement dans la liste déroulante.

      Important

      Vous devez sélectionner un emplacement (une région Azure) qui prend en charge à la fois le matériel de série DC et Microsoft Azure Attestation. Pour obtenir la liste des régions prenant en charge la série DC, consultez Disponibilité de la série DC. Voici la disponibilité régionale de Microsoft Azure Attestation.

    • Méthode d’authentification : sélectionnez Utiliser l’authentification SQL
    • Nom de connexion d’administrateur serveur : entrez le nom de connexion de l’administrateur, par exemple : azureuser.
    • Mot de passe : entrez un mot de passe qui répond aux exigences, puis réentrez-le dans le champ Confirmer le mot de passe.
    • Sélectionnez OK.
  8. Laissez Vous souhaitez utiliser un pool élastique SQL ? avec la valeur Non.

  9. Sous Calcul + stockage, sélectionnez Configurer la base de données et sélectionnez Changer la configuration.

    Screenshot of Azure portal hardware configuration, and where to configure database.

  10. Sélectionnez la configuration matérielle Série DC, puis choisissez OK.

    Screenshot of Azure portal, showing Configure DC-series database.

  11. Sélectionnez Appliquer.

  12. De retour dans l’onglet Informations de base , vérifiez que Calcul + stockage est défini sur Usage général, DC, 2 vCores, 32 Go de stockage.

  13. Pour Redondance du stockage de sauvegarde, sélectionnez Stockage de sauvegarde redondant localement.

  14. Sélectionnez Suivant : Réseau en bas de la page.

    Screenshot of Azure portal, showing Configure DC-series database - basics.

  15. Sous l’onglet Réseau, pour Méthode de connectivité, sélectionnez Point de terminaison public.

  16. Pour Règles de pare-feu, affectez la valeur Oui à Ajouter l’adresse IP actuelle du client. Laissez Autoriser les services et les ressources Azure à accéder à ce serveur avec la valeur Non.

  17. Pour Stratégie de connexion, laissez Stratégie de connexion défini sur Par défaut : utilise la stratégie de redirection pour toutes les connexions client provenant de l’intérieur d’Azure et le proxy pour toutes les connexions client provenant de l’extérieur d’Azure

  18. Pour Connexions chiffrées, laissez Version TLS minimale défini sur TLS 1.2.

  19. Au bas de la page, sélectionnez Examiner et créer.

    Screenshot of the Azure portal Create SQL Database, networking tab.

  20. Dans la page Vérifier + créer, après vérification, sélectionnez Créer.

Étape 2 : Configurer un fournisseur d’attestation

Dans cette étape, vous allez créer et configurer un fournisseur d’attestation dans Microsoft Azure Attestation. Ceci est nécessaire pour attester l’enclave sécurisée que votre base de données utilise.

  1. Accédez à la page Créer un fournisseur d’attestation.

  2. Dans la page Créer un fournisseur d’attestation, fournissez les entrées suivantes :

    • Abonnement : choisissez le même abonnement que celui dans lequel vous avez créé le serveur logique Azure SQL.
    • Groupe de ressources : choisissez le groupe de ressources dans lequel vous avez créé le serveur logique Azure SQL.
    • Nom : entrez myattestprovider et ajoutez quelques caractères pour l’unicité. Nous ne pouvons pas fournir un nom de fournisseur d’attestation exact, car les noms doivent être globalement uniques. Entrez un nom comme myattestprovider12345, le portail vous indique s’il est disponible ou non.
    • Emplacement : choisissez le même emplacement que pour votre serveur logique Azure SQL.
    • Fichier des certificats de signataire de stratégie : laissez ce champ vide, car vous allez configurer une stratégie non signée.
  3. Une fois que vous avez fourni les entrées nécessaires, sélectionnez Vérifier + créer.

    Screenshot of the Azure portal Create attestation provider menu.

  4. Sélectionnez Create (Créer).

  5. Une fois le fournisseur d’attestation créé, sélectionnez Accéder à la ressource.

  6. Dans l’onglet Vue d’ensemble du fournisseur d’attestation, copiez la valeur de la propriété URI d’attestation dans le Presse-papiers, puis enregistrez-la dans un fichier. Il s’agit de l’URL d’attestation dont vous aurez besoin ultérieurement.

    Screenshot of the attestation URL in the Azure portal.

  7. Sélectionnez Stratégie dans le menu de la ressource sur le côté gauche de la fenêtre ou dans le volet inférieur.

  8. Définissez Type d’attestation sur SGX-IntelSDK.

  9. Sélectionnez Configurer dans le menu supérieur.

    Screenshot of configuring attestation policy in the Azure portal.

  10. Définissez Format de stratégie sur Texte. Laissez le paramètre Options de la stratégie défini sur Entrer la stratégie.

  11. Dans le champ Texte de la stratégie, remplacez la stratégie par défaut par la stratégie ci-dessous. Pour obtenir des informations sur la stratégie ci-dessous, consultez Créer et configurer un fournisseur d’attestation.

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

  1. Sélectionnez Enregistrer.

    Screenshot of editing an attestation policy in the Azure portal.

  2. Sélectionnez Actualiser dans le menu supérieur pour afficher la stratégie configurée.

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

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Sélectionnez Se 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 la 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. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    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. (Cette étape s’applique à SSMS 19 ou version ultérieure.)

    7. Définissez Protocole sur Microsoft Azure Attestation. (Cette étape s’applique à SSMS 19 ou version ultérieure.)

    8. Spécifiez votre URL d’attestation d’enclave que vous avez obtenue en suivant les étapes décrites dans Étape 2 : Configurer un fournisseur d’attestation. Consultez la capture d’écran ci-dessous.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation enabled.

    9. Sélectionnez Se connecter.

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

    Notez l’instruction ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE destinée à effacer 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