Partilhar via


Tutorial: Começar com o Always Encrypted

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

Este tutorial ensina-te como começar com o Always Encrypted. Irá mostrar-lhe:

  • Como encriptar colunas selecionadas na sua base de dados.
  • Como consultar colunas encriptadas.

Pré-requisitos

Para este tutorial, precisas de:

Passo 1: Criar e preencher o esquema da base de dados

Neste passo, irá criar o esquema de RH e a tabela de Colaboradores . Depois, vais preencher a tabela com alguns dados.

  1. Liga-te à tua base de dados. Para instruções sobre como se ligar a uma base de dados a partir do SSMS, consulte Quickstart: Conecte e consulte uma Base de Dados SQL Azure ou uma Instância Gerida Azure SQL usando SQL Server Management Studio (SSMS) ou Quickstart: Conecte e consulte uma instância SQL Server usando SQL Server Management Studio (SSMS).

  2. Abra uma nova janela de consulta para a base de dados ContosoHR .

  3. Cole e execute as instruções abaixo para criar 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];
    
  4. Cole e execute as instruções abaixo para adicionar alguns registos de funcionários à tabela de Colaboradores .

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

Passo 2: Encriptar colunas

Neste passo, irá provisionar uma chave principal de coluna e uma chave de criptografia de coluna para Always Encrypted. Depois, vais encriptar as colunas SSN e Salário na tabela de Empregados .

O SSMS fornece um assistente que o ajuda a configurar facilmente o Always Encrypted, configurando uma chave mestra de coluna, uma chave de encriptação de colunas, e a encriptação de colunas selecionadas.

  1. No Explorador de Objetos, expanda Bases de Dados>ContosoHR>Tabelas.

  2. Clique com o botão direito na tabela Funcionários e selecione Encriptar Colunas para abrir o assistente Sempre Encriptado.

    Captura de ecrã ao abrir o Assistente Sempre Encriptado.

  3. Selecione Próximo na página de Introdução do assistente.

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

    1. Selecione as colunas SSN e Salário . Escolha encriptação determinística para a coluna SSN e encriptação aleatória para a coluna Salário . A encriptação determinística suporta consultas, tais como pesquisas de pesquisa por ponto que envolvem comparações de igualdade em colunas encriptadas. A encriptação aleatória não suporta quaisquer cálculos em colunas encriptadas.
    2. Deixe CEK-Auto1 (Novo) como chave de encriptação da coluna para ambas as colunas. Esta chave ainda não existe e será gerada pelo mago.
    3. Selecione Avançar.

    Captura de ecrã da seleção de colunas do Assistente Sempre Encriptado.

  5. Na página de Configuração da Chave Mestra , configure uma nova chave mestra de coluna que será gerada pelo assistente. Primeiro, tens de escolher onde queres guardar a tua chave mestra de coluna. O assistente suporta dois tipos principais de repositório de chaves:

    • Azure Key Vault - recomendado se a tua base de dados estiver em Azure
    • Armazenamento de certificados do Windows

    Em geral, o Azure Key Vault é a opção recomendada, especialmente se a sua base de dados estiver no Azure.

    • Para usar o Azure Key Vault:

      1. Selecione Azure Key Vault.
      2. Selecione Iniciar Sessão e conclua o início de sessão no Azure.
      3. Depois de iniciar sessão, a página mostrará a lista de subscrições e cofres de chaves a que tem acesso. Selecione uma subscrição Azure que contenha o cofre de chaves que quer usar.
      4. Selecione o cofre das chaves.
      5. Selecione Avançar.

      Captura de ecrã da seleção da chave mestra do Assistente Sempre Encriptado usando o Azure Key Vault.

    • Para usar a loja de certificados do Windows:

      1. Selecione a loja de certificados do Windows.

      2. Mantenha a seleção padrão de Utilizador Atual – isto instruirá o assistente a gerar um certificado (a sua nova chave mestra de coluna) na loja Utilizador Atual.

        Captura de ecrã da seleção da chave mestra do Assistente Sempre Encriptado usando a loja de certificados.

      3. Selecione Avançar.

  6. Na página Definições de Encriptação In-Place não é necessária qualquer configuração adicional porque a base de dados não tem um enclave ativado. Selecione Avançar.

  7. Na página de Definições de Execução , perguntam-lhe se quer avançar com a encriptação ou gerar um script PowerShell para ser executado mais tarde. Saia das definições predefinidas e selecione Próximo.

  8. Na página Resumo, o assistente informa o usuário sobre as ações que irá realizar. Verifique se toda a informação está correta e selecione Terminar.

  9. Na página de Resultados, pode seguir o progresso das operações do assistente. Espere até que todas as operações sejam concluídas com sucesso e selecione Fechar.

    Captura de ecrã do resumo do Assistente Sempre Encriptado.

  10. (Opcional) Explore as alterações que o assistente fez na sua base de dados.

    1. Expanda ContosoHR>Segurança>Chaves Sempre Encriptadas para explorar os objetos de metadados da chave mestra da coluna e da cifra de coluna que o assistente criou.

    2. Também pode executar as consultas abaixo contra as vistas do catálogo do sistema que contêm metadados chave.

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

    4. Também pode executar a consulta abaixo contra sys.columns para recuperar metadados de encriptação ao nível das colunas para as duas colunas encriptadas.

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

