Partilhar via


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

Aplica-se a: do Banco de Dados SQL do Azure

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

  • Como criar um ambiente para testar e avaliar o Always Encrypted com enclaves Intel SGX.
  • Como criptografar dados no próprio local e realizar consultas avançadas e confidenciais em colunas criptografadas usando o SQL Server Management Studio (SSMS).

Pré-requisitos

Requisitos do PowerShell

Observação

Os pré-requisitos listados nesta seção se aplicam somente se você optar por usar o PowerShell para algumas das etapas deste tutorial. Se você planeja usar o portal do Azure, pode ignorar esta seção.

É necessário o módulo Az PowerShell versão 9.3.0 ou posterior. Para obter detalhes sobre como instalar o módulo Az PowerShell, consulte Instalar o módulo Azure Az PowerShell. Para determinar a versão do módulo Az PowerShell instalada em sua máquina, execute o seguinte comando 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 novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados usando hardware da série DC, necessário para Always Encrypted com enclaves seguros. Para obter mais informações, consulte a série DC .

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

  2. Se você ainda não estiver conectado ao portal do Azure, entre quando solicitado.

  3. Em bancos de dados SQL, deixe Tipo de recurso definido como banco de dados único e selecione Criar.

  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 o grupo de recursos , selecione Criar novo, introduza um nome para o seu grupo de recursos e selecione OK.

  6. Para Nome do banco de dados insira ContosoHR.

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

    • Nome do servidor: Digite mysqlservere adicione alguns caracteres para exclusividade. Não podemos fornecer um nome de servidor exato para usar porque os nomes de servidor devem ser globalmente exclusivos para todos os servidores no Azure, não apenas exclusivos dentro de uma assinatura. Então digite algo como mysqlserver135, e o portal permite que você saiba se está disponível ou não.
    • Localização: Selecione um local na lista suspensa.

      Importante

      Você precisa selecionar um local (uma região do Azure) que ofereça suporte ao hardware da série DC e ao Atestado do Microsoft Azure. Para obter a lista de regiões que suportam a série DC, consulte a disponibilidade da série DC. Aqui está a disponibilidade regional do Atestado Microsoft Azure.

    • Método de autenticação: Selecionar Utilizar a Autenticação SQL
    • Início de sessão de administrador do servidor: Introduza um nome de início de sessão de administrador, por exemplo: azureuser.
    • Palavra-passe: Introduza uma palavra-passe que cumpra os requisitos e introduza-a novamente no campo Confirmar palavra-passe.
    • Selecione OK.
  8. Deixe Deseja usar o pool elástico SQL definido como Sem.

  9. Em Computação + armazenamento, selecione Configurar base de dadose depois selecione Alterar configuração.

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

  10. Selecione a configuração de hardware da série DC e, em seguida, selecione OK.

  11. Selecione Aplicar.

  12. De volta ao separador Noções básicas, verifique se Computação + armazenamento está definido para Finalidade Geral, DC, 2 vCores, 32 GB de armazenamento.

  13. Para redundância de armazenamento de backup selecione armazenamento de backup localmente redundante.

  14. Selecione Next: Networking na parte inferior da página.

    Captura de ecrã do portal do Azure, a mostrar Configurar base de dados da série DC - noções básicas.

  15. Na aba Rede, para o método de conectividade, selecione o Público ponto de extremidade.

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

  17. Para a política de conexão, deixe a política de conexão para Padrão - Usa a política de Redirecionamento para todas as conexões de cliente originadas internamente ao Azure e Proxy para todas as conexões de cliente originadas externamente ao Azure

  18. Para conexões criptografadas, deixe versão mínima TLS para TLS 1.2.

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

    Captura de ecrã do portal do Azure Criar Base de Dados SQL, separador rede.

  20. Na página Rever + criar, após a revisão, selecione a opção Criar.

Etapa 2: Configurar um provedor de atestado

