Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2019 (15.x) i nowsze wersje na Windows
Azure SQL Database
W tym samouczku przedstawiono sposób tworzenia aplikacji, która wysyła zapytania do bazy danych, wykorzystując bezpieczną enklawę po stronie serwera w funkcji Always Encrypted z bezpiecznymi enklawami.
Wymagania wstępne
Upewnij się, że ukończono jeden z samouczków Wprowadzenie do korzystania z funkcji Always Encrypted z bezpiecznymi enklawami, zanim przystąpisz do wykonania poniższych kroków w tym samouczku.
Ponadto potrzebujesz programu Visual Studio (zalecana jest wersja 2022) — możesz pobrać go z witryny https://visualstudio.microsoft.com/. Środowisko deweloperskie aplikacji musi używać programu .NET Framework 4.6.1 lub nowszego lub .NET Core 3.1 lub nowszego.
Krok 1. Konfigurowanie projektu programu Visual Studio
Aby używać funkcji Always Encrypted z bezpiecznymi enklawami w aplikacji .NET Framework, upewnij się, że aplikacja jest przeznaczona dla platformy .NET Framework 4.6.1 lub nowszej. Aby używać funkcji Always Encrypted z bezpiecznymi enklawami w aplikacji .NET Core, upewnij się, że aplikacja jest przeznaczona dla platformy .NET Core 3.1 lub nowszej.
Ponadto, jeśli przechowujesz klucz główny kolumny w usłudze Azure Key Vault, musisz również zintegrować swoją aplikację z pakietem NuGet Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider.
Otwórz program Visual Studio.
Utwórz nowy projekt aplikacji konsolowej języka C# (.NET Framework/Core).
Upewnij się, że projekt jest przeznaczony dla .NET Framework 4.6 lub .NET Core 3.1. Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań, wybierz pozycję Właściwości i ustaw platformę docelową.
Zainstaluj następujący pakiet NuGet, przechodząc do pozycji Narzędzia (menu główne) >Konsola menedżera>pakietów NuGet. Uruchom następujący kod w konsoli menedżera pakietów.
Install-Package Microsoft.Data.SqlClient -Version 5.0.1Jeśli używasz usługi Azure Key Vault do przechowywania kluczy głównych kolumn, zainstaluj następujące pakiety NuGet, przechodząc do pozycji Narzędzia (menu główne) >Konsola menedżera>pakietów NuGet. Uruchom następujący kod w konsoli menedżera pakietów.
Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0 Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Krok 2. Implementowanie logiki aplikacji
Aplikacja połączy się z bazą danych ContosoHR utworzoną w jednym z samouczków, zobacz Wymagania wstępne i uruchomi zapytanie zawierające LIKE predykat w kolumnie SSN i porównanie zakresu w kolumnie Wynagrodzenie .
Zastąp zawartość pliku Program.cs (wygenerowanego przez program Visual Studio) następującym kodem.
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(); } } } }Zaktualizuj parametry połączenia bazy danych.
- Ustaw prawidłową nazwę serwera i ustawienia uwierzytelniania bazy danych.
- Jeśli używasz poświadczenia dla bazy danych, ustaw Protokół Poświadczenia Enklawy na poprawną wartość dla usługi poświadczenia (
HGSdla Host Guardian Service lubAASdla Microsoft Azure Attestation). W przeciwnym razie ustaw protokół zaświadczania enklawy naNone.
Skompiluj i uruchom aplikację.