Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à : SQL Server 2019 (15.x) et versions ultérieures sur Windows
Azure SQL Database
Ce tutoriel vous apprend à développer une application qui émet des requêtes de base de données utilisant une enclave sécurisée côté serveur pour Always Encrypted avec enclaves sécurisées.
Prérequis
Vérifiez que vous avez effectué un des tutoriels Bien démarrer dans l’utilisation d’Always Encrypted avec enclaves sécurisées avant de suivre les étapes ci-dessous de ce tutoriel.
En outre, vous avez besoin de Visual Studio (la version 2022 est recommandée), que vous pouvez télécharger depuis https://visualstudio.microsoft.com/. Votre environnement de développement d’applications doit utiliser .NET Framework 4.6.1 ou ultérieur, ou .NET Core 3.1 ou ultérieur.
Étape 1 : Configurez votre projet Visual Studio
Pour utiliser Always Encrypted avec des enclaves sécurisées dans une application .NET Framework, vous devez vérifier que votre application cible .NET Framework 4.6.1 ou ultérieur. Pour utiliser Always Encrypted avec des enclaves sécurisées dans une application .NET Core, vous devez vérifier que votre application cible .NET Core 3.1 ou ultérieur.
En outre, si vous stockez votre clé principale de colonne dans Azure Key Vault, vous devez également intégrer votre application à Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet.
Ouvrez Visual Studio.
Créez un nouveau projet (.NET Framework / Core) d’application console C#.
Vérifiez que votre projet cible au moins .NET Framework 4.6 ou .NET Core 3.1. Cliquez avec le bouton de droite sur le projet dans l’Explorateur de solutions, sélectionnez Propriétés et définissez la version cible de .Net Framework.
Installez le package NuGet suivant en accédant à Outils (menu principal) >Gestionnaire de Package NuGet>Console du gestionnaire de package. Exécutez le code suivant dans la Console du gestionnaire de Package.
Install-Package Microsoft.Data.SqlClient -Version 5.0.1Si vous utilisez Azure Key Vault pour stocker vos clés principales de colonne, installez les packages NuGet suivants en accédant à Outils (menu principal) >Gestionnaire de package NuGet>Console de gestionnaire de package. Exécutez le code suivant dans la Console du gestionnaire de Package.
Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0 Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Étape 2 : Implémentez votre logique d’application
Votre application va se connecter à la base de données ContosoHR qui a été créée dans un des tutoriels (consultez les Prérequis), et elle va exécuter une requête qui contient le prédicat LIKE sur la colonne SSN et une comparaison de plage sur la colonne Salary.
Remplacez le contenu du fichier Program.cs (généré par Visual Studio) par le code ci-dessous.
using System; using Microsoft.Data.SqlClient; using System.Data; namespace ConsoleApp1 { class Program { static void Main(string[] args) { // Connection string for SQL Server string connectionString = "Data Source = myserver; Initial Catalog = ContosoHR; Column Encryption Setting = Enabled;Attestation Protocol = HGS; Enclave Attestation Url = http://hgs.bastion.local/Attestation; Integrated Security = true"; // Connection string for Azure SQL Database with Intel SGX enclaves //string connectionString = "Data Source = myserver.database.windows.net; Initial Catalog = ContosoHR; Column Encryption Setting = Enabled;Attestation Protocol = AAS; Enclave Attestation Url = https://myattestationprovider.uks.attest.azure.net/attest/SgxEnclave; User ID=user; Password=<password>"; // Connection string for Azure SQL Database with VBS enclaves //string connectionString = "Data Source = myserver.database.windows.net; Initial Catalog = ContosoHR; Column Encryption Setting = Enabled;Attestation Protocol = None; User ID=user; Password=<password>"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand cmd = connection.CreateCommand(); cmd.CommandText = @"SELECT [SSN], [FirstName], [LastName], [Salary] FROM [HR].[Employees] WHERE [SSN] LIKE @SSNPattern AND [Salary] > @MinSalary;"; SqlParameter paramSSNPattern = cmd.CreateParameter(); paramSSNPattern.ParameterName = @"@SSNPattern"; paramSSNPattern.DbType = DbType.AnsiStringFixedLength; paramSSNPattern.Direction = ParameterDirection.Input; paramSSNPattern.Value = "%9838"; paramSSNPattern.Size = 11; cmd.Parameters.Add(paramSSNPattern); SqlParameter MinSalary = cmd.CreateParameter(); MinSalary.ParameterName = @"@MinSalary"; MinSalary.DbType = DbType.Currency; MinSalary.Direction = ParameterDirection.Input; MinSalary.Value = 20000; cmd.Parameters.Add(MinSalary); cmd.ExecuteNonQuery(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader[0] + ", " + reader[1] + ", " + reader[2] + ", " + reader[3]); } Console.ReadKey(); } } } }Mise à jour de la chaîne de connexion de base de données.
- Définissez le nom du serveur valide et les paramètres d’authentification de votre base de données.
- Si vous utilisez l’attestation pour votre base de données, définissez Protocole d’attestation d’enclave sur la valeur correcte pour votre service d’attestation (
HGSpour Service Guardian hôte ouAASpour Microsoft Azure Attestation). Sinon, définissez Protocole d’attestation d’enclave surNone.
Générez et exécutez l’application.
Voir aussi
- Utilisation d’Always Encrypted avec le Fournisseur de données Microsoft .NET pour SQL Server
- Exemple illustrant l’utilisation du fournisseur Azure Key Vault avec Always Encrypted
- Exemple illustrant l’utilisation du fournisseur Azure Key Vault avec Always Encrypted activé avec des enclaves sécurisées