Tutorial: Introdução ao uso de Always Encrypted com enclaves Intel SGX no Banco de Dados SQL do Azure

Aplica-se a: Banco de Dados SQL do Azure

Este tutorial ensina você a começar a usar o Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure. Você usará enclaves Intel SGX (Software Guard Extensions). Ela mostrará a você:

  • Como criar um ambiente para testar e avaliar o Always Encrypted com enclaves Intel SGX.
  • Como criptografar dados in-loco e emitir consultas confidenciais avançadas em colunas criptografadas usando o SSMS (SQL Server Management Studio).

Pré-requisitos

Requisitos do PowerShell

Observação

Os pré-requisitos desta seção serão necessários apenas se você usar o PowerShell para algumas das etapas do tutorial. Se você planeja usar o portal do Azure, pode ignorar esta seção.

O módulo do Az PowerShell versão 9.3.0 ou posterior é necessário. Para saber como instalar o módulo Az PowerShell, confira Instalar o módulo Az PowerShell do Azure. Para determinar a versão do módulo Az PowerShell instalada no seu computador, execute o comando a seguir a partir do PowerShell.

Get-InstalledModule -Name Az

Etapa 1: criar e configurar um servidor e um banco de dados da série DC

Nesta etapa, você criará um servidor lógico do Banco de Dados SQL do Azure e um banco de dados usando o hardware da série DC, necessário para Always Encrypted com enclaves seguros. Para obter mais informações, confira Série DC.

  1. Navegue até a página Selecionar uma opção de implantação do SQL.

  2. Se você ainda não entrou no portal do Azure, entre quando solicitado.

  3. Em Bancos de dados SQL, deixe Tipo de recurso definido como Banco de dados individual e selecione Criar.

    Captura de tela do portal do Azure mostrando a opção de implantação Adicionar ao SQL do Azure.

  4. Na guia Noções básicas do formulário Criar Banco de Dados SQL, em Detalhes do projeto, selecione a Assinatura do Azure desejada.

  5. Para Grupo de recursos, selecione Criar, insira um nome para o grupo de recursos e selecione OK.

  6. Para Nome do banco de dados, insira ContosoHR.

  7. Para Servidor, selecione Criar e preencha o formulário Novo servidor com os seguintes valores:

    • Nome do servidor: Insira mysqlserver e adicione caracteres para que o nome seja exclusivo. Não podemos fornecer um nome do servidor exato a ser usado porque os nomes dos servidores devem ser globalmente exclusivos para todos os servidores no Azure, não apenas para uma assinatura. Portanto, insira algo como mysqlserver135, e o portal informará se esse nome está disponível ou não.
    • Localização: Selecione uma localização na lista suspensa.

      Importante

      Você precisa selecionar uma localização (uma região do Azure) que dê suporte para o hardware da série DC e o Atestado do Microsoft Azure. Para obter a lista de regiões que dão suporte à série CD, confira Disponibilidade da série DC. Aqui está a disponibilidade regional do Atestado do Microsoft Azure.

    • Método de autenticação: selecione Usar autenticação do SQL
    • Logon de administrador do servidor: insira um nome de logon de administrador, por exemplo: azureuser.
    • Senha: insira uma senha que atenda aos requisitos e insira-a novamente no campo Confirmar senha.
    • Selecione OK.
  8. Deixe Deseja usar o pool elástico do SQL definido como Não.

  9. Em Computação + armazenamento, selecione Configurar banco de dados e clique em Alterar configuração.

    Captura de tela da configuração de hardware do portal do Azure e de onde configurar o banco de dados.

  10. Selecione a configuração de hardware Série DC e selecione OK.

    Captura de tela do portal do Azure mostrando como Configurar o banco de dados da série DC.

  11. Selecione Aplicar.

  12. De volta à guia Básico, verifique se Computação + armazenamento está definido como Uso geral, DC, 2 vCores, 32 GB de armazenamento.

  13. Para Redundância de armazenamento de backup, selecione Armazenamento de backup com redundância local.

  14. Selecione Avançar: Rede na parte inferior da página.

    Captura de tela do portal do Azure mostrando como Configurar o banco de dados da série DC – noções básicas.

  15. Na guia Rede, para Método de conectividade, selecione Ponto de extremidade público.

  16. Para Regras de firewall, defina Adicionar endereço IP do cliente atual como Sim. Deixe Permitir que serviços e recursos do Azure acessem este servidor definido como Não.

  17. Para Política de conexão, deixe a Política de conexão como Padrão – Usa a política de redirecionamento para todas as conexões de cliente originadas no Azure e no Proxy para todas as conexões de cliente originadas fora do Azure

  18. Para Conexões criptografadas, deixe a Versão mínima do TLS como TLS 1.2.

  19. Selecione Revisar + criar na parte inferior da página.

    Captura de tela da guia de rede Banco de Dados SQL do portal do Azure.

  20. Na página Examinar + criar, após examinar, selecione Criar.

Etapa 2: Configurar um provedor de atestado

