Compartilhar via


Configurar a Criptografia de Coluna Usando o Assistente Always Encrypted no SSMS

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

O Assistente do Always Encrypted é uma ferramenta avançada que permite a você definir a configuração desejada do Always Encrypted para as colunas selecionadas do banco de dados. Dependendo da configuração atual e da configuração de destino desejada, o assistente pode criptografar uma coluna, descriptografá-la ou recriptografá-la (por exemplo, usando uma nova chave de criptografia de coluna ou um tipo de criptografia diferente do tipo atual, configurado para a coluna). É possível configurar várias colunas em uma única execução do assistente.

O assistente permite criptografar colunas com chaves de criptografia existentes, gerar uma nova chave de criptografia de coluna ou uma nova chave de criptografia de coluna e uma nova chave mestra de coluna.

A avaliação do assistente permite avaliar as tabelas em um banco de dados selecionado ou escolher tabelas específicas para analisar. Ele identifica colunas adequadas para criptografia e destaca aquelas incompatíveis com o Always Encrypted devido ao tipo de dados, restrições e outros fatores. O assistente fornece uma lista detalhada de restrições para cada campo, explicando por que colunas específicas não podem ser criptografadas.

Quando seu banco de dados é configurado com um enclave seguro, você pode executar operações criptográficas no local sem mover dados para fora do banco de dados. O assistente remove todas as dependências que bloqueiam a alteração de esquema da coluna a ser criptografada. Ele emite uma criptografia in-loco para cada coluna usando o enclave dentro do mecanismo de banco de dados. Quando a criptografia é concluída, o assistente recria as dependências. Para obter mais informações sobre o Always Encrypted com enclaves seguros, confira o artigo Always Encrypted com enclaves seguros.

Quando o banco de dados não está configurado com um enclave seguro, o assistente permite que você habilite um enclave seguro. Suponha que você opte por não habilitar um enclave seguro ou não esteja usando chaves habilitadas para enclave. Nesse caso, o assistente move os dados para fora do banco de dados e executa operações criptográficas dentro do processo do SSMS. O assistente cria uma nova tabela (ou tabelas) com a configuração de criptografia desejada no banco de dados, carrega todos os dados das tabelas originais, executa as operações criptográficas solicitadas, carrega os dados nas novas tabelas e, em seguida, troca uma ou mais tabelas originais pelas novas tabelas.

Dica

O uso da criptografia in-loco usando o Always Encrypted com enclaves seguros, se disponível em seu ambiente, pode reduzir substancialmente o tempo e a confiabilidade das operações criptográficas.

A execução de operações criptográficas pode levar muito tempo. Durante esse tempo, seu banco de dados não estará disponível para gravar transações. O PowerShell é uma ferramenta recomendada para operações criptográficas em tabelas maiores. Confira Configurar criptografia de coluna usando Always Encrypted com o PowerShell ou Configurar criptografia de coluna no local com o PowerShell.

Permissões

Para executar operações criptográficas usando o assistente, você deve ter as VIEW ANY COLUMN MASTER KEY DEFINITION permissões e VIEW ANY COLUMN ENCRYPTION KEY DEFINITION . Você também precisa de permissões de armazenamento de chaves para criar, acessar e usar sua chave mestra de coluna. Para obter informações detalhadas sobre permissões de armazenamento de chaves, acesse Criar e armazenar chaves mestras de coluna para Always Encrypted ou encontre uma seção relevante para seu armazenamento de chaves.

Abra o assistente do Always Encrypted

Você pode iniciar o assistente em três níveis diferentes:

  • Em um nível de banco de dados, se você quiser criptografar várias colunas em tabelas diferentes.
  • Em um nível de tabela, se você quiser criptografar várias colunas na mesma tabela.
  • Em um nível de coluna, se você quiser criptografar uma coluna específica.
  1. Conecte-se ao SQL Server com o componente Pesquisador de Objetos do SQL Server Management Studio.

  2. Para criptografar:

    • Várias colunas localizadas em tabelas diferentes em um banco de dados, clique com o botão direito do mouse no banco de dados, aponte para Tarefas e selecione Assistente Always Encrypted.

    • Várias colunas na mesma tabela, navegue até a tabela, clique com o botão direito do mouse nela e selecione Assistente Always Encrypted.

    • Uma coluna individual, navegue até a coluna, clique com o botão direito do mouse nela e selecione Assistente Always Encrypted.

