Sdílet prostřednictvím


Kurz: Vývoj aplikace .NET pomocí funkce Always Encrypted se zabezpečenými enklávy

platí pro: SQL Server 2019 (15.x) a novější – Pouze Windows Azure SQL Database

V tomto kurzu se naučíte vyvíjet aplikaci, která vydává databázové dotazy, které používají zabezpečené enklávy na straně serveru pro Always Encrypted se zabezpečenými enklávami.

Požadavky

Než budete postupovat podle následujících kroků v tomto kurzu, ujistěte se, že jste dokončili jeden z začínáte používat funkci Always Encrypted se zabezpečenými enklávami kurzů.

Kromě toho potřebujete Sadu Visual Studio (doporučuje se verze 2022) – můžete si ji stáhnout z https://visualstudio.microsoft.com/. Vaše vývojové prostředí aplikace musí používat rozhraní .NET Framework 4.6.1 nebo novější nebo .NET Core 3.1 nebo novější.

Krok 1: Nastavení projektu sady Visual Studio

Pokud chcete používat funkci Always Encrypted se zabezpečenými enklávy v aplikaci .NET Framework, musíte zajistit, aby vaše aplikace cílila na rozhraní .NET Framework 4.6.1 nebo vyšší. Pokud chcete používat funkci Always Encrypted se zabezpečenými enklávy v aplikaci .NET Core, musíte zajistit, aby vaše aplikace cílila na .NET Core 3.1 nebo vyšší.

Pokud navíc ukládáte hlavní klíč sloupce ve službě Azure Key Vault, musíte také integrovat aplikaci s NuGetem Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.

  1. Otevřete Visual Studio.

  2. Vytvořte nový projekt konzolové aplikace C# (.NET Framework / Core).

  3. Ujistěte se, že váš projekt cílí alespoň na rozhraní .NET Framework 4.6 nebo .NET Core 3.1. Klikněte pravým tlačítkem myši na projekt v Průzkumníku řešení, vyberte Vlastnosti a nastavte cílovou architekturu.

  4. Nainstalujte následující balíček NuGet tak, že přejdete dokonzoly Správce>balíčků NuGet> (hlavní nabídka). V konzole Správce balíčků spusťte následující kód.

    Install-Package Microsoft.Data.SqlClient -Version 5.0.1
    
  5. Pokud k ukládání hlavních klíčů sloupců používáte Azure Key Vault, nainstalujte následující balíčky NuGet, a to tak, že přejdete do Nástroje (hlavní nabídka) >Správce balíčků NuGet>Konzole správce balíčků. V konzole Správce balíčků spusťte následující kód.

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

Krok 2: Implementace logiky aplikace

Vaše aplikace se připojí k databázi ContosoHR , která byla vytvořena v jednom z kurzů, viz Požadavky a spustí dotaz obsahující LIKE predikát ve sloupci SSN a porovnání rozsahu ve sloupci Plat .

  1. Obsah souboru Program.cs (vygenerovaného sadou Visual Studio) nahraďte následujícím kódem.

    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. Aktualizujte připojovací řetězec databáze.

    1. Nastavte platný název serveru a nastavení ověřování databáze.
    2. Pokud pro vaši databázi používáte ověření identity, nastavte protokol Enclave Attestation na správnou hodnotu pro vaši službu ověření identity (HGS pro službu Strážce hostitele nebo AAS pro ověření identity Microsoft Azure). V opačném případě nastavte enklávový protokol atestace na None.
  3. Sestavte a spusťte aplikaci.

Viz také