Passo 3: Consultar colunas encriptadas

  1. Liga-te à tua base de dados com o modo Sempre Encriptado desativado para a tua ligação.

    1. Abra uma nova janela de consulta.
    2. Clique com o botão direito em qualquer lugar da janela de consulta e selecione Ligação>Alterar Ligação. Isto abrirá o diálogo Ligar ao Motor de Base de Dados .
    3. Selecione Opções <<. Isto mostrará separadores adicionais no diálogo Ligar ao Motor de Base de Dados.
    4. Selecione o separador Sempre Encriptado.
    5. Certifique-se de que Ativar Sempre Encriptado (encriptação por coluna) não está selecionado.
    6. Selecione Conectar.

    Captura de ecrã da opção de ligação SSMS para Sempre Encriptado desativada.

  2. Insira e execute a seguinte consulta. A consulta deve devolver dados binários encriptados.

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

    Captura de ecrã dos resultados do texto cifrado de colunas encriptadas.

  3. Liga-te à tua base de dados com o modo Sempre Encriptado ativado para a tua ligação.

    1. Clique com o botão direito em qualquer lugar da janela de consulta e selecione Ligação>Alterar Ligação. Isto abrirá o diálogo Ligar ao Motor de Base de Dados .
    2. Selecione Opções <<. Isto mostrará separadores adicionais no diálogo Ligar ao Motor de Base de Dados.
    3. Selecione o separador Sempre Encriptado.
    4. Selecione Ativar Sempre Encriptado (encriptação de colunas).
    5. Selecione Conectar.

    Captura de ecrã da opção de ligação SSMS para Sempre Encriptado ativado.

  4. Repete a mesma consulta. Como está conectado com o Always Encrypted ativado para a sua ligação à base de dados, o driver cliente no SSMS tentará decifrar os dados armazenados em ambas as colunas cifradas. Se usar o Azure Key Vault, pode ser solicitado a iniciar sessão no Azure.

    Captura de ecrã dos resultados em texto plano de colunas encriptadas.

  5. Ativar a parametrização para Always Encrypted. Esta funcionalidade permite executar consultas que filtram dados por colunas encriptadas (ou inserir dados em colunas encriptadas).

    1. Selecione Consultar no menu principal do SSMS.
    2. Selecionar Opções de Consulta....
    3. Navegar para Execução>Avançada.
    4. Certifica-te de que a opção Enable Parameterization for Always Encrypted está assinalada.
    5. Selecione OK.

    Captura de ecrã a permitir a parametrização numa janela de consulta existente.

  6. Cole e execute a consulta abaixo, que filtra os dados pela coluna SSN encriptada. A consulta deve devolver uma linha contendo valores de texto simples.

    DECLARE @SSN [char](11) = '795-73-9838'
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    WHERE [SSN] = @SSN
    
  7. Opcionalmente, se estiver a usar o Azure Key Vault configurado com o modelo de permissões da política de acesso, siga os passos abaixo para ver o que acontece quando um utilizador tenta recuperar dados de texto simples de colunas encriptadas sem ter acesso à chave mestra da coluna que protege os dados.

    1. Remova a permissão de chave unwrap para você mesmo na política de acesso do seu cofre de chaves. Para obter mais informações, consulte Atribuir uma política de acesso ao Key Vault.
    2. Como o controlador do cliente no SQL Server Management Studio (SSMS) armazena em cache as chaves de encriptação das colunas adquiridas de um cofre de chaves por 2 horas, é recomendável fechar o SSMS e abri-lo novamente. Isto garante que a cache de chaves está vazia.
    3. Liga-te à tua base de dados com o modo Sempre Encriptado ativado para a tua ligação.
    4. Insira e execute a seguinte consulta. A consulta deve falhar com a mensagem de erro a indicar que não tem a permissão necessária unwrap .
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Próximos passos

Consulte também