Página Seleção de Coluna

Nesta página, você seleciona colunas para criptografar, criptografar novamente ou descriptografar e define a configuração de criptografia de destino para elas.

Para criptografar uma coluna de texto não criptografado, selecione um tipo de criptografia (Determinística ou Aleatória) e uma chave de criptografia para a coluna.

Selecione o tipo de criptografia desejado e a chave para alterar um tipo de criptografia ou girar (alterar) uma chave de criptografia de coluna para uma coluna já criptografada.

Se quiser que o assistente criptografe ou recriptografe uma ou mais colunas usando uma nova chave de criptografia de coluna, escolha uma chave que contenha (Novo) no nome. O assistente gera a chave.

Para descriptografar uma coluna criptografada no momento, selecione Texto sem formatação para o tipo de criptografia.

Dica

Se você quiser usar a criptografia in-loco e estiver usando chaves existentes, selecione chaves habilitadas para enclave, anotadas com (habilitado para enclave).

O assistente não dá suporte a operações criptográficas em tabelas temporais e na memória. Você pode criar tabelas temporais ou na memória vazias usando Transact-SQL e inserir dados usando seu aplicativo.

Página Avaliação de coluna

As tabelas e colunas selecionadas são avaliadas quanto à adequação para Always Encrypted ou Always Encrypted com enclaves seguros. A avaliação começa automaticamente mostrando uma barra de status e uma lista das tabelas e colunas que ela avalia atualmente, o que é feito e o que deve ser feito. A avaliação verifica se uma coluna da tabela atende aos requisitos de Always Encrypted ou Always Encrypted com enclaves seguros com base nas limitações.

Se uma coluna não atender aos requisitos, a avaliação exibirá um status "Erro" para essa coluna. Selecionar o link Mensagens permite obter informações detalhadas sobre por que essa coluna específica não pode ser criptografada.

Você pode criptografar as colunas de avaliação aprovadas marcando a caixa de seleção. O assistente ignora automaticamente todas as colunas que não passam na avaliação. Além disso, você pode exportar os resultados para um arquivo CSV ou de texto selecionando o botão Relatório.

Página Configuração de chave mestra

Se você selecionou uma chave de criptografia de coluna gerada automaticamente para qualquer coluna na página anterior, será necessário selecionar uma chave mestra de coluna existente ou configurar uma nova chave mestra de coluna que criptografe a chave de criptografia de coluna nesta página.

Ao configurar uma nova chave mestra de coluna, você pode escolher uma chave existente no Repositório de Certificados do Windows ou no Azure Key Vault e fazer com que o assistente crie apenas um objeto de metadados para a chave no banco de dados ou pode optar por gerar a chave e o objeto de metadados que descreve a chave no banco de dados.

Para usar a criptografia in-loco, selecione Permitir cálculos de enclave para uma nova chave mestra de coluna. Marcar essa caixa de seleção será permitido apenas se o banco de dados estiver configurado com um enclave seguro.

Para obter mais informações sobre como criar e armazenar chaves mestras de coluna no Repositório de Certificados do Windows, no Azure Key Vault ou em outros repositórios de chaves, consulte Criar e armazenar chaves mestras de coluna para Always Encrypted ou Gerenciar chaves para Always Encrypted com enclaves seguros.

Dica