Nesta etapa, você vai criar e configurar um provedor de atestado no Atestado do Microsoft Azure. Isso é necessário para atestar o enclave seguro que seu banco de dados usa.

  1. Navegue até a página Criar provedor de atestado.

  2. Na página Criar provedor de atestado, forneça as seguintes entradas:

    • Assinatura: escolha a assinatura na qual você criou o servidor lógico do SQL do Azure.
    • Grupo de recursos: escolha o grupo de recursos no qual você criou o servidor lógico do SQL do Azure.
    • Nome: insira myattestprovider e adicione caracteres para que o nome seja exclusivo. Não podemos informar o nome exato de um provedor de atestado porque os nomes precisam ser exclusivos globalmente. Agora digite algo como myattestprovider12345, e o portal informará se esse nome está disponível ou não.
    • Local: escolha o mesmo local que seu servidor lógico do SQL do Azure.
    • Arquivo de certificados de signatário de política: deixe este campo vazio, pois você configurará uma política sem assinatura.
  3. Depois de inserir as informações necessárias, selecione Examinar + criar.

    Captura de tela do menu Criar provedor de atestado do portal do Azure.

  4. Selecione Criar.

  5. Depois de criar o provedor de atestado, selecione Ir para o recurso.

  6. Na guia Visão geral do provedor de atestado, copie o valor da propriedade URI do Atestado para a área de transferência e salve-o em um arquivo. Essa é a URL de atestado que você usará nas etapas posteriores.

    Captura de tela da URL de atestado do portal do Azure.

  7. Selecione Política no menu de recursos no lado esquerdo da janela ou no painel inferior.

  8. Configure Tipo de Atestado como SGX-IntelSDK.

  9. Selecione Configurar no menu superior.

    Captura de tela da configuração da política de atestado no portal do Azure.

  10. Configure Formato da Política como Texto. Mantenha a configuração Opções de política definida como Inserir política.

  11. No campo Texto da política, substitua a política padrão pela política abaixo. Para obter informações sobre a política abaixo, confira Criar e configurar um provedor de atestado.

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();
};

  1. Clique em Salvar.

    Captura de tela da edição de uma política de atestado no portal do Azure.

  2. Selecione Atualizar no menu superior para ver a política configurada.

Etapa 3: Preencher seu banco de dados

Nesta etapa, você criará uma tabela e a preencherá com alguns dados que posteriormente criptografará e consultará.

  1. Abra o SSMS e conecte-se ao banco de dados ContosoHR no servidor lógico do SQL do Azure que você criou sem o Always Encrypted habilitado na conexão de banco de dados.

    1. Na caixa de diálogo Conectar ao servidor, especifique o nome totalmente qualificado do seu servidor (por exemplo, myserver135.database.windows.net) e insira o nome de usuário do administrador e a senha que você especificou quando criou o servidor.

    2. Clique em Opções >> e selecione a guia Propriedades da Conexão. Escolha o banco de dados ContosoHR (não o banco de dados master padrão).

    3. Selecione a guia Always Encrypted.

    4. Verifique se a caixa de seleção Habilitar o Always Encrypted (criptografia de coluna)não está selecionada.

      Captura de tela de Conectar-se ao servidor usando SSMS sem Always Encrypted habilitado.

    5. Selecione Conectar.

  2. Crie uma nova tabela denominada Funcionários.

    CREATE SCHEMA [HR];
    GO
    
    CREATE TABLE [HR].[Employees]
    (
        [EmployeeID] [int] IDENTITY(1,1) NOT NULL,
        [SSN] [char](11) NOT NULL,
        [FirstName] [nvarchar](50) NOT NULL,
        [LastName] [nvarchar](50) NOT NULL,
        [Salary] [money] NOT NULL
    ) ON [PRIMARY];
    GO
    
  3. Adicione alguns registros de funcionários à tabela Funcionários.

    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('795-73-9838'
            , N'Catherine'
            , N'Abel'
            , $31692);
    
    INSERT INTO [HR].[Employees]
            ([SSN]
            ,[FirstName]
            ,[LastName]
            ,[Salary])
        VALUES
            ('990-00-6818'
            , N'Kim'
            , N'Abercrombie'
            , $55415);
    

Etapa 4: Provisionar chaves habilitadas para enclave

