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 Not supported. .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.

  1. Buka Visual Studio.

  2. Buat proyek Aplikasi Konsol C# (.NET Framework / Core) baru.

  3. 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.

  4. 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
    
  5. 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 .

  1. 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();
                }
            }
        }
    }
    
  2. Perbarui string koneksi database.

    1. Atur nama server yang valid dan pengaturan autentikasi database Anda.
    2. Jika Anda menggunakan pengesahan untuk database Anda, atur Protokol Pengesahan Enklave ke nilai yang benar untuk layanan pengesahan Anda (HGS untuk Layanan Wali Host atau AAS untuk Microsoft Azure Attestation). Jika tidak, atur Protokol Pengesahan Enklave ke None.
  3. Membuat dan menjalankan aplikasi.

Baca juga