Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: 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, созданной в одном из руководств, см. Prerequisites, и выполнит запрос, содержащий предикат LIKE для столбца SSN и сравнение по диапазону для столбца Salary.
Замените содержимое файла 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(); } } } }Обновите строку подключения к базе данных.
- Укажите допустимое имя сервера и параметры аутентификации базы данных.
- Если вы используете аттестацию для своей базы данных, задайте параметру «Enclave Attestation Protocol» правильное значение для используемой службы аттестации (
HGSдля Host Guardian Service или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 с безопасными анклавами