Nesta etapa, você criará uma chave mestra de coluna e uma chave de criptografia de coluna que permitem computações de enclave.

  1. Usando a instância de SSMS da etapa anterior, no Pesquisador de Objetos, expanda o banco de dados e navegue até Segurança>Chaves Always Encrypted.

  2. Provisione uma nova chave mestra da coluna habilitada para enclave:

    1. Clique com o botão direito do mouse em Chaves Always Encrypted e selecione Nova chave mestra da coluna... .
    2. Insira um nome para a nova chave mestra de coluna: CMK1.
    3. Verifique se Permitir cálculos de enclave está selecionado. (Essa opção estará selecionada por padrão se um enclave seguro estiver habilitado para o banco de dados. Ela deve estar habilitada, pois seu banco de dados usa a configuração de hardware da série DC.)
    4. Selecione Azure Key Vault (recomendado) ou Repositório de Certificados do Windows (Usuário Atual ou Computador Local).
      • Se você selecionar o Azure Key Vault, entre no Azure, escolha uma assinatura do Azure que contenha o cofre de chaves que deseja usar e selecione o cofre. Clique em Gerar Chave para criar uma chave.
      • Se você selecionar o Repositório de Certificados do Windows, clique no botão Gerar Certificado para criar um certificado. Captura de tela da seleção permitir cálculos de enclave no SSMS ao criar uma nova chave mestra de coluna.
    5. Selecione OK.
  3. Crie uma nova chave de criptografia de coluna habilitada para enclave:

    1. Clique com o botão direito do mouse em Chaves Always Encrypted e selecione Nova chave de criptografia da coluna.
    2. Insira um nome para a nova chave de criptografia da coluna: CEK1.
    3. No menu suspenso Chave mestra da coluna, selecione a chave mestra da coluna criada nas etapas anteriores.
    4. Selecione OK.

Etapa 5: Criptografar algumas colunas em vigor

Nesta etapa, você criptografará os dados armazenados nas colunas SSN e Salário dentro do enclave do lado do servidor e testará uma consulta SELECT nos dados.

  1. Abra uma nova instância do SSMS e conecte-se ao seu banco de dados com o Always Encrypted habilitado para a conexão de banco de dados.

    1. Inicie uma nova instância do SSMS.

    2. Na caixa de diálogo Conectar ao servidor, especifique o nome totalmente qualificado do seu servidor (por exemplo, myserver135.database.windows.net) e insira o nome de usuário do administrador e a senha que você especificou quando criou o servidor.

    3. Clique em Opções >> e selecione a guia Propriedades da Conexão. Escolha o banco de dados ContosoHR (não o banco de dados master padrão).

    4. Selecione a guia Always Encrypted.

    5. Marque a caixa de seleção Habilitar Always Encrypted (criptografia de coluna).

    6. Selecione Habilitar enclaves seguros. (Esta etapa se aplica ao SSMS 19 ou posterior.)

    7. Defina Protocolo como Atestado do Microsoft Azure. (Esta etapa se aplica ao SSMS 19 ou posterior.)

    8. Especifique a URL de atestado de enclave que você obteve seguindo as etapas na Etapa 2: Configurar um provedor de atestado. Confira a captura de tela abaixo.

      Captura de tela da guia Always Encrypted da caixa de diálogo Conectar-se ao servidor do SSMS, com o atestado habilitado.

    9. Selecione Conectar.

    10. Se precisar habilitar a parametrização para consultas do Always Encrypted, selecione Habilitar.

  2. Usando a mesma instância do SSMS (com o Always Encrypted habilitado), abra uma nova janela de consulta e criptografe as colunas SSN e Salário executando as instruções abaixo.

    ALTER TABLE [HR].[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
    WITH
    (ONLINE = ON);
    
    ALTER TABLE [HR].[Employees]
    ALTER COLUMN [Salary] [money]
    ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
    WITH
    (ONLINE = ON);
    
    ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
    

    Observação

    Observe a instrução ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE para limpar o cache do plano de consulta para o banco de dados no script acima. Depois de alterar a tabela, você precisará limpar nos planos todos os lotes e os procedimentos armazenados que acessam a tabela, a fim de atualizar as informações de criptografia de parâmetros.

  3. Para verificar se agora as colunas SSN e Salário estão criptografadas, abra uma nova janela de consulta na instância do SSMS sem Always Encrypted habilitado para a conexão de banco de dados e execute a instrução abaixo. A janela de consulta deve retornar valores criptografados nas colunas SSN e Salário. Se você executar a mesma consulta usando a instância do SSMS com o Always Encrypted habilitado, você deve ver os dados descriptografados.

    SELECT * FROM [HR].[Employees];
    

Etapa 6: Executar consultas avançadas em colunas criptografadas

Você poderá executar consultas avançadas nas colunas criptografadas. Algum processamento de consulta será executado dentro de seu enclave do lado do servidor.

  1. Na instância do SSMS com Always Encrypted habilitado, verifique se a parametrização de Always Encrypted também está habilitada.

    1. Selecione Ferramentas no menu principal do SSMS.
    2. Selecione Opções... .
    3. Navegue para Execução da Consulta>SQL Server>Avançado.
    4. A opção Habilitar Parametrização do Always Encrypted precisa estar marcada.
    5. Selecione OK.
  2. Abra uma nova janela de consulta, cole a consulta abaixo e execute-a. A consulta deve retornar valores de texto sem formatação e linhas que atendem a critérios de pesquisa especificados.

    DECLARE @SSNPattern [char](11) = '%6818';
    DECLARE @MinSalary [money] = $1000;
    SELECT * FROM [HR].[Employees]
    WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
    
  3. Tente a mesma consulta novamente na instância do SSMS que não tem o Always Encrypted habilitado. Uma falha ocorrerá.

Próximas etapas

Depois de concluir este tutorial, você pode ir para um dos seguintes tutoriais:

Consulte também