Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e posterior - somente Windows
Banco de Dados SQL do Azure
Este artigo descreve como executar operações criptográficas no local em colunas usando Always Encrypted com enclaves seguros com a instrução ALTER TABLE Statement/ALTER COLUMN. Para obter informações básicas sobre criptografia em-loco e pré-requisitos gerais, consulte Configurar criptografia de coluna em-loco usando Always Encrypted com enclaves seguros.
Com a instrução ALTER TABLE ou ALTER COLUMN, você pode definir a configuração de criptografia de destino para uma coluna. Quando você executa a instrução, o enclave seguro do lado do servidor criptografa, criptografa novamente ou descriptografa os dados armazenados na coluna, dependendo da configuração de criptografia atual e de destino especificada na definição de coluna na instrução.
- Se a coluna não estiver criptografada no momento, ela será criptografada se você especificar a cláusula
ENCRYPTED WITHna definição de coluna. - Se a coluna estiver atualmente encriptada, será desencriptada (convertida numa coluna de texto simples), se não especificar a cláusula
ENCRYPTED WITHna definição da coluna. - Se a coluna estiver criptografada no momento, ela será criptografada novamente se você especificar a cláusula
ENCRYPTED WITHe o tipo de criptografia de coluna especificado ou a chave de criptografia de coluna forem diferentes do tipo de criptografia usado atualmente ou da chave de criptografia de coluna.
Observação
Não é possível combinar operações criptográficas com outras alterações em uma única instrução ALTER TABLE/ALTER COLUMN, exceto alterar a coluna para NULL ou NOT NULLou alterar um agrupamento. Por exemplo, não é possível criptografar uma coluna E alterar um tipo de dados da coluna em uma única instrução ALTER TABLE/ALTER COLUMN Transact-SQL. Use duas instruções separadas.
Como qualquer consulta que utiliza um enclave seguro do lado do servidor, uma instrução ALTER TABLE/ALTER COLUMN que aciona a criptografia no local deve ser enviada por uma conexão com Sempre Criptografado e cálculos de enclave habilitados.
O restante deste artigo descreve como acionar a criptografia no local usando a instrução ALTER TABLE/ALTER COLUMN do SQL Server Management Studio. Como alternativa, você pode emitir ALTER TABLE/ALTER COLUMN do Azure Data Studio ou do seu aplicativo.
Observação
Atualmente, o cmdlet Invoke-Sqlcmd no módulo SqlServer PowerShell, e sqlcmdnão oferecem suporte ao uso de ALTER TABLE/ALTER COLUMN para operações criptográficas em-loco.
Executar criptografia no local com Transact-SQL no SSMS
Pré-requisitos
- Pré-requisitos descritos em Configurar a criptografia de coluna no local usando Always Encrypted com enclaves seguros.
- Instale a versão mais recente do SQL Server Management Studio (SSMS).
Passos
Abra uma janela de consulta com Always Encrypted e cálculos de enclave ativados na ligação à base de dados. Para obter detalhes, consulte Habilitando e desabilitando o Always Encrypted para uma conexão de banco de dados.
Na janela de consulta, emita a instrução
ALTER TABLE/ALTER COLUMN, especificando a configuração de criptografia de destino para uma coluna que você deseja criptografar, descriptografar ou criptografar novamente. Se você estiver criptografando ou criptografando novamente a coluna, use a cláusulaENCRYPTED WITH. Se sua coluna for uma coluna de cadeia de caracteres (por exemplo,char,varchar,nchar,nvarchar), também talvez seja necessário alterar o agrupamento para um agrupamento BIN2.Observação
Se a sua chave mestra de coluna estiver armazenada no Cofre da Chave do Azure, poderá ser-lhe pedido para iniciar sessão no Azure.
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_CACHEouDBCC FREEPROCCACHEpara limpar cuidadosamente o cache do plano, 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 dos parâmetros de cada módulo (procedimento armazenado, função, vista, gatilho) que são persistidos em sys.parameters e que podem ter sido invalidados pela criptografia das colunas.
Exemplos
Criptografando uma coluna no próprio local
O exemplo abaixo pressupõe:
-
CEK1é uma chave de criptografia de coluna com suporte a enclave. - A coluna
SSNé de texto sem formatação e atualmente está usando o agrupamento de banco de dados padrão, como Latin1, agrupamento não-BIN2 (por exemplo,Latin1_General_CI_AI_KS_WS).
A instrução criptografa a coluna SSN usando criptografia determinística e a chave de criptografia de coluna habilitada para enclave no local. Ele também substitui o agrupamento de banco de dados padrão pelo agrupamento BIN2 correspondente (na mesma página de código).
A operação é realizada online (ONLINE = ON). Observe também que a chamada para ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE, a qual recria os planos das consultas, é afetada pela alteração do esquema da tabela.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
WITH
(ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Recriptografar uma coluna no local para alterar o tipo de criptografia
O exemplo abaixo pressupõe:
- A coluna
SSNé criptografada usando criptografia determinística e uma chave de criptografia de coluna compatível com enclave,CEK1. - O agrupamento atual, definido ao nível da coluna, é
Latin1_General_BIN2.
A instrução abaixo criptografa novamente a coluna usando criptografia aleatória e a mesma chave (CEK1)
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1]
, ENCRYPTION_TYPE = Randomized
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Recriptografar uma coluna no local para rodar uma chave de criptografia de coluna
O exemplo abaixo pressupõe:
- A coluna
SSNé encriptada usando criptografia aleatória e uma chave de encriptação de coluna compatível com enclave,CEK1. -
CEK2é uma chave de criptografia de coluna habilitada para enclave (diferente deCEK1). - O agrupamento atual, definido ao nível da coluna, é
Latin1_General_BIN2.
A instrução abaixo criptografa novamente a coluna com CEK2.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK2]
, ENCRYPTION_TYPE = Randomized
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Desencriptar uma coluna diretamente
O exemplo abaixo pressupõe:
- A coluna
SSNé encriptada usando uma chave de criptografia de coluna compatível com enclave. - O agrupamento atual, definido ao nível da coluna, é
Latin1_General_BIN2.
A instrução abaixo descriptografa a coluna e mantém o agrupamento inalterado. Como alternativa, pode optar por alterar a ordenação. Por exemplo, altere o agrupamento para um agrupamento não-BIN2 na mesma instrução.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
WITH (ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Próximos passos
- Executar instruções Transact-SQL usando enclaves seguros
- Crie e use índices em colunas usando Always Encrypted com enclaves seguros
- Desenvolver aplicações usando Always Encrypted com enclaves seguros
Ver também
- Solucionar problemas comuns do Always Encrypted com enclaves seguros
- Configure a criptografia de coluna no local usando Always Encrypted com enclaves seguros
- Habilite o Always Encrypted com enclaves seguros para colunas criptografadas existentes
- Tutorial: Introdução ao uso do Always Encrypted com enclaves seguros