Partilhar via


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

Aplica-se a:SQL Server

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

A TDE criptografa o armazenamento de um banco de dados inteiro usando uma chave simétrica chamada chave de criptografia do banco de dados. A chave de criptografia do banco de dados também pode ser protegida usando um certificado, que é protegido pela chave mestra do banco de dados (DMK) 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 Criptografia de dados transparente (TDE). Para obter informações sobre como configurar o TDE quando o SQL Server está sendo executado em uma máquina virtual do Azure, consulte Gerenciamento extensível de chaves usando o Cofre de Chaves do Azure (SQL Server). Para obter informações sobre como configurar o TDE usando uma chave no cofre de chaves do Azure, consulte Usar o SQL Server Connector com recursos de criptografia do SQL.

Limitações

Você deve ser um usuário altamente privilegiado (como um administrador de 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 utilizador.

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 login baseado em uma chave assimétrica. Os usuários não podem entrar usando esse login, mas o Mecanismo de Banco de Dados pode autenticar-se 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 que você faça backup da chave assimétrica, você deve criar um backup e armazená-lo em um local seguro.

As opções e parâmetros exigidos pelo seu provedor de EKM podem diferir 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. As funções fixas de servidor ALTER SETTINGS e serveradmin mantêm implicitamente a permissão.

  • Requer ALTER ANY CREDENTIAL permissão.

  • Requer ALTER ANY LOGIN permissão.

  • Requer CREATE ASYMMETRIC KEY permissão.

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

Utilize o Transact-SQL

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

  2. Instale certificados no computador conforme exigido pelo seu 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 usuários. Para concluir esta etapa, consulte a documentação do seu provedor de 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