Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores no Windows
Azure SQL Database
Este tutorial ensina-te a desenvolver uma aplicação que emite consultas à base de dados que utilizam um enclave seguro do lado do servidor para Always Encrypted com enclaves seguros.
Pré-requisitos
Certifique-se de ter concluído um dos tutoriais indicados em , Introdução ao uso do Always Encrypted com enclaves seguros,, antes de seguir os passos abaixo neste tutorial.
Além disso, precisas do Visual Studio (recomenda-se a versão 2022) – podes descarregá-lo de https://visualstudio.microsoft.com/. O seu ambiente de desenvolvimento de aplicações deve usar .NET Framework 4.6.1 ou posterior, ou .NET Core 3.1 ou posterior.
Passo 1: Configurar o seu projeto Visual Studio
Para usar o Always Encrypted com enclaves seguros numa aplicação .NET Framework, é necessário garantir que a sua aplicação tem como alvo .NET Framework 4.6.1 ou superior. Para usar o Always Encrypted com enclaves seguros numa aplicação .NET Core, é necessário garantir que a sua aplicação tem como alvo .NET Core 3.1 ou superior.
Além disso, se guardar a sua chave mestra de coluna no Azure Key Vault, também precisa de integrar a sua aplicação com o Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider NuGet.
Abra o Visual Studio.
Crie um novo projeto de Aplicação de Consola C# (.NET Framework / Core).
Certifica-te de que o teu projeto tem como alvo pelo menos o .NET Framework 4.6 ou .NET Core 3.1. Clique com o botão direito no projeto no Explorador de Soluções, selecione Propriedades e defina o framework Target.
Instale o seguinte pacote NuGet indo a Ferramentas (menu principal) > Gestor de >Package Manager Console. Execute o código seguinte na Consola do Gestor de Pacotes.
Install-Package Microsoft.Data.SqlClient -Version 5.0.1Se usar o Azure Key Vault para armazenar as suas chaves mestras de coluna, instale os seguintes pacotes NuGet indo a Ferramentas (menu principal) > Gestor de >Package Manager Console. Execute o código seguinte na Consola do Gestor de Pacotes.
Install-Package Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider -Version 3.0.0 Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory
Passo 2: Implemente a lógica da sua aplicação
A sua aplicação irá ligar-se à base de dados ContosoHR criada num dos tutoriais, veja Pré-requisitos e irá executar uma consulta que contém o LIKE predicado na coluna do SSN e uma comparação de intervalos na coluna Salário .
Substitua o conteúdo do ficheiro Program.cs (gerado pelo Visual Studio) pelo seguinte código.
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(); } } } }Atualize a cadeia de conexão do banco de dados.
- Defina o nome válido do servidor e as definições de autenticação da base de dados.
- Se estiver a usar atestação para a sua base de dados, defina o Protocolo de Atestação Enclave para o valor correto para o seu serviço de atestação (
HGSpara Host Guardian Service ouAASpara Microsoft Azure Attestation). Caso contrário, defina o Protocolo de Atestação do Enclave paraNone.
Compile e execute o aplicativo.