Tutorial: Mengembangkan aplikasi .NET menggunakan Always Encrypted dengan enklave aman
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru - Hanya Windows Azure SQL Database
Berlaku untuk: .NET Framework .NET Core .NET Standard
Tutorial ini mengajarkan Anda cara mengembangkan aplikasi yang mengeluarkan kueri database yang menggunakan enklave aman sisi server untuk Always Encrypted dengan enklave aman.
Prasyarat
Pastikan Anda telah menyelesaikan salah satu tutorial Memulai menggunakan Always Encrypted dengan enklave aman sebelum mengikuti langkah-langkah di bawah ini dalam tutorial ini.
Selain itu, Anda memerlukan Visual Studio (versi 2022 disarankan) - Anda dapat mengunduhnya dari https://visualstudio.microsoft.com/. Lingkungan pengembangan aplikasi Anda harus menggunakan .NET Framework 4.6.1 atau yang lebih baru atau .NET Core 3.1 atau yang lebih baru.
Langkah 1: Siapkan Proyek Visual Studio Anda
Untuk menggunakan Always Encrypted dengan enklave aman dalam aplikasi .NET Framework, Anda perlu memastikan aplikasi Anda menargetkan .NET Framework 4.6.1 atau yang lebih tinggi. Untuk menggunakan Always Encrypted dengan enklave aman dalam aplikasi .NET Core, Anda perlu memastikan aplikasi Anda menargetkan .NET Core 3.1 atau yang lebih tinggi.
Selain itu, jika Anda menyimpan kunci master kolom di Azure Key Vault, Anda juga perlu mengintegrasikan aplikasi Anda dengan Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet.
Buka Visual Studio.
Buat proyek Aplikasi Konsol C# (.NET Framework / Core) baru.
Pastikan proyek Anda menargetkan setidaknya .NET Framework 4.6 atau .NET Core 3.1. Klik kanan pada proyek di Penjelajah Solusi, pilih Properti dan atur Kerangka kerja Target.
Instal paket NuGet berikut dengan membuka Alat (menu utama)> Konsol Manajer Paket Manajer>Paket NuGet. Jalankan kode berikut di Konsol Manajer Paket.
Install-Package Microsoft.Data.SqlClient -Version 5.0.1
Jika Anda menggunakan Azure Key Vault untuk menyimpan kunci master kolom Anda, instal paket NuGet berikut dengan masuk ke Alat (menu utama)> Konsol Manajer Paket Manajer>Paket NuGet. Jalankan kode berikut di Konsol Manajer Paket.
Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0 Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Langkah 2: Menerapkan logika aplikasi Anda
Aplikasi Anda akan tersambung ke database ContosoHR yang dibuat di salah satu tutorial, lihat Prasyarat dan akan menjalankan kueri yang berisi LIKE
predikat pada kolom SSN dan perbandingan rentang pada kolom Gaji .
Ganti konten file Program.cs (dihasilkan oleh Visual Studio) dengan kode berikut.
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(); } } } }
Perbarui string koneksi database.
- Atur nama server yang valid dan pengaturan autentikasi database Anda.
- Jika Anda menggunakan pengesahan untuk database Anda, atur Protokol Pengesahan Enklave ke nilai yang benar untuk layanan pengesahan Anda (
HGS
untuk Layanan Wali Host atauAAS
untuk Microsoft Azure Attestation). Jika tidak, atur Protokol Pengesahan Enklave keNone
.
Membuat dan menjalankan aplikasi.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk