Compartilhar via


Solução de problemas comuns do Always Encrypted com enclaves seguros

Aplica-se a: SQL Server 2019 (15.x) e posterior – Somente Windows Banco de Dados SQL do Azure

Este artigo descreve como identificar e resolver problemas comuns que você pode encontrar ao executar instruções do T-SQL (Transact-SQL) usando Always Encrypted com enclaves seguros.

Para obter informações sobre como executar consultas usando enclaves seguros, confira Executar instruções Transact-SQL usando enclaves seguros.

Erros de conexão do banco de dados

Para executar instruções usando um enclave seguro, você precisa habilitar o Always Encrypted, especificar um protocolo de atestado e, se aplicável, um URL de atestado, para a conexão de banco de dados, conforme explicado em Pré-requisitos para execução de instruções usando enclaves seguros. No entanto, a conexão falhará se você especificar um protocolo de atestado, mas seu Banco de Dados SQL do Azure ou sua instância do SQL Server de destino não der suporte a enclaves seguros ou estiver configurado incorretamente.

Erros de atestado ao usar o Atestado do Microsoft Azure

Observação

Esta seção se aplica apenas ao Banco de Dados SQL do Azure com enclaves Intel SGX.

Antes que um driver de cliente envie uma instrução T-SQL para o servidor lógico do SQL do Azure para execução, o driver dispara o fluxo de trabalho de atestado de enclave a seguir usando o Atestado do Microsoft Azure.

  1. O driver do cliente passa a URL de atestado, especificada na conexão de banco de dados, para o servidor lógico do SQL do Azure.
  2. O servidor lógico do SQL do Azure coleta a evidência sobre o enclave, o ambiente de hospedagem dele e o código em execução dentro do enclave. Em seguida, o servidor envia uma solicitação de atestado para o provedor de atestado, referenciado na URL de atestado.
  3. O provedor de atestado valida a evidência em relação à política configurada e emite um token de atestado para o servidor lógico do SQL do Azure. O provedor de atestado assina o token de atestado com a respectiva chave privada.
  4. O servidor lógico do SQL do Azure envia o token de atestado para o driver do cliente.
  5. O cliente entra em contato com o provedor de atestado na URL de atestado especificada para recuperar a chave pública dele e verifica a assinatura no token de atestado.

Os erros podem ocorrer em várias etapas do fluxo de trabalho acima devido a configurações incorretas. Aqui estão os erros comuns de atestado, suas causas raiz e as etapas de solução de problemas recomendadas:

  • O servidor lógico do SQL do Azure não pode se conectar ao provedor de atestado no Atestado do Azure (etapa 2 do fluxo de trabalho acima), especificado na URL de atestado. As causas prováveis incluem:
    • A URL de atestado está incorreta ou incompleta. Para obter mais informações, confira Determinar a URL de atestado para sua política de atestado.
    • O provedor de atestado foi excluído acidentalmente.
    • O firewall foi configurado para o provedor de atestado, mas não permite o acesso aos serviços da Microsoft.
    • Um erro de rede intermitente faz com que o provedor de atestado fique indisponível.
  • Seu servidor lógico do SQL do Azure não está autorizado a enviar solicitações de atestado para o provedor de atestado. Verifique se o administrador do seu provedor de atestado adicionou o servidor de banco de dados à função de Leitor de Atestado.
  • A validação da política de atestado falha (na etapa 3 do fluxo de trabalho acima).
    • Uma política de atestado incorreta é a causa raiz provável. Verifique se você está usando a política recomendada pela Microsoft. Para obter mais informações, confira Criar e configurar um provedor de atestado.
    • A validação da política também pode falhar como resultado de uma violação de segurança que compromete o enclave do lado do servidor.
  • O aplicativo cliente não consegue se conectar ao provedor de atestado e recuperar a chave de assinatura pública (na etapa 5). As causas prováveis incluem:
    • A configuração de firewalls entre seu aplicativo e o provedor de atestado pode bloquear as conexões. Para solucionar problemas na conexão bloqueada, verifique se você pode conectar-se ao ponto de extremidade de OpenID do provedor de atestado. Por exemplo, use um navegador da Web do computador que hospeda o aplicativo para ver se você pode conectar-se ao ponto de extremidade OpenID. Para obter mais informações, confira Configuração de Metadados – Get.

