Configurar a criptografia de coluna usando o Always Encrypted com um pacote de DAC

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

Um pacote de DAC (aplicativo da camada de dados), também conhecido como DACPAC, é uma unidade portátil de implantação de banco de dados do SQL Server que define todos os objetos do SQL Server, incluindo tabelas e colunas dentro das tabelas. Quando você publica um DACPAC em um banco de dados (quando atualiza um banco de dados usando um DACPAC), o esquema do banco de dados de destino é atualizado para corresponder ao esquema no DACPAC. Você pode publicar um DACPAC usando o Assistente de Atualização do Aplicativo da Camada de Dados no SQL Server Management Studio, no PowerShell ou no sqlpackage.

Este artigo aborda considerações especiais sobre como atualizar um banco de dados quando o DACPAC ou o banco de dados de destino contiver colunas protegidas com o Always Encrypted. Se o esquema de criptografia para uma coluna no DACPAC é diferente do esquema de criptografia para uma coluna existente no banco de dados de destino, a publicação do DACPAC resulta na criptografia, na descriptografia ou na nova criptografia dos dados armazenados na coluna. Confira a tabela a seguir para obter detalhes.

Condição Ação
A coluna está criptografada no DACPAC e não está criptografada no banco de dados. Os dados na coluna serão criptografados.
A coluna não está criptografada no DACPAC e está criptografada no banco de dados. Os dados na coluna serão descriptografados (a criptografia será removida da coluna).
A coluna é criptografada tanto no DACPAC quanto no banco de dados, mas a coluna no DACPAC usa um tipo de criptografia diferente ou uma chave de criptografia de coluna diferente da coluna correspondente no banco de dados. Os dados na coluna serão descriptografados e criptografados novamente para corresponder à configuração de criptografia no DACPAC.

Implantar um pacote DAC também pode resultar na criação ou remoção de objetos de metadados para chaves mestras de coluna ou chaves de criptografia de coluna usadas pelo Always Encrypted.

Considerações sobre o desempenho

Para executar operações de criptografia, uma ferramenta usada para implantar um DACPAC precisa mover os dados para fora do banco de dados. A ferramenta cria tabelas com a configuração de criptografia desejada no banco de dados, carrega todos os dados das tabelas originais, executa as operações de criptografia solicitadas, carrega os dados nas novas tabelas e, em seguida, troca as tabelas originais pelas novas tabelas. 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 gravar transações.

Observação

Se estiver usando o SQL Server 2019 (15.x) e sua instância do SQL Server estiver configurada com um enclave seguro, você poderá executar operações criptográficas in-loco, sem mover os dados para fora do banco de dados. Consulte Configurar a criptografia de colunas localmente usando o Always Encrypted com enclaves seguros. A criptografia no local não está disponível para implantações de DACPAC.

Permissões para publicar um pacote de DAC se o Always Encrypted está configurado

Para publicar o pacote DAC se o Always Encrypted estiver configurado no DACPAC ou no banco de dados de destino, talvez você precise de algumas ou todas as permissões abaixo, dependendo das diferenças entre o esquema no DACPAC e o esquema de banco de dados de destino.

ALTER ANY COLUMN MASTER KEY, ALTER ANY COLUMN ENCRYPTION KEY, VIEW ANY COLUMN MASTER KEY DEFINITION, VIEW ANY COLUMN ENCRYPTION KEY DEFINITION

Se a operação de atualização disparar uma operação de criptografia de dados, você também precisará de permissões de repositório de chaves para acessar e usar sua chave mestra de coluna. Saiba mais sobre as permissões do repositório de chaves, vá até Criar e armazenar chaves mestras de coluna para Always Encrypted e encontre uma seção relevante para o seu repositório de chaves.