Compartilhar via


Habilitar TDE no SQL Server usando EKM

Aplica-se a: 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 do banco de dados também pode ser protegida usando 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, veja Transparent Data Encryption (TDE). Para obter informações sobre como configurar a TDE quando o SQL Server está em execução em uma VM do Azure, veja 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.

Antes de começar

Limitações e Restriçõ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. É necessário que esse usuário possa ser autenticado pelo módulo EKM.

  • Ao iniciar, o mecanismo de banco de dados deve abrir o banco de dados. Para fazer isso, você deverá criar uma credencial que será autenticada pelo EKM, que adicioná-la ao logon baseado em uma chave assimétrica. Os usuários não podem entrar com esse logon, mas o mecanismo de banco de dados poderá se autenticar com o dispositivo de EKM.

  • 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, crie o backup e armazene-o em um local seguro.

  • As opções e os parâmetros exigidos por seu provedor de EKM podem diferir do que é fornecido no exemplo de código abaixo. Para obter mais informações, consulte seu provedor de EKM.

Segurança

Permissões

Este artigo 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 de servidor fixas 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.

Usando o Transact-SQL

Para habilitar a TDE usando EKM

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

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

    Observaçã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.

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

  4. Na barra Padrão, clique em Nova Consulta.

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

    -- Enable advanced options.  
    sp_configure 'show advanced options', 1 ;  
    GO  
    RECONFIGURE ;  
    GO  
    -- Enable EKM provider  
    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 = 'q*gtev$0u#D1v'   
    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 = 'jeksi84&sLksi01@s'   
    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  
    

Para saber mais, consulte o seguinte:

Confira também

Transparent Data Encryption com o Banco de Dados SQL do Azure