Megosztás:


Oktatóanyag: .NET-alkalmazás fejlesztése az Always Encrypted használatával biztonságos enklávékkal

A következőkre vonatkozik: SQL Server 2019 (15.x) és újabb verziók Windows Azure SQL Database-en

Ez az oktatóanyag bemutatja, hogyan fejleszthet olyan alkalmazásokat, amelyek az Always Encrypted kiszolgálóoldali biztonságos enklávéját biztonságos enklávékkal használó adatbázis-lekérdezéseket bocsátanak ki.

Előfeltételek

Mielőtt követné az alábbi lépéseket ebben az oktatóanyagban, győződjön meg arról, hogy elvégezte az Always Encrypted biztonságos enklávékkal való használatának valamelyik vagy oktatóanyagát.

Emellett szüksége van a Visual Studio-ra (a 2022-es verzió ajánlott) – innen töltheti https://visualstudio.microsoft.com/le. Az alkalmazásfejlesztési környezetnek a .NET Framework 4.6.1 vagy újabb verzióját vagy a .NET Core 3.1-et vagy újabbat kell használnia.

1. lépés: A Visual Studio Project beállítása

Ha az Always Encryptedt biztonságos enklávékkal szeretné használni egy .NET-keretrendszeralkalmazásban, győződjön meg arról, hogy az alkalmazás a .NET-keretrendszer 4.6.1-s vagy újabb verzióját célozza. Ha az Always Encryptedt biztonságos enklávékkal szeretné használni egy .NET Core-alkalmazásban, győződjön meg arról, hogy az alkalmazás a .NET Core 3.1-et vagy újabb verziót célozza.

Emellett ha az oszlop főkulcsát az Azure Key Vaultban tárolja, integrálnia kell az alkalmazást a Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet szolgáltatással is.

  1. Nyissa meg a Visual Studiót.

  2. Hozzon létre egy új C#-konzolalkalmazási (.NET-keretrendszer/ Core) projektet.

  3. Győződjön meg arról, hogy a projekt legalább .NET-keretrendszer 4.6-os vagy .NET Core 3.1-et céloz meg. Kattintson a jobb gombbal a projektre a Megoldáskezelőben, válassza a Tulajdonságok lehetőséget , és állítsa be a Cél keretrendszert.

  4. Telepítse a következő NuGet-csomagot az Eszközök (főmenü) >NuGet Package Manager>. Futtassa a következő kódot a Package Manager konzolon.

    Install-Package Microsoft.Data.SqlClient -Version 5.0.1
    
  5. Ha az Azure Key Vaultot használja az oszlop főkulcsainak tárolásához, telepítse a következő NuGet-csomagokat az Eszközök (főmenü) >NuGet Package>. Futtassa a következő kódot a Package Manager konzolon.

    Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0
    Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
    

2. lépés: Az alkalmazáslogika megvalósítása

Az alkalmazás csatlakozni fog az egyik oktatóanyagban létrehozott ContosoHR-adatbázishoz , lásd : Előfeltételek , és egy olyan lekérdezést fog futtatni, amely tartalmazza az LIKESSN oszlop predikátumát és egy tartomány-összehasonlítást a Fizetés oszlopban.

  1. Cserélje le a Program.cs fájl tartalmát (amelyet a Visual Studio hoz létre) a következő kódra.

    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. Frissítse az adatbázis kapcsolati karakterláncot.

    1. Adja meg az érvényes kiszolgálónevet és az adatbázis-hitelesítési beállításokat.
    2. Ha az adatbázishoz igazolást használ, állítsa az Enclave Attestation Protocol értékét az igazolási szolgáltatás megfelelő értékére (HGS a Host Guardian szolgáltatáshoz vagy AAS a Microsoft Azure-igazoláshoz). Ellenkező esetben az Enclave Igazolási protokollt állítsa None értékre.
  3. Hozza létre és futtassa az alkalmazást.

Lásd még