Share via


Zelfstudie: Een .NET-toepassing ontwikkelen met Always Encrypted met beveiligde enclaves

Van toepassing op: SQL Server 2019 (15.x) en latere versies in Windows Azure SQL Database

In deze zelfstudie leert u hoe u een toepassing ontwikkelt waarmee databasequery's worden uitgevoerd die gebruikmaken van een beveiligde enclave aan de serverzijde voor Always Encrypted met beveiligde enclaves.

Vereiste voorwaarden

Zorg ervoor dat u een van de zelfstudies Aan de slag met Always Encrypted met beveiligde enclaves hebt voltooid voordat u de onderstaande stappen in deze zelfstudie volgt.

Bovendien hebt u Visual Studio (versie 2022 wordt aanbevolen) - u kunt het downloaden van https://visualstudio.microsoft.com/. Uw ontwikkelomgeving voor toepassingen moet .NET Framework 4.6.1 of hoger of .NET Core 3.1 of hoger gebruiken.

Stap 1: Uw Visual Studio-project instellen

Als u Always Encrypted wilt gebruiken met beveiligde enclaves in een .NET Framework-toepassing, moet u ervoor zorgen dat uw toepassing is gericht op .NET Framework 4.6.1 of hoger. Als u Always Encrypted wilt gebruiken met beveiligde enclaves in een .NET Core-toepassing, moet u ervoor zorgen dat uw toepassing is gericht op .NET Core 3.1 of hoger.

Als u uw kolomhoofdsleutel opslaat in Azure Key Vault, moet u uw toepassing ook integreren met Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet.

  1. Open Visual Studio.

  2. Maak een nieuw C#-console-appproject (.NET Framework/Core).

  3. Zorg ervoor dat je project ten minste is gericht op .NET Framework 4.6 of .NET Core 3.1. Klik met de rechtermuisknop op het project in Solution Explorer, selecteer Eigenschappen en stel het doelframework in.

  4. Installeer het volgende NuGet-pakket door in het hoofdmenu naar >NuGet Package Manager>Package Manager-console te gaan. Voer de volgende code uit in de Package Manager-console.

    Install-Package Microsoft.Data.SqlClient -Version 5.0.1
    
  5. Als u Azure Key Vault gebruikt voor het opslaan van uw kolomhoofdsleutels, installeert u de volgende NuGet-pakketten door naar Tools (hoofdmenu) >NuGet Package Manager>Package Manager Console te gaan. Voer de volgende code uit in de Package Manager-console.

    Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    

Stap 2: Uw toepassingslogica implementeren

Uw toepassing maakt verbinding met de ContosoHR-database die is gemaakt in een van de zelfstudies , zie Vereisten en voert een query uit die het LIKE predicaat bevat in de kolom SSN en een bereikvergelijking in de kolom Salaris .

  1. Vervang de inhoud van het Program.cs-bestand (gegenereerd door Visual Studio) door de volgende code.

    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();
                }
            }
        }
    }
    
  2. Werk de database verbindingsreeks bij.

    1. Stel de geldige servernaam en de instellingen voor databaseverificatie in.
    2. Als u attestation voor uw database gebruikt, stelt u Enclave Attestation Protocol in op de juiste waarde voor uw Attestation-service (HGS voor Host Guardian-service of AAS voor Microsoft Azure Attestation). Anders stelt u Enclave Attestation Protocol in op None.
  3. Bouw en voer de toepassing uit.

Zie ook