Nesta etapa, você 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é à página Criar provedor de atestação.

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

    • Subscrição: escolha a mesma subscrição em que criou o servidor lógico SQL do Azure.
    • Grupo de Recursos: Escolha o mesmo grupo de recursos no qual você criou o servidor lógico SQL do Azure.
    • Nome: Digite myattestprovidere adicione alguns caracteres para exclusividade. Não podemos fornecer um nome exato do provedor de atestado para usar porque os nomes devem ser globalmente exclusivos. Então, digite algo como myattestprovider12345, e o portal informa se ele está disponível ou não.
    • Local: Escolha o mesmo local que seu servidor lógico SQL do Azure.
    • arquivo de certificados do signatário da política: deixe este campo vazio, pois você configurará uma política não assinada.
  3. Depois de fornecer as informações necessárias, selecione Revisão + criar.

    Captura de ecrã do menu Criar fornecedor de atestação do portal do Azure.

  4. Selecione Criar.

  5. Depois que o provedor de atestado for criado, selecione Ir para o recurso.

  6. Na guia Visão Geral do provedor de atestado, copie o valor da propriedade Attest URI para a área de transferência e salve o valor em um arquivo. Este é o URL de atestado, que você precisará em etapas posteriores.

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

  8. Defina Tipo de Atestado como SGX-IntelSDK.

  9. Selecione Configurar no menu superior.

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

  10. Defina Formato de Política para Texto. Deixe opções Política definidas como Inserir política.

  11. No campo de texto Política , substitua a política padrão pela política a seguir. Para obter mais informações, veja Criar e configurar um fornecedor 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();
    };
    
  12. Selecione Guardar.

    Captura de ecrã a mostrar a edição de uma política de atestado no portal do Azure.

  13. Selecione Atualizar no topo do menu para visualizar a política já 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 SQL do Azure que criou sem ativar Always Encrypted na conexão à base 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. Selecione Opções >> e selecione a guia Propriedades da Conexão. Certifique-se de selecionar o banco de dados ContosoHR (não o banco de dados padrão master).

    3. Selecione o separador Sempre Encriptado.

    4. Verifique se a caixa de seleção Ativar sempre criptografado (criptografia de coluna)não está marcada.

      Captura de ecrã de Ligar ao Servidor utilizando o SSMS sem a opção Sempre Encriptado ativada.

    5. Selecione Conectar.

  2. Crie uma nova tabela, chamada Employees.

    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 à Employees tabela.

    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 cálculos de enclave.

  1. Usando a instância do SSMS da etapa anterior, em Explorador de Objetos, expanda a sua base de dados e navegue até Segurança>Chaves Sempre Criptografadas.

  2. Configure uma nova chave mestra de coluna com suporte para enclave.

    1. Clique com o botão direito do mouse Chaves Sempre Criptografadas e selecione Nova Chave Mestra de Coluna....
    2. Insira um nome para a nova chave mestra de coluna: CMK1.
    3. Verifique se a opção Permitir cálculos de enclave está selecionada. (É selecionado por padrão se um enclave seguro estiver habilitado para o banco de dados. Ele deve ser habilitado, pois seu banco de dados usa a configuração de hardware da série DC.)
    4. Selecione do Cofre da Chave do Azure (recomendado) ou do Repositório de Certificados do Windows ( de Usuário Atual ou de Máquina Local ).
      • Se selecionar Azure Key Vault, inicie sessão no Azure, selecione uma subscrição do Azure que contenha um cofre de chaves que pretende utilizar e selecione o seu cofre de chaves. Selecione Gerar chave para criar uma nova chave.
      • Se selecionar o Repositório de Certificados do Windows, selecione o botão Gerar Certificado para criar um novo certificado. Captura de ecrã da seleção de 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 com suporte para enclave

    1. Clique com o botão direito do rato em Chaves Sempre Encriptadas e selecione Nova Chave de Encriptação de Coluna .
    2. Insira um nome para a nova chave de criptografia de coluna: CEK1.
    3. Na lista suspensa Chave mestra de coluna, selecione a chave mestra de coluna que criou nas etapas anteriores.
    4. Selecione OK.

Etapa 5: criptografar algumas colunas no local

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

  1. Abra uma nova instância do SSMS e conecte-se à sua de banco de dados com 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, <server name>.database.windows.net) e digite o nome de usuário do administrador e a senha que você especificou quando criou o servidor.

    3. Selecione Opções >> e selecione a guia Propriedades da Conexão. Certifique-se de selecionar o banco de dados ContosoHR (não o banco de dados padrão master).

    4. Selecione o separador Sempre Encriptado.

    5. Marque a caixa de seleção Ativar Sempre Criptografado (criptografia de coluna).

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

    7. Defina Protocol como Microsoft Azure Attestation. (Esta etapa se aplica ao SSMS 19 ou posterior.)

    8. Especifique a URL de atestado de enclave que você obteve seguindo as etapas em Etapa 2: Configurar um provedor de atestado.

      Captura de ecrã da janela de diálogo Ligar ao Servidor do SSMS, separador Sempre Encriptado, com atestado ativado.

    9. Selecione Conectar.

    10. Se lhe for pedido para ativar a Parametrização para consultas Sempre Encriptadas, selecione Ativar.

  2. Usando a mesma instância do SSMS (com Always Encrypted habilitado), abra uma nova janela de consulta e criptografe as SSN colunas e Salary executando as seguintes instruções T-SQL:

    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

    Note 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ê precisa limpar os planos para todos os lotes e procedimentos armazenados que acessam a tabela para atualizar as informações de criptografia de parâmetros.

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

    SELECT * FROM [HR].[Employees];
    

Etapa 6: Executar consultas avançadas em colunas criptografadas

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

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

    1. Selecione Ferramentas no menu principal do SSMS.
    2. Selecione Opções....
    3. Navegue até Execução de Consulta>SQL Server>Avançado.
    4. Certifique-se de que a opção Habilitar Parametrização para Always Encrypted está marcada.
    5. Selecione OK.
  2. Abra uma nova janela de consulta, cole na consulta a seguir e execute. A consulta deve retornar valores de texto sem formatação e linhas que atendam aos 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 Always Encrypted habilitado. Deve ocorrer uma falha.

Tutoriais

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