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

Aplica-se a:Banco de Dados SQL do Azure

Esse tutorial ensina você a começar a usar o Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure com enclaves VBS (segurança baseada em virtualização). Ela mostrará a você:

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

Pré-requisitos

Requisitos da ferramenta

O SSMS (SQL Server Management Studio) é necessário para esse tutorial. Você pode optar por usar o PowerShell ou a CLI do Azure para habilitar enclaves VBS.

Baixe a versão mais recente do SSMS (SQL Server Management Studio).

Etapa 1: criar e configurar um servidor e um banco de dados

Nesta etapa, você criará um novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados.

Acesse Início Rápido: Criar um banco de dados individual – Banco de Dados SQL do Azure e siga as instruções na seção Criar um banco de dados individual para criar um novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados.

Importante

Crie um banco de dados vazio com o nome ContosoHR (e não um banco de dados de exemplo).

Etapa 2: Habilitar um enclave VBS

Nesta etapa, você habilitará um enclave VBS no banco de dados, que é necessário para Always Encrypted com enclaves seguros. Para habilitar enclaves VBS em seu banco de dados, você precisa definir a propriedade de banco de dadospreferredEnclaveType como VBS.

  1. Abra o portal do Azure e localize o banco de dados para o qual você deseja habilitar enclaves seguros.

  2. Nas configurações de segurança, selecione Criptografia de dados.

  3. No menu Criptografia de Dados, selecione a guia Always Encrypted.

  4. Defina Habilitar enclaves seguros como ATIVADO. Se já estiver definido como ATIVADO, prossiga com a próxima etapa.

    Screenshot of enabling secure enclaves on an existing database in the Azure portal.

  5. Selecione Salvar para salvar sua configuração do Always Encrypted.

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.

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    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 – a opção 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. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    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.

    7. Defina Protocolo como Nenhum. Confira a captura de tela abaixo.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation protocol set to None.

    8. Selecione Conectar.

    9. 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

    A instrução ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE limpa 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