Erros de atestado ao usar o Serviço Guardião de Host

Observação

Esta seção se aplica apenas ao SQL Server 2019 (15.x) e posteriores.

Antes que um driver de cliente envie uma instrução T-SQL para o SQL Server para execução, o driver dispara o fluxo de trabalho de atestado de enclave a seguir usando o HGS (Serviço Guardião de Host).

  1. O driver de cliente chama o SQL Server para iniciar o atestado.
  2. O SQL Server coleta a evidência sobre o enclave, o ambiente de hospedagem dele e o código em execução dentro do enclave. O SQL Server solicita um certificado de integridade da instância do HGS com a qual o computador que hospeda o SQL Server foi registrado. Para obter mais informações, confira Registrar computador com o Serviço Guardião de Host.
  3. O HGS valida a evidência e emite o certificado de integridade para SQL Server. O HGS assina o certificado de integridade com a chave privada dele.
  4. O SQL Server envia o certificado de integridade para o driver do cliente.
  5. O driver do cliente contata o HGS na URL de atestado, especificada para a conexão de banco de dados, a fim de recuperar a chave pública do HGS. O driver do cliente verifica a assinatura no certificado de integridade.

Os erros podem ocorrer em várias etapas no fluxo de trabalho acima devido a configurações incorretas. Aqui estão alguns erros comuns de atestado, suas causas raiz e as etapas de solução de problemas recomendadas:

  • O SQL Server não pode se conectar ao HGS (etapa 2 do fluxo de trabalho acima) devido a um erro de rede intermitente. Para solucionar problemas de conexão, o administrador do computador SQL Server deve verificar se o computador pode se conectar ao computador do HGS.
  • A validação na etapa 3 falha. Para solucionar problemas de validação:
    • O administrador do computador SQL Server deve trabalhar com o administrador de aplicativos cliente para verificar se o computador SQL Server está registrado com a mesma instância de HGS que a instância referenciada na URL de atestado no lado do cliente.
    • O administrador do computador SQL Server deve confirmar se o computador SQL Server pode atestar com êxito seguindo as instruções na Etapa 5: Confirmar que o host pode atestar com sucesso.
  • O aplicativo cliente não pode se conectar ao HGS nem recuperar a chave de assinatura pública dele (na etapa 5). A causa provável é:
    • A configuração de um dos firewalls entre seu aplicativo e o provedor de atestado pode bloquear as conexões. Verifique se o computador que hospeda o aplicativo pode se conectar ao computador do HGS.

Erros de criptografia in-loco

Esta seção lista os erros comuns que você pode encontrar ao usar ALTER TABLE/ALTER COLUMN para criptografia in-loco (além dos erros de atestado descritos nas seções anteriores). Para obter mais informações, confira Configurar a criptografia de coluna in-loco usando o Always Encrypted com enclaves seguros.

  • A chave de criptografia de coluna que você está tentando usar para criptografar, descriptografar ou criptografar novamente os dados não é uma chave habilitada para enclave. Para obter mais informações sobre os pré-requisitos para criptografia in-loco, confira Pré-requisitos. Para obter informações sobre como provisionar chaves habilitadas para enclave, confira Provisionar chaves habilitadas para enclave.
  • Você não habilitou o Always Encrypted e os cálculos de enclave para a conexão de banco de dados. Confira Pré-requisitos para executar instruções usando enclaves seguros.
  • A instrução ALTER TABLE/ALTER COLUMN dispara uma operação criptográfica e altera o tipo de dados da coluna ou define uma ordenação com uma página de código diferente da página de código de ordenação atual. Não é permitido combinar operações criptográficas com alterações em tipos de dados ou páginas de ordenação. Para resolver o problema, use instruções separadas; uma instrução para alterar o tipo de dados ou a página de código de ordenação e outra instrução para criptografia in-loco.

Erros ao executar consultas DML confidenciais usando enclaves seguros

Esta seção lista os erros comuns que você pode encontrar ao executar consultas DML confidenciais usando enclaves seguros (além dos erros de atestado descritos nas seções anteriores).

Próximas etapas

Confira também