Como habilitar a TDE usando EKM

A criptografia de dados transparentes (TDE) criptografa o armazenamento de um banco de dados inteiro. A TDE criptografa os dados usando uma chave simétrica chamada de chave de criptografia de banco de dados. Este tópico descreve como proteger a chave de criptografia do banco de dados usando uma chave assimétrica armazenada em um módulo de gerenciamento de chave extensível (EKM).

Também é possível proteger a chave de criptografia do banco de dados através do uso de um certificado protegido pela chave mestra do banco de dados mestre. Para obter mais informações sobre como proteger a chave de criptografia do banco de dados usando a chave mestra de banco de dados, consulte Compreendendo a TDE (Criptografia de Dados Transparente).

As etapas básicas para habilitar a TDE usando um EKM são:

  1. Instale um provedor de EKM. Os procedimentos para esta etapa variam de acordo com os requisitos do provedor de EKM, mas devem incluir a instalação de um certificado do provedor de EKM em um armazenamento de certificados locais e a cópia de arquivos DLL de EKM no computador com o SQL Server.

  2. Configure o SQL Server para usar o provedor de EKM.

  3. Se o módulo EKM usar a autenticação básica, crie uma credencial e adicione-a a um usuário.

  4. Crie uma chave assimétrica protegida pelo provedor de EKM.

  5. Se o módulo EKM usar a autenticação básica, crie uma credencial protegida pela chave assimétrica para uso pelo Mecanismo de Banco de Dados.

  6. Crie uma chave simétrica de criptografia de banco de dados.

  7. Habilite a TDE que usa a chave de criptografia de banco de dados.

Para completar as etapas deste tópico, conecte ao SQL Server usando uma janela Editor de Consultas em SQL Server Management Studio.

Para instalar e configurar o provedor criptográfico

  1. Copie os arquivos fornecidos pelo provedor de EKM em um local apropriado no computador com o SQL Server. Neste exemplo, usamos a pasta C:\EKM.

  2. Instale os certificados no computador, como requerido pelo provedor de EKM.

    ObservaçãoObservação

    O SQL Server não fornece um provedor de EKM. Cada provedor de EKM pode ter procedimentos diferentes para instalar, configurar e autorizar os usuários. Consulte a documentação do provedor de EKM para completar esta etapa.

Para configurar o SQL Server para usar um provedor de EKM e criar o provedor no SQL Server

  1. A habilitação de um provedor de EKM é uma opção avançada. Primeiro, execute as seguintes instruções para exibir as opções avançadas.

    sp_configure 'show advanced options', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  2. Execute a instrução a seguir para habilitar os provedores de EKM:

    sp_configure 'EKM provider enabled', 1 ;
    GO
    RECONFIGURE ;
    GO
    
  3. Execute a instrução a seguir para criar um provedor criptográfico, que escolhemos para ligar ao EKM_Prov, baseado em um provedor de EKM:

    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov 
    FROM FILE = 'C:\EKM_Files\KeyProvFile.dll' ;
    GO
    
    ObservaçãoObservação

    A DLL EKM deve ser assinada digitalmente.

Criação de uma credencial para criptografar o Banco de Dados

Você deve ser um usuário com altos privilégios (como um administrador do sistema) para criar uma chave de criptografia de banco de dados e criptografar um banco de dados. É necessário que esse usuário possa ser autenticado pelo módulo EKM. O procedimento a seguir cria uma credencial que usa a identidade de EKM e a adiciona a um usuário com altos privilégios. Os procedimentos a seguir assumem que o módulo EKM pode autenticar um usuário nomeado como 'Identidade1'. É necessário fornecer uma senha, em vez dos asteriscos mostrados aqui. Essas etapas são necessárias quando o provedor de EKM usa autenticação básica, mas as etapas nesta seção podem ser ignoradas quando o módulo EKM usa outra autenticação.

Para criar uma credencial e adicioná-la ao logon de um usuário com altos privilégios

  1. Execute a seguinte instrução para criar uma credencial a ser usada por administradores do sistema:

    CREATE CREDENTIAL sa_ekm_tde_cred 
    WITH IDENTITY = 'Identity1', 
    SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    GO
    
  2. Execute a instrução a seguir para adicionar a credencial do administrador do sistema a um usuário com altos privilégios, como o seu próprio logon de domínio no formato [DOMAIN\login]:

    ALTER LOGIN [DOMAIN\login]
    ADD CREDENTIAL sa_ekm_tde_cred ;
    GO
    

