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: SQL Server 2019 (15.x) e posterior - somente Windows
Banco de Dados SQL do Azure
Este tutorial ensina como criar e usar índices em colunas com enclave habilitado usando criptografia aleatória suportada no Always Encrypted com enclaves seguros. Irá mostrar-lhe:
- Como criar um índice quando você tem acesso às chaves (a chave mestra da coluna e a chave de criptografia da coluna) que protegem a coluna.
- Como criar um índice quando você não tem acesso às chaves que protegem a coluna.
Pré-requisitos
Baixe a versão mais recente do SQL Server Management Studio (SSMS).
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.
Etapa 1: Habilitar a recuperação acelerada de banco de dados (ADR) em seu banco de dados
Observação
Esta etapa se aplica somente ao SQL Server. Se estiver a utilizar a Base de Dados SQL do Azure ou a Instância Gerida SQL do Azure, ignore este passo. O ADR está sempre habilitado no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure.
A Microsoft recomenda enfaticamente que você habilite o ADR em seu banco de dados antes de criar o primeiro índice em uma coluna habilitada para enclave usando criptografia aleatória. Consulte a secção Recuperação da Base de Dados em Sempre Criptografado com enclaves seguros.
Feche todas as instâncias do SSMS usadas no tutorial anterior. Fechar o SSMS fechará as conexões de banco de dados que você abriu, o que é necessário para habilitar o ADR.
Abra uma nova instância do SSMS e conecte-se à sua instância do SQL Server como sysadmin sem "Always Encrypted" ativado para a conexão à base de dados.
- Inicie o SSMS.
- Na caixa de diálogo Conectar ao Servidor, especifique o nome do servidor, selecione um método de autenticação e especifique suas credenciais.
- Selecione Opções >> e selecione o separador Sempre Criptografado.
- Verifique se a caixa de seleção Ativar sempre criptografado (criptografia de coluna)não está marcada.
- Selecione Conectar.
Abra uma nova janela de consulta e execute a instrução abaixo para ativar o ADR.
ALTER DATABASE ContosoHR SET ACCELERATED_DATABASE_RECOVERY = ON;
Etapa 2: Criar e testar um índice sem separação de funções
Nesta etapa, você criará e testará um índice em uma coluna criptografada. Você estará agindo como um único usuário que está assumindo as funções de um DBA, que gerencia o banco de dados, e o proprietário dos dados que tem acesso às chaves, protegendo os dados.
Abra uma nova instância do SSMS e conecte-se à sua instância do SQL Server com "Sempre Criptografado" habilitada 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 do servidor, selecione um método de autenticação e especifique suas credenciais.
- Selecione Opções >> e selecione o separador Sempre Criptografado.
- Marque as caixas de seleção Ativar Sempre Criptografado (criptografia de coluna) e Habilitar Enclaves Seguros
- Se você estiver usando o atestado para seu banco de dados, selecione um valor de do Enclave Attestation Protocol que represente seu serviço de atestado (Host Guardian Service ou Microsoft Azure Attestation) e preencha a URL de atestado do enclave. Caso contrário, selecione Nenhum.
- Selecione Conectar.
- Se for solicitado a habilitar a parametrização para consultas Always Encrypted , selecione Enable.
Se você não foi solicitado a habilitar a Parametrização para Sempre Criptografado, verifique se ela 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 janela de consulta e execute as instruções abaixo para criptografar a coluna LastName na tabela Funcionários. Você criará e usará um índice nessa coluna em etapas posteriores.
ALTER TABLE [HR].[Employees] ALTER COLUMN [LastName] [nvarchar](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL; GO ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE; GO
Crie um índice na coluna Sobrenome. Como está conectado ao banco de dados com o Always Encrypted habilitado, o driver do cliente dentro do SSMS fornece de forma transparente CEK1 (a chave de criptografia de coluna, protegendo a coluna LastName) para o enclave, que é necessário para criar o índice.
CREATE INDEX IX_LastName ON [HR].[Employees] ([LastName]) INCLUDE ([EmployeeID], [FirstName], [SSN], [Salary]); GO
Execute uma consulta avançada na coluna LastName do e verifique se o SQL Server usa o índice ao executar a consulta.
Na mesma janela ou em uma nova janela de consulta, verifique se o botão Incluir Estatísticas de Consulta ao Vivo na barra de ferramentas está ativado.
Execute a consulta abaixo.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GO
Na guia Live Query Statistics, observe se a consulta usa o índice.
Etapa 3: Criar um índice com separação de funções
Nesta etapa, você criará um índice em uma coluna criptografada, fingindo ser dois usuários diferentes. Um usuário é um DBA, que precisa criar um índice, mas não tem acesso às chaves. O outro usuário é um proprietário de dados, que tem acesso às chaves.
Usando a instância do SSMS sem Always Encrypted habilitado, execute a instrução abaixo para eliminar o índice na coluna LastName.
DROP INDEX IX_LastName ON [HR].[Employees]; GO
Agindo como um proprietário de dados (ou um aplicativo que tem acesso às chaves), preencha o cache dentro do enclave com CEK1.
Observação
A menos que você tenha reiniciado sua instância do SQL Server após Etapa 2: Criar e testar um índice sem separação de função, esta etapa é redundante, pois o CEK1 já está presente no cache. Adicionámo-lo para demonstrar como um proprietário de dados pode fornecer uma chave para o enclave, caso não estiver já presente no enclave.
Na instância do SSMS com Always Encrypted habilitado, execute as instruções abaixo em uma janela de consulta. A instrução envia todas as chaves de encriptação de coluna habilitadas para o enclave. Consulte sp_enclave_send_keys para obter detalhes.
EXEC sp_enclave_send_keys; GO
Como alternativa à execução do procedimento armazenado acima, pode executar uma consulta DML que utiliza o enclave contra a coluna LastName. Isso preencherá o enclave apenas com CEK1.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GO
Atuando como um DBA, crie o índice.
Na instância do SSMS sem Always Encrypted habilitado, execute as instruções abaixo em uma janela de consulta.
CREATE INDEX IX_LastName ON [HR].[Employees] ([LastName]) INCLUDE ([EmployeeID], [FirstName], [SSN], [Salary]); GO
Como proprietário de dados, execute uma consulta avançada na coluna LastName e verifique se o SQL Server usa o índice ao executar a consulta.
Na instância do SSMS com Always Encrypted habilitado, selecione uma janela de consulta existente ou abra uma nova janela de consulta e verifique se o botão Include Live Query Statistics na barra de ferramentas está ativado.
Execute a consulta abaixo.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GO
Nas Estatísticas do Live Query, observe que a consulta usa o índice.
Próximos passos
- Tutorial: Desenvolver um aplicativo .NET usando Always Encrypted com enclaves seguros
- Tutorial: Desenvolver um aplicativo .NET Framework usando Always Encrypted com enclaves seguros