Configurar a criptografia de coluna usando o Always Encrypted com um pacote de DAC
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instâ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 (ao atualizar um banco de dados usando um DACPAC), o esquema do banco de dados de destino é atualizado para corresponder ao esquema no DACPAC. Publique um DACPAC usando o Assistente para Atualizar Aplicativo da Camada de Dados no SQL Server Management Studio, no PowerShell ou no sqlpackage.
Este artigo aborda considerações especiais sobre a atualização de um banco de dados quando o DACPAC e/ou o banco de dados de destino contêm 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 está criptografada no DACPAC e no banco de dados, mas a coluna no DACPAC usa um tipo de criptografia diferente e/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. |
A implantação de um pacote de DAC também pode resultar na criação ou na remoção de objetos de metadados para chaves mestras de coluna ou chaves de criptografia de coluna do 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, o banco de dados não estará 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. Confira Configurar a criptografia de coluna in-loco usando o Always Encrypted com enclaves seguros. Observe que a criptografia in-loco 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 um pacote de DAC se o Always Encrypted está configurado no DACPAC e/ou no banco de dados de destino, talvez você precise ter algumas ou todas as permissões abaixo, dependendo das diferenças entre o esquema no DACPAC e o esquema do 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.
Próximas etapas
- Desenvolver aplicativos usando o Always Encrypted
- Consultar colunas usando o Always Encrypted com o SQL Server Management Studio