Criação de uma chave assimétrica

Crie uma chave assimétrica para proteger o acesso à chave de criptografia de banco de dados. Esta chave é usada pelo SQL Server para acessar a chave de criptografia do banco de dados.

Para criar uma chave de criptografia de banco de dados

  • Execute a seguinte instrução para criar uma chave assimétrica armazenada dentro do provedor de EKM. Neste exemplo, o SQL Server identificará a chave pelo nome ekm_login_key. Dentro do dispositivo de EKM, a chave terá o nome SQL_Server_Key.

    ObservaçãoObservação

    As opções e os parâmetros requeridos pelo provedor de EKM podem ser diferentes desta instrução. Para obter mais informações, consulte seu provedor de EKM.

    USE master ;
    GO
    CREATE ASYMMETRIC KEY ekm_login_key 
    FROM PROVIDER [EKM_Prov]
    WITH ALGORITHM = RSA_512,
    PROVIDER_KEY_NAME = 'SQL_Server_Key' ;
    GO
    
    ObservaçãoObservação

    Se a chave assimétrica armazenada no módulo EKM for perdida, não será possível abrir o banco de dados no SQL Server. Se o provedor de EKM permitir o backup da chave assimétrica, você deverá criar o backup e armazená-lo em um local seguro.

Criação de uma credencial para uso pelo mecanismo do banco de dados

Ao iniciar, o Mecanismo de Banco de Dados precisa abrir o banco de dados. O procedimento a seguir cria uma credencial a ser autenticada pelo EKM, que a adiciona ao logon baseado em uma chave assimétrica. Os usuários não podem efetuar logon com esse logon, mas o Mecanismo de Banco de Dados poderá se autenticar com o dispositivo de EKM. Os procedimentos a seguir assumem que o módulo EKM pode autenticar um usuário nomeado como 'Identidade2'. É necessário fornecer uma senha, em vez dos asteriscos abaixo. Essas etapas são necessárias quando o provedor de EKM usa autenticação básica, mas as etapas nesta seção podem ser ignoradas quando o módulo EKM usa outra autenticação.

Para criar credenciais e adicioná-las a logons

  1. Execute a seguinte instrução para criar uma credencial a ser usada pelo Mecanismo de Banco de Dados:

    CREATE CREDENTIAL ekm_tde_cred 
    WITH IDENTITY = 'Identity2' 
    , SECRET = '*************' 
    FOR CRYPTOGRAPHIC PROVIDER EKM_Prov ;
    
  2. Execute a seguinte instrução para adicionar um logon usado pela TDE e adicione a credencial nova ao logon:

    CREATE LOGIN EKM_Login 
    FROM ASYMMETRIC KEY ekm_login_key ;
    GO
    
    ALTER LOGIN EKM_Login 
    ADD CREDENTIAL ekm_tde_cred ;
    GO
    

Criação de uma chave de criptografia de banco de dados

A chave de criptografia de banco de dados é uma chave simétrica. Crie a chave de criptografia no banco de dados mestre.

Para criar uma chave de criptografia de banco de dados

  1. Altere o banco de dados a ser criptografado:

    USE AdventureWorks2008R2 ;
    GO
    
  2. Execute o seguinte código para criar a chave de criptografia de banco de dados a ser usada para a TDE:

    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM  = AES_128
    ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key ;
    GO
    
  3. Execute o seguinte código para alterar o banco de dados para habilitar criptografia de dados transparente:

    ALTER DATABASE AdventureWorks2008R2 
    SET ENCRYPTION ON ;
    GO
    

    Agora o banco de dados fica armazenado em um formato criptografado.

Segurança

Este tópico usa as seguintes permissões:

  • Para alterar uma opção de configuração e executar a instrução RECONFIGURE, você deve ter a permissão em nível de servidor ALTER SETTINGS. A permissão ALTER SETTINGS é implicitamente mantida pelas funções fixas de servidor sysadmin e serveradmin.

  • Requer a permissão ALTER ANY CREDENTIAL.

  • Requer a permissão ALTER ANY LOGIN.

  • Requer a permissão CREATE ASYMMETRIC KEY.

  • Requer a permissão CONTROL no banco de dados para criptografá-lo.