Tutorial: Introdução ao uso Always Encrypted com enclaves Intel SGX no Banco de Dados SQL do Azure
Aplica-se a: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 in-loco e emitir consultas confidenciais avançadas em colunas criptografadas usando o SQL Server Management Studio (SSMS).
Pré-requisitos
- Uma subscrição ativa do Azure. Se não tiver uma subscrição, crie uma conta gratuita. Você precisa ser membro da função de Colaborador ou da função de Proprietário para que a assinatura possa criar recursos e configurar uma política de atestado.
- Opcional, mas recomendado para armazenar sua chave mestra de coluna para Always Encrypted: um cofre de chaves no Cofre de Chaves do Azure. 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
, , , ,wrap key
list
, ,sign
create
unwrap key
verify
. Para obter mais informações, consulte Atribuir uma política de acesso ao Cofre da Chave. - Se estiver a utilizar o modelo de permissão de controlo de acesso baseado em função (RBAC) do Azure, certifique-se de que é membro da função Key Vault Crypto Officer para o seu cofre de chaves. Consulte Fornecer acesso a chaves, certificados e segredos do Cofre de Chaves 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:
- Está instalada a versão mais recente do SQL Server Management Studio (SSMS).
Requisitos do PowerShell
Nota
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 Série DC.
Navegue até a página de opção Selecionar 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.
Em Grupo de recursos, selecione Criar novo, insira um nome para o grupo de recursos e selecione OK.
Em Nome do banco de dados, insira ContosoHR.
Em Servidor, selecione Criar novo e preencha o formulário Novo servidor com os seguintes valores:
- Nome do servidor: Digite mysqlserver e 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.
- Local: 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 Disponibilidade da série DC. Aqui está a disponibilidade regional do Atestado do Microsoft Azure.
- Método de autenticação: Selecione Usar autenticação SQL
- Login de administrador do servidor: insira um nome de login de administrador, por exemplo: azureuser.
- Senha: insira uma senha que atenda aos requisitos e digite-a novamente no campo Confirmar senha .
- Selecione OK.
Deixe Deseja usar o pool elástico SQL definido como Não.
Em Computação + armazenamento, selecione Configurar banco de dados e selecione Alterar configuração.
Selecione a configuração de hardware da série DC e, em seguida, selecione OK.
Selecione Aplicar.
De volta à guia Noções básicas, verifique se Computação + armazenamento está definido como Uso geral, DC, 2 vCores, 32 GB de armazenamento.
Para Redundância de armazenamento de backup, selecione Armazenamento de backup com redundância local.
Selecione Next: Networking na parte inferior da página.
Na guia Rede, para Método de conectividade, selecione Ponto de extremidade público.
Para regras de firewall, defina Adicionar endereço IP do cliente atual como Sim. Deixe Permitir que os serviços e recursos do Azure acessem este servidor definido como Não.
Para Política de conexão, deixe Política de conexão como Padrão - Usa a política de redirecionamento para todas as conexões de cliente originadas dentro do Azure e Proxy para todas as conexões de cliente originadas fora do Azure
Para conexões criptografadas, deixe a versão mínima do TLS para TLS 1.2.
Selecione Rever + criar na parte inferior da página.
Na página Rever + criar, depois de rever, selecione 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é a página Criar provedor de atestado.
Na página Criar provedor de atestado, forneça as seguintes entradas:
- Assinatura: escolha a mesma assinatura na qual você 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: insira myattestprovider e 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 entradas necessárias, selecione Revisar + criar.
Selecione Criar.
Depois que o provedor de atestado for criado, selecione Ir para 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 em um arquivo. Este é o URL de atestado, que você precisará em etapas posteriores.
Selecione Política no menu de recursos no lado esquerdo da janela ou no painel inferior.
Defina o tipo de atestado como SGX-IntelSDK.
Selecione Configurar no menu superior.
Defina Formato da Política como Texto. Deixe as opções de Política definidas como Inserir política.
No campo de texto Política, substitua a política padrão pela política abaixo. Para obter informações sobre a política abaixo, consulte Criar e configurar um provedor 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 menu superior para visualizar a política 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 você criou sem Always Encrypted habilitado na conexão de banco 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 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 a guia Sempre criptografado .
Verifique se a caixa de seleção Ativar Sempre Criptografado (criptografia de coluna) não está marcada.
Selecione Ligar.
Crie uma nova tabela, chamada Funcionários.
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 à tabela Funcionários .
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, no Pesquisador de Objetos, expanda seu banco de dados e navegue até Chaves Sempre Criptografadas de Segurança>.
Provisione uma nova chave mestra de coluna habilitada para enclave:
- Clique com o botão direito do mouse em Sempre Chaves Criptografadas e selecione Nova Chave Mestra de Coluna....
- Insira um nome para a nova chave mestra da 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 Azure Key Vault (recomendado) ou Windows Certificate Store (Usuário Atual ou 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 você selecionar 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 habilitada para enclave:
- Clique com o botão direito do mouse em Sempre Chaves Criptografadas e selecione Nova Chave de Criptografia 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 criada nas etapas anteriores.
- Selecione OK.
Etapa 5: criptografar algumas colunas no local
Nesta etapa, você criptografará os dados armazenados nas colunas SSN e Salário dentro do enclave do lado do servidor e, em seguida, testará uma consulta SELECT nos dados.
Abra uma nova instância do SSMS e conecte-se ao banco de dados com o Always Encrypted habilitado para a conexão do 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, myserver135.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 a guia Sempre criptografado .
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 Protocolo como Atestado do Microsoft Azure. (Esta etapa se aplica ao SSMS 19 ou posterior.)
Especifique a URL de atestado de enclave obtida seguindo as etapas em Etapa 2: configurar um provedor de atestado. Veja a captura de tela abaixo.
Selecione Ligar.
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 colunas SSN e Salary executando as instruções abaixo.
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;
Nota
Observe 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 e Salário agora estão criptografadas, abra uma nova janela de consulta na instância do SSMS sem Always Encrypted habilitado para a conexão de banco de dados e execute a instrução abaixo. A janela de consulta deve retornar valores criptografados nas colunas SSN e Salário . 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>Advanced.
- Verifique se a opção Ativar parametrização para sempre criptografado está marcada.
- Selecione OK.
Abra uma nova janela de consulta, cole na consulta abaixo 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.
Próximos passos
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: Criando e usando índices em colunas habilitadas para enclave usando criptografia aleatória