Configurar o atestado para Always Encrypted usando o Atestado do Azure

Aplica-se a: Banco de Dados SQL do Azure

O Atestado do Microsoft Azure é uma solução usada para atestar TEEs (Ambientes de Execução Confiáveis), incluindo enclaves Intel SGX (Software Guard Extensions da Intel).

Para usar o Atestado do Azure para atestar enclaves Intel SGX usados para Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure, você precisa:

  1. Crie um provedor de atestado e configure-o com a política de atestado recomendada.

  2. Determine a URL de atestado e compartilhe-a com os administradores de aplicativos.

Importante

Com enclaves Intel SGX no Banco de Dados SQL do Azure, o atestado é obrigatório e requer o Atestado do Microsoft Azure. Os enclaves VBS no Banco de Dados SQL do Azure não dão suporte a atestado. Esse artigo só se aplica a enclaves Intel SGX.

Observação

Configurar o atestado é responsabilidade do administrador de atestado. Confira Funções e responsabilidades ao configurar atestados e enclaves Intel SGX.

Criar e configurar um provedor de atestado

Um provedor de atestado é um recurso no Atestado do Azure que avalia as solicitações de atestado em relação às políticas de atestado e emite tokens de atestado.

As políticas de atestado são especificadas usando a gramática de regra de declaração.

Importante

Um provedor de atestado é criado com a política padrão para enclaves Intel SGX, que não valida o código em execução dentro do enclave. A Microsoft recomenda enfaticamente que você defina a política recomendada usada na saída a seguir, e não use a política padrão para Always Encrypted com enclaves seguros.

A Microsoft recomenda a seguinte política para atestar os enclaves Intel SGX usados para Always Encrypted no Banco de Dados SQL do Azure:

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

A política verifica se:

  • O enclave dentro do Banco de Dados SQL do Azure não dá suporte à depuração.

    Os enclaves podem ser carregados com a depuração desabilitada ou habilitada. O suporte à depuração foi projetado para permitir que os desenvolvedores solucionem problemas de código em execução em um enclave. Em um sistema de produção, a depuração pode permitir que um administrador examine o conteúdo do enclave, o que reduz o nível de proteção que o enclave fornece. A política recomendada desabilita a depuração para garantir que, se um administrador mal-intencionado tentar ativar o suporte à depuração assumindo o computador enclave, o atestado falhará.

  • A ID do produto (product ID) de enclave corresponde à ID do produto (product ID) atribuída a Always Encrypted com enclaves seguros.

    Cada enclave tem uma ID do produto (product ID) exclusiva que diferencia o enclave de outros enclaves. A ID do produto (product ID) atribuída ao enclave do Always Encrypted é 4639.

  • O SVN (número de versão de segurança) da biblioteca é maior que ou igual a 2.

    O SVN permite que a Microsoft responda a possíveis bugs de segurança identificados no código do enclave. Caso um problema de segurança seja descoberto e corrigido, a Microsoft implantará uma nova versão do enclave com um novo SVN (incrementado). A política recomendada será atualizada para refletir o novo SVN. Ao atualizar sua política para corresponder à política recomendada, você pode garantir que, se um administrador mal-intencionado tentar carregar um enclave mais antigo e inseguro, o atestado falhará.

  • A biblioteca no enclave foi assinada usando a chave de assinatura da Microsoft (o valor da declaração x-ms-sgx-mrsigner é o hash da chave de assinatura).

    Um dos principais objetivos do atestado é convencer os clientes que o binário em execução no enclave é o binário que deve ser executado. As políticas de atestado fornecem dois mecanismos para essa finalidade. Um é a declaração mrenclave que é o hash do binário que deve ser executado em um enclave. O problema com o mrenclave é que o hash do binário é alterado mesmo com alterações triviais no código, o que torna difícil a revisão do código em execução no enclave. Portanto, recomendamos o uso do mrsigner, que é um hash de uma chave usada para assinar o binário do enclave. Quando a Microsoft revisa o enclave, o mrsigner permanece o mesmo, desde que a chave de assinatura não mude. Dessa forma, torna-se viável implantar binários atualizados sem quebrar os aplicativos dos clientes.

Importante

A Microsoft pode precisar girar a chave usada para assinar o binário do enclave Always Encrypted, mas esse evento tende a ser raro. Antes que uma nova versão do binário do enclave, assinada com uma nova chave, seja implantada no Banco de Dados SQL do Azure, este artigo será atualizado para fornecer uma nova política de atestado recomendada e as instruções sobre como atualizar a política nos seus provedores de atestado para garantir que seus aplicativos continuem a funcionar ininterruptamente.

Para obter instruções sobre como criar um provedor de atestado e configurar com uma política de atestado usando:

Determinar a URL de atestado para sua política de atestado

Depois de configurar uma política de atestado, você precisa compartilhar a URL de atestado com os administradores de aplicativos que usam o Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure. A URL de atestado é o Attest URI do provedor de atestado que contém a política de atestado, que tem a seguinte aparência: https://MyAttestationProvider.wus.attest.azure.net.

Usar o portal do Azure para determinar a URL de atestado

No painel Visão Geral do provedor de atestado, copie o valor da propriedade Attest URI para área de transferência.

Usar o PowerShell para determinar a URL de atestado

Use o cmdlet Get-AzAttestation para recuperar as propriedades do provedor de atestado, incluindo AttestURI.

Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName

Para obter mais informações, confira Criar e gerenciar um provedor de atestado.

Próximas etapas

Confira também