Tutorial: Introdução ao Always Encrypted

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Este tutorial ensina como começar a usar o Always Encrypted. Ela mostrará a você:

  • Como criptografar colunas selecionadas em seu banco de dados.
  • Como consultar colunas criptografadas.

Pré-requisitos

Para este tutorial, é necessário:

Etapa 1: Criar e preencher o esquema de banco de dados

Nesta etapa, você vai criar o esquema de RH e a tabela Funcionários. Então, preencherá a tabela com alguns dados.

  1. Conecte-se ao banco de dados. Para obter instruções sobre como se conectar a um banco de dados do SSMS, confira Guia de início rápido: conectar e consultar um Banco de Dados SQL do Azure ou uma Instância Gerenciada de SQL do Azure usando o SQL Server Management Studio (SSMS) ou Guia de início rápido: conectar e consultar uma instância do SQL Server usando o SQL Server Management Studio (SSMS).

  2. Abra uma nova janela de consulta para o banco de dados ContosoHR.

  3. Cole e execute as instruções abaixo para criar uma 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];
    
  4. Cole e execute as instruções abaixo para adicionar 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 2: criptografar colunas

Nesta etapa, você provisionará uma chave mestra de coluna e uma chave de criptografia de coluna para Always Encrypted. Em seguida, você vai criptografar as colunas SSN e Salário na tabela Funcionários.

O SSMS fornece um assistente que ajuda você a configurar facilmente o Always Encrypted ao configurar a chave mestra da coluna e a chave de criptografia de coluna e criptografar colunas selecionadas.

  1. No Pesquisador de Objetos, expanda Bancos de Dados>ContosoHR>Tabelas.

  2. Clique com o botão direito do mouse na tabela Funcionários e selecione Criptografar Colunas para abrir o Assistente Always Encrypted.

    Screenshot of opening the Always Encrypted Wizard.

  3. Selecione Avançar na página Introdução do assistente.

  4. Na página Seleção de coluna.

    1. Selecione as colunas SSN e Salário. Escolha criptografia determinística para a coluna SSN e criptografia aleatória para a coluna Salário. A criptografia determinística oferece suporte a consultas, como pesquisas de busca de ponto que envolvem comparações de igualdade em colunas criptografadas. A criptografia aleatória não dá suporte a cálculos em colunas criptografadas.
    2. Deixe CEK-Auto1 (Novo) como a chave de criptografia de coluna para as duas colunas. Essa chave ainda não existe e o assistente vai gerá-la.
    3. Selecione Avançar.

    Screenshot of the Always Encrypted Wizard column selection.

  5. Na página Configuração da Chave Mestra, configure uma nova chave mestra de coluna que será gerada pelo assistente. Primeiro, você precisa selecionar onde deseja armazenar a chave mestra de coluna. O assistente dá suporte a dois tipos de repositório de chaves:

    • Azure Key Vault – recomendado se o banco de dados está no Azure
    • Repositório de certificados do Windows

    Em geral, o Azure Key Vault é a opção recomendada, especialmente se o banco de dados está no Azure.

    • Para usar o Azure Key Vault:

      1. Selecione Cofre de Chaves do Azure.
      2. Selecione Entrar e conclua a entrada no Azure.
      3. Depois de entrar, a página exibirá a lista de assinaturas e cofres de chaves aos quais você tem acesso. Selecione a assinatura do Azure que contém o cofre de chaves que você quer usar.
      4. Selecione seu cofre de chaves.
      5. Selecione Avançar.

      Screenshot of the Always Encrypted Wizard master key selection using Azure Key Vault.

    • Para usar o repositório de certificados do Windows:

      1. Selecione Repositório de certificados do Windows.

      2. Deixe a seleção padrão de Usuário Atual ~ isso instruirá o assistente a gerar um certificado (sua nova chave mestra de coluna) no repositório Usuário Atual.

        Screenshot of the Always Encrypted Wizard master key selection using the certificate store.

      3. Selecione Avançar.

  6. Na página Configurações de Criptografia no Local, nenhuma configuração adicional é necessária porque o banco de dados não tem um enclave habilitado. Selecione Avançar.

  7. Na página Configurações de Execução, você será perguntado se deseja continuar com a criptografia ou gerar um script do PowerShell para ser executado depois. Deixe as configurações padrão e selecione Avançar.

  8. Na página Resumo, o assistente informa sobre as ações que ele vai executar. Verifique se todas as informações estão corretas e selecione Concluir.

  9. Na página Resultados, você pode monitorar o progresso das operações do assistente. Aguarde até todas as operações serem concluídas com êxito e selecione Fechar.

    Screenshot of the Always Encrypted Wizard summary.

  10. (Opcional) Explore as alterações feitas pelo assistente ao banco de dados.

    1. Expanda ContosoHR>Segurança>Chaves Always Encrypted para explorar os objetos de metadados para a chave mestra de coluna e a criptografia de coluna que o assistente criou.

    2. Também é possível executar as consultas abaixo nas exibições do catálogo do sistema que contêm metadados importantes.

      SELECT * FROM sys.column_master_keys;
      SELECT * FROM sys.column_encryption_keys
      SELECT * FROM sys.column_encryption_key_values
      
    3. No Pesquisador de Objetos, clique com o botão direito do mouse na tabela Funcionários e selecione Tabela de Scripts como>CRIAR para>Nova Janela do Editor de Consultas. Isso abrirá uma nova janela de consulta com a instrução CREATE TABLE para a tabela Employees. Observe a cláusula ENCRYPTED WITH que aparece nas definições das colunas SSN e Salário.

    4. Você também pode executar a consulta abaixo em sys.columns para recuperar metadados de criptografia em nível de coluna para as duas colunas criptografadas.

      SELECT
      [name]
      , [encryption_type]
      , [encryption_type_desc]
      , [encryption_algorithm_name]
      , [column_encryption_key_id]
      FROM sys.columns
      WHERE [encryption_type] IS NOT NULL;
      

