Compartilhar via


Habilitar a criptografia de dados transparente no SQL Server usando o EKM

Aplica-se:SQL Server

Este artigo descreve como habilitar a TDE (Transparent Data Encryption) no SQL Server para proteger uma chave de criptografia de banco de dados usando uma chave assimétrica armazenada em um módulo EKM (gerenciamento extensível de chaves) com o Transact-SQL.

A TDE criptografa o armazenamento de um banco de dados inteiro usando uma chave simétrica chamada de chave de criptografia de banco de dados. A chave de criptografia de banco de dados também pode ser protegida usando um certificado, que é protegido pela DMK (chave mestra do banco de dados) do master banco de dados. Para obter mais informações sobre como proteger a chave de criptografia do banco de dados usando o DMK, consulte TDE (Transparent Data Encryption). Para obter informações sobre como configurar o TDE quando o SQL Server estiver em execução em uma Máquina Virtual do Azure, consulte Gerenciamento extensível de chaves usando o Azure Key Vault (SQL Server). Para obter informações sobre como configurar a TDE usando uma chave no Cofre de Chaves do Azure, veja Usar o Conector do SQL Server com recursos de criptografia do SQL.

Limitações

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. O módulo EKM deve ser capaz de autenticar esse usuário.

Na inicialização, o Mecanismo de Banco de Dados deve abrir o banco de dados. Você deve criar uma credencial que será autenticada pelo EKM e adicioná-la a um logon baseado em uma chave assimétrica. Os usuários não podem entrar usando esse logon, mas o Mecanismo de Banco de Dados pode se autenticar com o dispositivo EKM.

Se a chave assimétrica armazenada no módulo EKM for perdida, o banco de dados não poderá ser aberto pelo SQL Server. Se o provedor de EKM permitir o backup da chave assimétrica, crie o backup e armazene-o em um local seguro.

As opções e os parâmetros exigidos pelo provedor EKM podem ser diferentes do que é fornecido no exemplo de código a seguir. Para obter mais informações, consulte seu provedor de EKM.

Permissões

Este artigo usa as seguintes permissões:

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

  • Requer ALTER ANY CREDENTIAL permissão.

  • Requer ALTER ANY LOGIN permissão.

  • Requer CREATE ASYMMETRIC KEY permissão.

  • CONTROL Requer permissão no banco de dados para criptografar o banco de dados.

Usar Transact-SQL

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

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

    Observação

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

  3. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  4. Na barra Padrão, selecione Nova Consulta.

  5. Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.

    -- Enable advanced options.
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov
        FROM FILE = 'C:\EKM_Files\KeyProvFile.dll';
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred
        WITH IDENTITY = 'Identity1',
        SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    GO
    
    -- Add the credential to a high privileged user such as your
    -- own domain login in the format [DOMAIN\login].
    ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred;
    GO
    
    -- create an asymmetric key stored inside the EKM provider
    USE master;
    GO
    
    CREATE ASYMMETRIC KEY ekm_login_key
         FROM PROVIDER [EKM_Prov]
             WITH ALGORITHM = RSA_512,
             PROVIDER_KEY_NAME = 'SQL_Server_Key';
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred
        WITH IDENTITY = 'Identity2', SECRET = '<secret>'
        FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login
        FROM ASYMMETRIC KEY ekm_login_key;
    GO
    
    ALTER LOGIN EKM_Login
        ADD CREDENTIAL ekm_tde_cred;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2022;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128
        ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2022
        SET ENCRYPTION ON;
    GO