Partilhar via


Configurar a encriptação das colunas usando o Assistente Always Encrypted no SSMS

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

O Assistente Sempre Criptografado é uma ferramenta poderosa que permite definir a configuração desejada Always Encrypted para colunas de banco de dados selecionadas. Dependendo da configuração atual e da configuração de destino desejada, o assistente pode criptografar uma coluna, descriptografá-la (remover a criptografia) ou criptografá-la novamente (por exemplo, usando uma nova chave de criptografia de coluna ou um tipo de criptografia diferente do tipo atual, configurado para a coluna). Várias colunas podem ser configuradas 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 que você avalie as tabelas em um banco de dados selecionado ou escolha tabelas específicas para analisar. Ele identifica colunas adequadas para criptografia e destaca aquelas incompatíveis com Always Encrypted devido ao seu 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 o banco de dados é configurado com um enclave seguro, você pode executar operações criptográficas 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 encriptada. Ele efetua uma criptografia no local para cada coluna usando o enclave dentro do motor de base de dados. Quando a criptografia estiver concluída, o assistente recriará as dependências. Para obter mais informações sobre Always Encrypted com enclaves seguros, consulte Always Encrypted with secure enclaves.

Quando o banco de dados não está configurado com um enclave seguro, o assistente permite habilitar 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 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 para as novas tabelas e, em seguida, troca uma ou mais tabelas originais com as novas tabelas.

Dica

Usar criptografia em-loco usando Always Encrypted com enclaves seguros, se disponível no seu ambiente, pode reduzir substancialmente o tempo e afetar 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 está disponível para escrever transações. O PowerShell é uma ferramenta recomendada para operações criptográficas em tabelas maiores. Consulte Configurar a criptografia de coluna usando Always Encrypted com PowerShell ou Configurar a criptografia de coluna diretamente com PowerShell.

Permissões

Para executar operações criptográficas usando o assistente, você deve ter as permissões VIEW ANY COLUMN MASTER KEY DEFINITION 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, vá para Criar e armazenar chaves mestras de coluna paraAlways Encrypted ou encontre uma seção relevante para seu armazenamento de chaves.

Abra o assistente de Criptografia Sempre Ativa

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 encriptar:

    • Várias colunas localizadas em diferentes tabelas de uma base de dados, clique com o botão direito na sua base de dados, aponte para Tarefas e depois selecione Assistente Sempre Encriptado.

    • Várias colunas na mesma tabela, navegue até à tabela, clique com o botão direito nela e depois selecione Assistente Sempre Encriptado.

    • Uma coluna individual, navega até à coluna, clica com o botão direito nela e depois seleciona Assistente Sempre Encriptado.

Página de Seleção de Colunas

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 sem formatação (uma coluna que não está criptografada), selecione um tipo de criptografia ( determinística ou randomizado ) 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 desejar que o assistente criptografe ou recriptografe uma ou mais colunas com uma nova chave de encriptação de coluna, escolha uma chave que contenha (Novo) no seu nome. O assistente gera a chave.

Para desencriptar uma coluna atualmente encriptada, selecione Texto simples para o tipo de encriptação.

Dica

Se tu quiseres usar a criptografia no local e estiveres a usar chaves existentes, certifica-te de selecionar chaves com suporte para enclave, anotadas com (suporte para enclave).

O assistente não suporta 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 da Avaliação da 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 a mostrar uma barra de status e uma lista das tabelas e colunas que avalia atualmente, quais já foram feitas e quais ainda estão por fazer. 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 de .

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 aquela 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 da Chave Mestra

Se você selecionou uma chave de criptografia de coluna gerada automaticamente para qualquer coluna na página anterior, precisará 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 Cofre de Chaves do Azure 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 no local, selecione Permitir cálculos de enclave para criação de uma chave mestra de coluna. Marcar essa caixa de seleção só é permitido 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 Windows Certificate Store, Azure Key Vault ou outros armazenamentos 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ê navegue e crie chaves somente no Repositório de Certificados do Windows e no Cofre de Chaves do Azure. Ele também gera automaticamente os nomes das novas chaves e os objetos de metadados do banco de dados que as descrevem. Suponha que precises de mais controlo sobre como as tuas chaves são provisionadas (e mais opções para um armazenamento de chaves contendo a tua chave principal de coluna). Nesse caso, pode utilizar 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 de configuração e escolher as chaves que criou. Consulte Provisionar chaves mestras de coluna com a caixa de diálogo Nova chave mestra de coluna ou Provisionar chaves habilitadas para enclave e Provisionar chaves de criptografia de coluna com a caixa de diálogo Nova chave de criptografia de coluna.

In-Place página Configurações de criptografia

Se tiver configurado um enclave seguro na sua base de dados e estiver a usar chaves habilitadas para enclave, esta página permite especificar os parâmetros de atestação de enclave necessários para a criptografia local. Se não quiser usar criptografia no local, desmarque Usar criptografia no local para colunas qualificadas para continuar com a criptografia do lado do cliente. Recomendamos deixar esta caixa de seleção ativada para que o assistente possa usar a criptografia no local.

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

Página de Definições de Execução

O assistente suporta duas abordagens para configurar a criptografia alvo: *online* e *offline*.

Com a abordagem offline, as tabelas de destino e quaisquer tabelas relacionadas às tabelas de destino (por exemplo, quaisquer tabelas com as quais uma tabela de destino tenha relações de chave estrangeira) não estão disponíveis para gravar transações durante toda a duração da operação. A semântica das 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 recriptografar os dados é realizada de forma incremental. Os aplicativos podem ler e gravar dados de e para as tabelas de destino durante toda a operação de movimentação de dados, exceto a última iteração, cuja duração é limitada pelo parâmetro Maximum downtime parâmetro. Para detetar 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, é provável que a abordagem online consuma mais recursos do 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 a ser executada na base 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 nos 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 encriptar/desencriptar/voltar a encriptar colunas em várias tabelas ao mesmo tempo.
  • Se a tabela-alvo não tiver uma chave primária.

Utilize a abordagem em linha:

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

Pós-encriptação

Limpe o cache de plano 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 para a 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 do plano com cuidado, pois isso pode resultar em degradação temporária do desempenho da consulta. Para minimizar o impacto negativo da limpeza do cache, você pode remover seletivamente os planos apenas para 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 persistem em sys.parameters e podem ter sido invalidados pela criptografia das colunas.