Руководство по разработке приложения .NET с помощью Always Encrypted с безопасными анклавами

Область применения: SQL Server 2019 (15.x) и более поздних версий — Только windows База данных SQL Azure

Область применения: .NET Framework .NET Core Not supported. .NET Standard

В этом руководстве содержатся сведения о разработке приложения, которое выполняет запросы к базе данных, использующие безопасный анклав на стороне сервера для Always Encrypted с защищенными анклавами.

Необходимые компоненты

Убедитесь, что вы выполнили одно из руководств по началу работы с Always Encrypted с безопасными анклавами , прежде чем выполнить приведенные ниже действия, описанные в этом руководстве.

Кроме того, требуется Visual Studio (версия 2022 рекомендуется) — его можно скачать.https://visualstudio.microsoft.com/ Среда разработки приложений должна использовать платформа .NET Framework 4.6.1 или более поздней версии или .NET Core 3.1 или более поздней версии.

Шаг 1. Настройка проекта Visual Studio

Чтобы использовать Always Encrypted с безопасными анклавами в приложении платформа .NET Framework, необходимо убедиться, что приложение предназначено для платформа .NET Framework 4.6.1 или более поздней версии. Чтобы использовать Always Encrypted с безопасными анклавами в приложении .NET Core, необходимо убедиться, что приложение предназначено для .NET Core 3.1 или более поздней версии.

Кроме того, если вы храните главный ключ столбца в Azure Key Vault, необходимо также интегрировать приложение с Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet.

  1. Откройте Visual Studio.

  2. Создайте проект консольного приложения C# (.NET Framework или Core).

  3. Убедитесь, что проект предназначен по крайней мере платформа .NET Framework 4.6 или .NET Core 3.1. Щелкните правой кнопкой мыши проект в Обозревателе решений, выберите Свойства и укажите целевую платформу.

  4. Установите следующий пакет NuGet. Щелкните Инструменты (главное меню) >Диспетчер пакетов NuGet>Консоль диспетчера пакетов. Выполните следующий код в консоли диспетчера пакетов.

    Install-Package Microsoft.Data.SqlClient -Version 5.0.1
    
  5. Если вы используете Azure Key Vault для хранения главных ключей столбцов, установите следующие пакеты NuGet, щелкнув Инструменты (главное меню) >Диспетчер пакетов NuGet>Консоль диспетчера пакетов. Выполните следующий код в консоли диспетчера пакетов.

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

Шаг 2. Реализация логики приложения

Приложение будет подключаться к базе данных ContosoHR , созданной в одном из учебников, см . предварительные требования и будет выполнять запрос, содержащий LIKE предикат в столбце SSN , и сравнение диапазона по столбцу "Зарплата ".

  1. Замените содержимое файла Program.cs (созданного в Visual Studio) на приведенный ниже код.

    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. Обновите строку подключения к базе данных.

    1. Укажите допустимое имя сервера и параметры аутентификации базы данных.
    2. Если вы используете аттестацию для базы данных, задайте протокол аттестации Анклава правильным значением для службы аттестации (HGSдля службы защиты узлов или AAS для Microsoft Аттестация Azure). В противном случае задайте для Noneпротокола аттестации анклава значение .
  3. Выполните сборку приложения и запустите его.

См. также