Etapa 3: Consultar colunas criptografadas

  1. Conecte-se ao banco de dados com o Always Encrypted desabilitado para sua conexão.

    1. Abra uma nova janela de consulta.
    2. Clique com o botão direito do mouse em qualquer lugar na janela de consulta e selecione Conexão>Alterar conexão. Isso abrirá a caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
    3. Selecione Opções<<. Isso mostrará guias adicionais na caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
    4. Selecione a guia Always Encrypted.
    5. A opção Habilitar o Always Encrypted (criptografia de coluna) não deve estar selecionada.
    6. Selecione Conectar.

    Screenshot of the SSMS connection option for Always Encrypted disabled.

  2. Cole e execute a consulta a seguir. A consulta deve retornar dados criptografados binários.

    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

    Screenshot of cipher text results from encrypted columns.

  3. Conectar-se ao banco de dados com o Always Encrypted habilitado para a conexão.

    1. Clique com o botão direito do mouse em qualquer lugar na janela de consulta e selecione Conexão>Alterar conexão. Isso abrirá a caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
    2. Selecione Opções<<. Isso mostrará guias adicionais na caixa de diálogo Conectar-se ao Mecanismo de Banco de Dados.
    3. Selecione a guia Always Encrypted.
    4. Selecione Habilitar Always Encrypted (criptografia de coluna).
    5. Selecione Conectar.

    Screenshot of the SSMS connection option for Always Encrypted enabled.

  4. Execute a mesma consulta novamente. Como você está conectado ao Always Encrypted habilitado para sua conexão de banco de dados, o driver cliente no SSMS tentará descriptografar os dados armazenados em ambas as colunas criptografadas. Se você usar o Azure Key Vault, poderá ser solicitado que você entre no Azure.

    Screenshot of plaintext results from encrypted columns.

  5. Habilitar Parametrização de Always Encrypted. Esse recurso permite que você execute consultas que filtram dados por colunas criptografadas (ou inserir dados em colunas criptografadas).

    1. Selecione Consultar no menu principal do SSMS.
    2. Selecione Opções de Consulta....
    3. Navegue para Execução>Avançado.
    4. Marque a opção Habilitar parametrização para Always Encrypted.
    5. Selecione OK.

    Screenshot enabling parameterization in an existing query window.

  6. Cole e execute a consulta abaixo, que filtra os dados pela coluna SSN criptografada. A consulta deve retornar uma linha contendo valores de texto não criptografado.

    DECLARE @SSN [char](11) = '795-73-9838'
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    WHERE [SSN] = @SSN
    
  7. Opcionalmente, se você estiver usando o Azure Key Vault configurado com o modelo de permissões de política de acesso, siga as etapas abaixo para ver o que acontece quando um usuário tenta recuperar dados de texto não criptografado de colunas criptografadas sem ter acesso à chave mestra de coluna que protege os dados.

    1. Remova a permissão de chave unwrap para si mesmo na política de acesso do seu cofre de chaves. Para obter mais informações, confira Atribuir uma política de acesso do Key Vault.
    2. Como o driver do cliente no SSMS armazena em cache as chaves de criptografia de coluna adquiridas de um cofre de chaves por duas horas, feche o SSMS e abra-o novamente. Isso vai garantir que o cache de chaves esteja vazio.
    3. Conectar-se ao banco de dados com o Always Encrypted habilitado para a conexão.
    4. Cole e execute a consulta a seguir. A consulta deve falhar com a mensagem de erro indicando que você não tem a permissão unwrap necessária.
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Próximas etapas

Confira também