Partilhar via


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

Aplica-se a: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 usando enclaves VBS (segurança baseada em virtualização). Irá mostrar-lhe:

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

Pré-requisitos

  • Uma subscrição ativa do Azure. Se não tiver uma subscrição, crie uma conta gratuita. Você precisa ser um membro da função de Colaborador ou da função de Proprietário para que a assinatura possa criar recursos.
  • Opcional, mas recomendado para armazenar sua chave mestra de coluna para Always Encrypted: um cofre de chaves no Cofre de Chaves do Azure. Para obter informações sobre como criar um cofre de chaves, consulte Guia de início rápido: criar um cofre de chaves usando o portal do Azure.

Requisitos da ferramenta

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

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

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.

Vá para Guia de início rápido: criar um único banco de dados - Banco de Dados SQL do Azure e siga as instruções na seção Criar um único banco de dados para criar um novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados.

Importante

Certifique-se de criar 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 dados preferredEnclaveTypecomo 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 Sempre criptografado.

  4. Defina Ativar 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 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 SQL do Azure que você criou sem 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. 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ãomaster).

    3. Selecione a guia Sempre criptografado .

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

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

    5. Selecione Ligar.

  2. Crie uma nova tabela, chamada 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 cálculos de enclave.

  1. Usando a instância do SSMS da etapa anterior, no Pesquisador de Objetos, expanda seu banco de dados e navegue até Chaves Sempre Criptografadas de Segurança>.

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

    1. Clique com o botão direito do mouse em Sempre Chaves Criptografadas e selecione Nova Chave Mestra de Coluna....
    2. Insira um nome para a nova chave mestra da coluna: CMK1.
    3. Verifique se a opção Permitir cálculos de enclave está selecionada. (Ele é 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 Azure Key Vault (recomendado) ou Windows Certificate Store (Usuário Atual ou 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 você selecionar Repositório de Certificados do Windows, selecione o botão Gerar Certificado para criar um novo 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 Sempre Chaves Criptografadas e selecione Nova Chave de Criptografia 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 criada nas etapas anteriores.
    4. Selecione OK.

Etapa 5: criptografar algumas colunas no local

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

  1. Abra uma nova instância do SSMS e conecte-se ao banco de dados com o Always Encrypted habilitado para a conexão do 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. 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ãomaster).

    4. Selecione a guia Sempre criptografado .

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

    6. Selecione Ativar enclaves seguros.

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

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

    8. Selecione Ligar.

    9. 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 colunas SSN e Salary 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;
    

    Nota

    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ê 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 Salário agora 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 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 Consultas>SQL Server>Advanced.
    4. Verifique se a opção Ativar parametrização para sempre criptografado está marcada.
    5. Selecione OK.
  2. Abra uma nova janela de consulta, cole na consulta abaixo 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.

Próximos passos

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

Consulte também