Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: do Banco de Dados SQL do Azure
Este tutorial ensina como começar a usar o Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure. Você usará enclaves Intel Software Guard Extensions (Intel SGX). Irá mostrar-lhe:
- Como criar um ambiente para testar e avaliar o Always Encrypted com enclaves Intel SGX.
- Como criptografar dados no próprio local e realizar consultas avançadas e confidenciais em colunas criptografadas usando o SQL Server Management Studio (SSMS).
Pré-requisitos
- Uma assinatura ativa do Azure. Se não tiver uma subscrição, crie uma conta gratuita. Para poder criar recursos e configurar uma política de atestado, é necessário ser membro da função de Colaborador ou da função de Proprietário da assinatura.
- Opcional, mas recomendado para armazenar a sua chave mestra de coluna para o Always Encrypted: um cofre de chaves no Azure Key Vault. Para obter informações sobre como criar um cofre de chaves, consulte Guia de início rápido: criar um cofre de chaves usando o portal do Azure.
- Se o cofre de chaves usar o modelo de permissões de política de acesso, verifique se você tem as seguintes permissões de chave no cofre de chaves:
get
,list
,create
,unwrap key
,wrap key
,verify
,sign
. Para obter mais informações, consulte Atribuir uma política de acesso ao Key Vault. - Se estiver a utilizar o modelo de permissões RBAC (controlo de acesso baseado em funções) do Azure, certifique-se de que é membro da função Key Vault Crypto Officer para o seu cofre de chaves. Veja Fornecer acesso a chaves, certificados e segredos do Key Vault com um controle de acesso baseado em função do Azure.
- Se o cofre de chaves usar o modelo de permissões de política de acesso, verifique se você tem as seguintes permissões de chave no cofre de chaves:
- A versão mais recente do SQL Server Management Studio (SSMS).
Requisitos do PowerShell
Observação
Os pré-requisitos listados nesta seção se aplicam somente se você optar por usar o PowerShell para algumas das etapas deste tutorial. Se você planeja usar o portal do Azure, pode ignorar esta seção.
É necessário o módulo Az PowerShell versão 9.3.0 ou posterior. Para obter detalhes sobre como instalar o módulo Az PowerShell, consulte Instalar o módulo Azure Az PowerShell. Para determinar a versão do módulo Az PowerShell instalada em sua máquina, execute o seguinte comando do PowerShell.
Get-InstalledModule -Name Az
Etapa 1: Criar e configurar um servidor e um banco de dados da série DC
Nesta etapa, você criará um novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados usando hardware da série DC, necessário para Always Encrypted com enclaves seguros. Para obter mais informações, consulte a série DC .
Navegue até a página Selecionar opção de implantação SQL.
Se você ainda não estiver conectado ao portal do Azure, entre quando solicitado.
Em bancos de dados SQL, deixe Tipo de recurso definido como banco de dados único e selecione Criar.
Na guia Noções básicas do formulário Criar Banco de Dados SQL, em Detalhes do projeto , selecione a Assinatura do Azure desejada.
Para o grupo de recursos , selecione Criar novo, introduza um nome para o seu grupo de recursos e selecione OK.
Para Nome do banco de dados insira ContosoHR.
Para Servidor, selecione Criar novoe preencha o formulário Novo servidor com os seguintes valores:
- Nome do servidor: Digite mysqlservere adicione alguns caracteres para exclusividade. Não podemos fornecer um nome de servidor exato para usar porque os nomes de servidor devem ser globalmente exclusivos para todos os servidores no Azure, não apenas exclusivos dentro de uma assinatura. Então digite algo como mysqlserver135, e o portal permite que você saiba se está disponível ou não.
-
Localização: Selecione um local na lista suspensa.
Importante
Você precisa selecionar um local (uma região do Azure) que ofereça suporte ao hardware da série DC e ao Atestado do Microsoft Azure. Para obter a lista de regiões que suportam a série DC, consulte a disponibilidade da série DC. Aqui está a disponibilidade regional do Atestado Microsoft Azure.
- Método de autenticação: Selecionar Utilizar a Autenticação SQL
- Início de sessão de administrador do servidor: Introduza um nome de início de sessão de administrador, por exemplo: azureuser.
- Palavra-passe: Introduza uma palavra-passe que cumpra os requisitos e introduza-a novamente no campo Confirmar palavra-passe.
- Selecione OK.
Deixe Deseja usar o pool elástico SQL definido como Sem.
Em Computação + armazenamento, selecione Configurar base de dadose depois selecione Alterar configuração.
Selecione a configuração de hardware da série DC e, em seguida, selecione OK.
Selecione Aplicar.
De volta ao separador Noções básicas, verifique se Computação + armazenamento está definido para Finalidade Geral, DC, 2 vCores, 32 GB de armazenamento.
Para redundância de armazenamento de backup selecione armazenamento de backup localmente redundante.
Selecione Next: Networking na parte inferior da página.
Na aba Rede, para o método de conectividade, selecione o Público ponto de extremidade.
Para regras de Firewall, configure Adicionar endereço IP do cliente atual para Sim. Deixe Permitir que os serviços e recursos do Azure acessem este servidor definido como Não.
Para a política de conexão, deixe a política de conexão para Padrão - Usa a política de Redirecionamento para todas as conexões de cliente originadas internamente ao Azure e Proxy para todas as conexões de cliente originadas externamente ao Azure
Para conexões criptografadas, deixe versão mínima TLS para TLS 1.2.
Selecione Rever + criar na parte inferior da página.
Na página Rever + criar, após a revisão, selecione a opção Criar.
Etapa 2: Configurar um provedor de atestado
Nesta etapa, você criará e configurará um provedor de atestado no Atestado do Microsoft Azure. Isso é necessário para atestar o enclave seguro que seu banco de dados usa.
Navegue até à página Criar provedor de atestação.
Na página Criar provedor de atestação, forneça as seguintes entradas:
- Subscrição: escolha a mesma subscrição em que criou o servidor lógico SQL do Azure.
- Grupo de Recursos: Escolha o mesmo grupo de recursos no qual você criou o servidor lógico SQL do Azure.
- Nome: Digite myattestprovidere adicione alguns caracteres para exclusividade. Não podemos fornecer um nome exato do provedor de atestado para usar porque os nomes devem ser globalmente exclusivos. Então, digite algo como myattestprovider12345, e o portal informa se ele está disponível ou não.
- Local: Escolha o mesmo local que seu servidor lógico SQL do Azure.
- arquivo de certificados do signatário da política: deixe este campo vazio, pois você configurará uma política não assinada.
Depois de fornecer as informações necessárias, selecione Revisão + criar.
Selecione Criar.
Depois que o provedor de atestado for criado, selecione Ir para o recurso.
Na guia Visão Geral do provedor de atestado, copie o valor da propriedade Attest URI para a área de transferência e salve o valor em um arquivo. Este é o URL de atestado, que você precisará em etapas posteriores.
Selecione Política no lado esquerdo da janela no menu de recursos ou no painel inferior.
Defina Tipo de Atestado como SGX-IntelSDK.
Selecione Configurar no menu superior.
Defina Formato de Política para Texto. Deixe opções Política definidas como Inserir política.
No campo de texto Política , substitua a política padrão pela política a seguir. Para obter mais informações, veja Criar e configurar um fornecedor de atestado.
version= 1.0; authorizationrules { [ type=="x-ms-sgx-is-debuggable", value==false ] && [ type=="x-ms-sgx-product-id", value==4639 ] && [ type=="x-ms-sgx-svn", value>= 2 ] && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] => permit(); };
Selecione Guardar.
Selecione Atualizar no topo do menu para visualizar a política já configurada.
Etapa 3: preencher seu banco de dados
Nesta etapa, você criará uma tabela e a preencherá com alguns dados que posteriormente criptografará e consultará.
Abra o SSMS e conecte-se ao banco de dados ContosoHR no servidor lógico SQL do Azure que criou sem ativar Always Encrypted na conexão à base de dados.
Na caixa de diálogo Conectar ao Servidor, especifique o nome totalmente qualificado do seu servidor (por exemplo, myserver135.database.windows.net) e insira o nome de usuário do administrador e a senha que você especificou quando criou o servidor.
Selecione Opções >> e selecione a guia Propriedades da Conexão. Certifique-se de selecionar o banco de dados ContosoHR (não o banco de dados padrão
master
).Selecione o separador Sempre Encriptado.
Verifique se a caixa de seleção Ativar sempre criptografado (criptografia de coluna)não está marcada.
Selecione Conectar.
Crie uma nova tabela, chamada
Employees
.CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL, [SSN] [char](11) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [Salary] [money] NOT NULL ) ON [PRIMARY]; GO
Adicione alguns registros de funcionários à
Employees
tabela.INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('795-73-9838' , N'Catherine' , N'Abel' , $31692); INSERT INTO [HR].[Employees] ([SSN] ,[FirstName] ,[LastName] ,[Salary]) VALUES ('990-00-6818' , N'Kim' , N'Abercrombie' , $55415);
Etapa 4: Provisionar chaves habilitadas para enclave
Nesta etapa, você criará uma chave mestra de coluna e uma chave de criptografia de coluna que permitem cálculos de enclave.
Usando a instância do SSMS da etapa anterior, em Explorador de Objetos, expanda a sua base de dados e navegue até Segurança>Chaves Sempre Criptografadas.
Configure uma nova chave mestra de coluna com suporte para enclave.
- Clique com o botão direito do mouse Chaves Sempre Criptografadas e selecione Nova Chave Mestra de Coluna....
- Insira um nome para a nova chave mestra de coluna:
CMK1
. - Verifique se a opção Permitir cálculos de enclave está selecionada. (É selecionado por padrão se um enclave seguro estiver habilitado para o banco de dados. Ele deve ser habilitado, pois seu banco de dados usa a configuração de hardware da série DC.)
- Selecione do Cofre da Chave do Azure (recomendado) ou do Repositório de Certificados do Windows ( de Usuário Atual ou de Máquina Local ).
- Se selecionar Azure Key Vault, inicie sessão no Azure, selecione uma subscrição do Azure que contenha um cofre de chaves que pretende utilizar e selecione o seu cofre de chaves. Selecione Gerar chave para criar uma nova chave.
- Se selecionar o Repositório de Certificados do Windows, selecione o botão Gerar Certificado para criar um novo certificado.
- Selecione OK.
Crie uma nova chave de criptografia de coluna com suporte para enclave
- Clique com o botão direito do rato em Chaves Sempre Encriptadas e selecione Nova Chave de Encriptação de Coluna .
- Insira um nome para a nova chave de criptografia de coluna:
CEK1
. - Na lista suspensa Chave mestra de coluna, selecione a chave mestra de coluna que criou nas etapas anteriores.
- Selecione OK.
Etapa 5: criptografar algumas colunas no local
Nesta etapa, você criptografará os dados armazenados nas SSN
colunas e dentro do enclave Salary
do lado do servidor e, em seguida, testará uma consulta SELECT nos dados.
Abra uma nova instância do SSMS e conecte-se à sua de banco de dados com Always Encrypted habilitado para a conexão de banco de dados.
Inicie uma nova instância do SSMS.
Na caixa de diálogo Conectar ao Servidor , especifique o nome totalmente qualificado do seu servidor (por exemplo,
<server name>.database.windows.net
) e digite o nome de usuário do administrador e a senha que você especificou quando criou o servidor.Selecione Opções >> e selecione a guia Propriedades da Conexão. Certifique-se de selecionar o banco de dados ContosoHR (não o banco de dados padrão
master
).Selecione o separador Sempre Encriptado.
Marque a caixa de seleção Ativar Sempre Criptografado (criptografia de coluna).
Selecione Ativar enclaves seguros. (Esta etapa se aplica ao SSMS 19 ou posterior.)
Defina Protocol como Microsoft Azure Attestation. (Esta etapa se aplica ao SSMS 19 ou posterior.)
Especifique a URL de atestado de enclave que você obteve seguindo as etapas em Etapa 2: Configurar um provedor de atestado.
Selecione Conectar.
Se lhe for pedido para ativar a Parametrização para consultas Sempre Encriptadas, selecione Ativar.
Usando a mesma instância do SSMS (com Always Encrypted habilitado), abra uma nova janela de consulta e criptografe as
SSN
colunas eSalary
executando as seguintes instruções T-SQL:ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Observação
Note a instrução
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
para limpar o cache do plano de consulta para o banco de dados no script acima. Depois de alterar a tabela, você precisa limpar os planos para todos os lotes e procedimentos armazenados que acessam a tabela para atualizar as informações de criptografia de parâmetros.Para verificar se as colunas
SSN
eSalary
estão agora criptografadas, abra uma nova janela de consulta na instância do SSMS sem o Always Encrypted ativado para a conexão à base de dados e execute a seguinte instrução. A janela de consulta deve retornar valores criptografados nasSSN
colunas eSalary
. Se você executar a mesma consulta usando a instância do SSMS com Always Encrypted habilitado, verá os dados descriptografados.SELECT * FROM [HR].[Employees];
Etapa 6: Executar consultas avançadas em colunas criptografadas
Você pode executar consultas avançadas nas colunas criptografadas. Algum processamento de consulta será realizado dentro do seu enclave do lado do servidor.
Na instância do SSMS com Always Encrypted habilitado, verifique se a Parametrização para Always Encrypted também está habilitada.
- Selecione Ferramentas no menu principal do SSMS.
- Selecione Opções....
- Navegue até Execução de Consulta>SQL Server>Avançado.
- Certifique-se de que a opção Habilitar Parametrização para Always Encrypted está marcada.
- Selecione OK.
Abra uma nova janela de consulta, cole na consulta a seguir e execute. A consulta deve retornar valores de texto sem formatação e linhas que atendam aos critérios de pesquisa especificados.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
Tente a mesma consulta novamente na instância do SSMS que não tem Always Encrypted habilitado. Deve ocorrer uma falha.
Tutoriais
Depois de concluir este tutorial, você pode ir para um dos seguintes tutoriais:
- Tutorial: Desenvolver um aplicativo .NET usando Always Encrypted com enclaves seguros
- Tutorial: Desenvolver um aplicativo .NET Framework usando Always Encrypted com enclaves seguros
- Tutorial: Criar e utilizar índices em colunas ativadas por enclave com criptografia aleatorizada