Tutorial: Mengembangkan aplikasi .NET menggunakan Always Encrypted dengan enklave aman

Berlaku untuk:yes Dimulai dengan SQL Server 2019 (15.x) - Windows hanya YesAzure 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.

Catatan

Always Encrypted dengan enklave aman hanya didukung pada Windows.

Prasyarat

Pastikan Anda telah menyelesaikan salah satu tutorial di bawah ini sebelum mengikuti langkah-langkah di bawah ini dalam tutorial ini:

Selain itu, Anda memerlukan Visual Studio (versi 2019 direkomendasikan) - Anda dapat mengunduhnya dari https://visualstudio.microsoft.com/. Lingkungan pengembangan aplikasi Anda harus menggunakan .NET Framework 4.6 atau yang lebih baru atau .NET Core 2.1 atau yang lebih baru.

Langkah 1: Siapkan Visual Studio Project Anda

Untuk menggunakan Always Encrypted dengan enklave aman dalam aplikasi .NET Framework, Anda perlu memastikan aplikasi Anda menargetkan .NET Framework 4.6 atau lebih tinggi. Untuk menggunakan Always Encrypted dengan enklave aman dalam aplikasi .NET Core, Anda perlu memastikan aplikasi Anda menargetkan .NET Core 2.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 2.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 PaketManajer> Paket NuGet. Jalankan kode berikut di Konsol Manajer Paket.

    Install-Package Microsoft.Data.SqlClient -Version 1.1.0
    
  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 1.0.0
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    

Langkah 2: Menerapkan logika aplikasi Anda

Aplikasi Anda akan terhubung ke database ContosoHR dari Tutorial: Mulai menggunakan Always Encrypted dengan enklave aman menggunakan SQL Server Management Directory atau - Tutorial: Memulai Always Encrypted dengan enklave aman di Azure SQL Database dan akan menjalankan kueri yang berisi LIKE predikat pada SSN kolom 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
                //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";
    
                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. Atur nilai Attestation Protocol kata kunci ke:
      • HGS- jika Anda menggunakan SQL Server dan Host Guardian Service (HGS).
      • AAS- jika Anda menggunakan pengesahan Azure SQL Database dan Microsoft Azure.
    3. Atur Enclave Attestation URL ke URL pengesahan untuk lingkungan Anda.
  3. Bangun dan jalankan aplikasi.

Lihat juga