Tutorial: Introdução ao Always Encrypted
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Este tutorial ensina como começar a usar o Always Encrypted. Ela mostrará a você:
- Como criptografar colunas selecionadas em seu banco de dados.
- Como consultar colunas criptografadas.
Observação
Se você estiver procurando informações sobre o Always Encrypted com enclaves seguros, confira os seguintes tutoriais:
Pré-requisitos
Para este tutorial, é necessário:
- Um banco de dados vazio no Banco de Dados SQL do Azure, na Instância Gerenciada de SQL do Azure ou no SQL Server. As instruções abaixo pressupõem que o nome do banco de dados é ContosoHR. Você precisa ser um proprietário do banco de dados (um membro da função db_owner). Para obter informações sobre como criar um banco de dados, confira Guia de início rápido: criar um banco de dados individual – Banco de dados SQL do Azure ou Criar um banco de dados no SQL Server.
- Opcional, mas recomendado, especialmente se seu banco de dados estiver no Azure: um cofre de chaves no Azure Key Vault. Para saber mais sobre como criar um cofre de chaves, confira Início Rápido: criar um cofre de chaves usando o portal do Azure.
- Se o cofre de chaves usa o modelo de permissões de política de acesso, verifique se você tem as seguintes permissões de chave no cofre:
get
,list
,create
,unwrap key
,wrap key
,verify
,sign
. Confira Atribuir uma política de acesso ao Key Vault. - Se usar o modelo de permissão de RBAC (controle de acesso baseado em função) do Azure, verifique se você é membro da função Diretor de Criptografia do Key Vault no cofre de chaves. Confira 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 usa o modelo de permissões de política de acesso, verifique se você tem as seguintes permissões de chave no cofre:
- A última versão do SQL Server Management Studio (SSMS) ou a versão mais recente dos módulos SqlServer e Az do PowerShell. O módulo Az PowerShell será necessário apenas se você estiver usando o Azure Key Vault.
Etapa 1: Criar e preencher o esquema de banco de dados
Nesta etapa, você vai criar o esquema de RH e a tabela Funcionários. Então, preencherá a tabela com alguns dados.
Conecte-se ao banco de dados. Para obter instruções sobre como se conectar a um banco de dados do SSMS, confira Guia de início rápido: conectar e consultar um Banco de Dados SQL do Azure ou uma Instância Gerenciada de SQL do Azure usando o SQL Server Management Studio (SSMS) ou Guia de início rápido: conectar e consultar uma instância do SQL Server usando o SQL Server Management Studio (SSMS).
Abra uma nova janela de consulta para o banco de dados ContosoHR.
Cole e execute as instruções abaixo para criar uma 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];
Cole e execute as instruções abaixo para adicionar 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 2: criptografar colunas
Nesta etapa, você provisionará uma chave mestra de coluna e uma chave de criptografia de coluna para Always Encrypted. Em seguida, você vai criptografar as colunas SSN e Salário na tabela Funcionários.
O SSMS fornece um assistente que ajuda você a configurar facilmente o Always Encrypted ao configurar a chave mestra da coluna e a chave de criptografia de coluna e criptografar colunas selecionadas.
No Pesquisador de Objetos, expanda Bancos de Dados>ContosoHR>Tabelas.
Clique com o botão direito do mouse na tabela Funcionários e selecione Criptografar Colunas para abrir o Assistente Always Encrypted.
Selecione Avançar na página Introdução do assistente.
Na página Seleção de coluna.
- Selecione as colunas SSN e Salário. Escolha criptografia determinística para a coluna SSN e criptografia aleatória para a coluna Salário. A criptografia determinística oferece suporte a consultas, como pesquisas de busca de ponto que envolvem comparações de igualdade em colunas criptografadas. A criptografia aleatória não dá suporte a cálculos em colunas criptografadas.
- Deixe CEK-Auto1 (Novo) como a chave de criptografia de coluna para as duas colunas. Essa chave ainda não existe e o assistente vai gerá-la.
- Selecione Avançar.
Na página Configuração da Chave Mestra, configure uma nova chave mestra de coluna que será gerada pelo assistente. Primeiro, você precisa selecionar onde deseja armazenar a chave mestra de coluna. O assistente dá suporte a dois tipos de repositório de chaves:
- Azure Key Vault – recomendado se o banco de dados está no Azure
- Repositório de certificados do Windows
Em geral, o Azure Key Vault é a opção recomendada, especialmente se o banco de dados está no Azure.
Para usar o Azure Key Vault:
- Selecione Cofre de Chaves do Azure.
- Selecione Entrar e conclua a entrada no Azure.
- Depois de entrar, a página exibirá a lista de assinaturas e cofres de chaves aos quais você tem acesso. Selecione a assinatura do Azure que contém o cofre de chaves que você quer usar.
- Selecione seu cofre de chaves.
- Selecione Avançar.
Para usar o repositório de certificados do Windows:
Selecione Repositório de certificados do Windows.
Deixe a seleção padrão de Usuário Atual ~ isso instruirá o assistente a gerar um certificado (sua nova chave mestra de coluna) no repositório Usuário Atual.
Selecione Avançar.
Na página Configurações de Criptografia no Local, nenhuma configuração adicional é necessária porque o banco de dados não tem um enclave habilitado. Selecione Avançar.
Na página Configurações de Execução, você será perguntado se deseja continuar com a criptografia ou gerar um script do PowerShell para ser executado depois. Deixe as configurações padrão e selecione Avançar.
Na página Resumo, o assistente informa sobre as ações que ele vai executar. Verifique se todas as informações estão corretas e selecione Concluir.
Na página Resultados, você pode monitorar o progresso das operações do assistente. Aguarde até todas as operações serem concluídas com êxito e selecione Fechar.
(Opcional) Explore as alterações feitas pelo assistente ao banco de dados.
Expanda ContosoHR>Segurança>Chaves Always Encrypted para explorar os objetos de metadados para a chave mestra de coluna e a criptografia de coluna que o assistente criou.
Também é possível executar as consultas abaixo nas exibições do catálogo do sistema que contêm metadados importantes.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_values
No Pesquisador de Objetos, clique com o botão direito do mouse na tabela Funcionários e selecione Tabela de Scripts como>CRIAR para>Nova Janela do Editor de Consultas. Isso abrirá uma nova janela de consulta com a instrução CREATE TABLE para a tabela Employees. Observe a cláusula ENCRYPTED WITH que aparece nas definições das colunas SSN e Salário.
Você também pode executar a consulta abaixo em sys.columns para recuperar metadados de criptografia em nível de coluna para as duas colunas criptografadas.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Etapa 3: Consultar colunas criptografadas
Conecte-se ao banco de dados com o Always Encrypted desabilitado para sua conexão.
- Abra uma nova janela de consulta.
- Clique com o botão direito do mouse em qualquer lugar na janela de consulta e selecione Conexão>Alterar conexão. Isso abrirá a caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
- Selecione Opções<<. Isso mostrará guias adicionais na caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
- Selecione a guia Always Encrypted.
- A opção Habilitar o Always Encrypted (criptografia de coluna) não deve estar selecionada.
- Selecione Conectar.
Cole e execute a consulta a seguir. A consulta deve retornar dados criptografados binários.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Conectar-se ao banco de dados com o Always Encrypted habilitado para a conexão.
- Clique com o botão direito do mouse em qualquer lugar na janela de consulta e selecione Conexão>Alterar conexão. Isso abrirá a caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
- Selecione Opções<<. Isso mostrará guias adicionais na caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
- Selecione a guia Always Encrypted.
- Selecione Habilitar Always Encrypted (criptografia de coluna).
- Selecione Conectar.
Execute a mesma consulta novamente. Como você está conectado ao Always Encrypted habilitado para sua conexão de banco de dados, o driver cliente no SSMS tentará descriptografar os dados armazenados em ambas as colunas criptografadas. Se você usar o Azure Key Vault, poderá ser solicitado que você entre no Azure.
Habilitar Parametrização de Always Encrypted. Esse recurso permite que você execute consultas que filtram dados por colunas criptografadas (ou inserir dados em colunas criptografadas).
- Selecione Consultar no menu principal do SSMS.
- Selecione Opções de Consulta....
- Navegue para Execução>Avançado.
- Marque a opção Habilitar parametrização para Always Encrypted.
- Selecione OK.
Cole e execute a consulta abaixo, que filtra os dados pela coluna SSN criptografada. A consulta deve retornar uma linha contendo valores de texto não criptografado.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSN
Opcionalmente, se você estiver usando o Azure Key Vault configurado com o modelo de permissões de política de acesso, siga as etapas abaixo para ver o que acontece quando um usuário tenta recuperar dados de texto não criptografado de colunas criptografadas sem ter acesso à chave mestra de coluna que protege os dados.
- Remova a permissão de chave
unwrap
para si mesmo na política de acesso do seu cofre de chaves. Para obter mais informações, confira Atribuir uma política de acesso do Key Vault. - Como o driver do cliente no SSMS armazena em cache as chaves de criptografia de coluna adquiridas de um cofre de chaves por duas horas, feche o SSMS e abra-o novamente. Isso vai garantir que o cache de chaves esteja vazio.
- Conectar-se ao banco de dados com o Always Encrypted habilitado para a conexão.
- Cole e execute a consulta a seguir. A consulta deve falhar com a mensagem de erro indicando que você não tem a permissão
unwrap
necessária.
SELECT [SSN], [Salary] FROM [HR].[Employees]
- Remova a permissão de chave
Próximas etapas
Confira também
- Documentação do Always Encrypted
- Documentação do Always Encrypted com enclaves seguros
- Provisionar chaves Always Encrypted usando o SQL Server Management Studio
- Configurar Always Encrypted usando o PowerShell
- Assistente do Always Encrypted
- Consultar colunas usando o Always Encrypted com o SQL Server Management Studio