Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: SQL Server 2019 (15.x) и более поздним версиям на Windows
База данных Azure SQL
В этом руководстве содержатся сведения о разработке приложения, которое выполняет запросы к базе данных, использующие безопасный анклав на стороне сервера для 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.
Откройте Visual Studio.
Создайте проект консольного приложения C# (.NET Framework или Core).
Убедитесь, что проект предназначен по крайней мере платформа .NET Framework 4.6 или .NET Core 3.1. Щелкните правой кнопкой мыши проект в Обозревателе решений, выберите Свойства и укажите целевую платформу.
Установите следующий пакет NuGet. Щелкните Инструменты (главное меню) >Диспетчер пакетов NuGet>Консоль диспетчера пакетов. Выполните следующий код в консоли диспетчера пакетов.
Install-Package Microsoft.Data.SqlClient -Version 5.0.1Если вы используете 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 , и сравнение диапазона по столбцу "Зарплата ".
Замените содержимое файла 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(); } } } }Обновите строку подключения к базе данных.
- Укажите допустимое имя сервера и параметры аутентификации базы данных.
- Если вы используете аттестацию для базы данных, задайте протокол аттестации Анклава правильным значением для службы аттестации (
HGSдля службы защиты узлов илиAASдля Microsoft Аттестация Azure). В противном случае задайте дляNoneпротокола аттестации анклава значение .
Выполните сборку приложения и запустите его.
См. также
- Использование Always Encrypted с поставщиком данных Microsoft .NET для SQL Server
- Example demonstrating use of Azure Key Vault provider with Always Encrypted (Пример использования поставщика Azure Key Vault с поддержкой Always Encrypted)
- Пример использования поставщика Azure Key Vault с поддержкой Always Encrypted с безопасными анклавами