O assistente permite que você procure e crie chaves somente no Repositório de Certificados do Windows e no Azure Key Vault. Ele também gera automaticamente os nomes das novas chaves e dos objetos de metadados de banco de dados que as descrevem. Suponha que você precise de mais controle sobre como suas chaves são provisionadas (e mais opções para um repositório de chaves que contém sua chave mestra de coluna). Nesse caso, você pode usar as caixas de diálogo Nova Chave Mestra de Coluna e Nova Chave de Criptografia de Coluna para criar as chaves primeiro e, em seguida, executar o assistente e escolher as chaves que você criou. Confira Provisionar chaves mestras de coluna com a caixa de diálogo Nova Chave Mestra da Coluna e Provisionar chaves habilitadas para enclave e Provisionar chaves de criptografia de coluna com a caixa de diálogo Nova Chave de Criptografia de Coluna.

Página Configurações de criptografia in-loco

Se você tiver configurado um enclave seguro em seu banco de dados e estiver usando chaves habilitadas para enclave, esta página permitirá que você especifique os parâmetros de atestado de enclave necessários para a criptografia in-loco. Se você não quiser usar a criptografia no local, desmarque Usar criptografia no local para colunas qualificadas para prosseguir com a criptografia do lado do cliente. Recomendamos deixar essa caixa de seleção habilitada para que o assistente possa usar a criptografia in-loco.

Para obter mais informações sobre atestado de enclave, confira Configurar atestado para Always Encrypted usando o atestado do Azure

Página Executar Configurações

O assistente dá suporte a duas abordagens para configurar a configuração de criptografia de destino: online e offline.

Com a abordagem offline, as tabelas de destino e todas as tabelas relacionadas às tabelas de destino (por exemplo, todas as tabelas com as quais uma tabela de destino tem relações de chave estrangeira) não estão disponíveis para gravar transações durante toda a operação. A semântica de restrições de chave estrangeira (CHECK ou NOCHECK) é sempre preservada ao usar a abordagem offline.

Com a abordagem online, a operação de copiar, criptografar, descriptografar ou criptografar novamente os dados é executada incrementalmente. Os aplicativos podem ler e gravar dados de e para as tabelas de destino em toda a operação de movimentação de dados, exceto a última iteração, que é limitada pelo parâmetro máximo de tempo de inatividade . Para detectar e processar as alterações que os aplicativos podem fazer enquanto os dados estão sendo copiados, o assistente habilita o Controle de Alterações no banco de dados de destino. Por isso, a abordagem online provavelmente consumirá mais recursos no lado do banco de dados do que a abordagem offline. A operação também pode levar mais tempo com a abordagem online, especialmente se uma carga de trabalho pesada de gravação estiver em execução no banco de dados. A abordagem online pode ser usada para criptografar uma tabela de cada vez e a tabela deve ter uma chave primária. Por padrão, as restrições de chave estrangeira são recriadas com a opção NOCHECK para minimizar o impacto sobre os aplicativos. Você pode impor a preservação da semântica de restrições de chave estrangeira habilitando a opção Keep check foreign key constraints .

Aqui estão as diretrizes para escolher entre as abordagens offline e online:

Use a abordagem offline:

  • Para minimizar a duração da operação.
  • Para criptografar, descriptografar ou recriptografar colunas em várias tabelas ao mesmo tempo.
  • Se a tabela não tiver uma chave primária.

Use a abordagem online:

  • Para minimizar o tempo de inatividade/indisponibilidade do banco de dados para seus aplicativos.

Pós-criptografia

Limpe o cache de planos para todos os lotes e procedimentos armazenados que acessam a tabela para atualizar as informações de criptografia de parâmetros.

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

Observação

Se você não remover o plano da consulta afetada do cache, a primeira execução da consulta após a criptografia poderá falhar.

Use ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE ou DBCC FREEPROCCACHE para limpar o cache de planos com cuidado, pois isso pode resultar em uma degradação temporária do desempenho das consultas. Para minimizar o impacto negativo da limpeza do cache, você pode remover seletivamente os planos para apenas as consultas afetadas.

Chame sp_refresh_parameter_encryption para atualizar os metadados para os parâmetros de cada módulo (procedimento armazenado, função, exibição, gatilho) que são mantidos em sys.parameters e podem ter sido invalidados criptografando as colunas.