Compartilhar via


Always Encrypted - Como funcionam as consultas em colunas criptografadas

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Para executar uma consulta em colunas de banco de dados criptografadas, inserir dados nessas colunas, recuperar valores de texto não criptografado ou executar operações com suporte (como pesquisas de pesquisa de ponto) usando criptografia determinística, o usuário ou aplicativo que emite a consulta deve atender aos seguintes pré-requisitos:

  • Tenha acesso à chave mestra de coluna que protege os dados. Esse acesso à chave é necessário além das permissões no nível do banco de dados, como SELECT na tabela relevante.
  • Conectar-se ao banco de dados com o Always Encrypted habilitado na conexão de banco de dados. A maioria das ferramentas SQL e drivers de cliente SQL dão suporte à habilitação do Always Encrypted para conexões de banco de dados.

Observação

Caso tenha as permissões de banco de dados necessárias para ler os dados, mas nenhum acesso às chaves que os protegem, o usuário ainda poderá recuperar dados cyphertext (criptografados) conectando-se ao banco de dados sem habilitar Always Encrypted na conexão de banco de dados.

Captura de tela do Schema como funcionam as consultas em colunas criptografadas.

Veja como as consultas em colunas criptografadas funcionam:

  1. Quando um aplicativo emite uma consulta parametrizada, o driver de cliente SQL dentro do aplicativo entra em contato de forma transparente com o Mecanismo de Banco de Dados (chamando sp_describe_parameter_encryption para determinar quais parâmetros são direcionados a colunas criptografadas e devem ser criptografados. Para cada parâmetro que precisa ser criptografado, o driver recebe o algoritmo de criptografia, o tipo de criptografia e os metadados da chave, como a chave de criptografia de coluna criptografada e a localização da chave mestra de coluna correspondente.
  2. O driver chamará o repositório de chaves, que contém as chaves mestras da coluna apara descriptografar os valores da chave de criptografia de coluna criptografados. As chaves de criptografia de coluna de texto não criptografado resultantes são armazenadas em cache para reduzir o número de viagens de ida e volta para o repositório de chaves em usos subsequentes das mesmas chaves de criptografia de coluna.
  3. O driver usa as chaves de criptografia de coluna de texto não criptografado obtidas para criptografar os parâmetros de consulta correspondentes a colunas criptografadas.
  4. O driver substitui os valores de texto não criptografado dos parâmetros de direcionamento colunas criptografadas com seus valores criptografados e envia a consulta ao mecanismo de banco de dados para processamento.
  5. O mecanismo de banco de dados executa a consulta, que pode envolver comparações de igualdade em colunas usando criptografia determinística.
  6. Se os resultados da consulta incluírem dados de colunas criptografadas, o mecanismo de banco de dados anexará metadados de criptografia para cada coluna, como informações sobre o algoritmo de criptografia, tipo de criptografia e metadados de chave ao conjunto de resultados.
  7. O mecanismo de banco de dados envia o conjunto de resultados ao aplicativo cliente.
  8. Para cada coluna criptografada no conjunto de resultados recebido, o driver primeiro tentará encontrar a chave de criptografia da coluna de texto não criptografado no cache local e fará apenas uma viagem de ida e volta ao repositório de chaves que contém a chave mestra de coluna, se não for possível encontrar a chave no cache.
  9. O driver descriptografa os resultados e retorna valores de texto não criptografado para o aplicativo.

Um driver cliente interage com um repositório de chaves que contém uma chave mestra de coluna usando um provedor de repositório de chaves mestras de coluna, que é um componente de software do cliente que encapsula um repositório de chaves que contém a chave mestra de coluna. Os provedores para tipos comuns de repositório de chaves estão disponíveis em bibliotecas de drivers do lado do cliente da Microsoft ou como download autônomo. Você também pode implementar seu próprio provedor. Recursos Always Encrypted, incluindo provedores de repositório de chaves mestras de coluna internas, variam de acordo com uma biblioteca de drivers e sua versão.

Confira Desenvolver aplicativos usando o Always Encrypted para obter a lista de drivers de cliente que dão suporte ao Always Encrypted e para obter informações sobre como desenvolver aplicativos que consultam colunas criptografadas.

Você também pode consultar colunas criptografadas usando ferramentas SQL, por exemplo , Consultar colunas usando Always Encrypted com Azure Data Studio ou Consultar colunas usando Always Encrypted com SQL Server Management Studio.