EKM (Gerenciamento extensível de chaves)

Aplica-se:SQL Server

O SQL Server oferece funcionalidades de criptografia de dados com o EKM (Gerenciador Extensível de Chaves), usando o provedor Microsoft Cryptographic API (MSCAPI) para criptografia e geração de chave. Chaves de criptografia para dados e criptografia de chaves são criadas em contêineres de chaves transitórios, e você deve exportá-las de um provedor antes de armazená-las no banco de dados. Essa abordagem permite que o SQL Server faça o gerenciamento de chaves, incluindo uma hierarquia de chaves de criptografia e backup de chaves.

Com a crescente demanda por conformidade regulatória e a preocupação com a privacidade dos dados, as organizações estão aproveitando a criptografia como uma forma de oferecer uma solução de defesa em profundidade. Essa abordagem geralmente não é muito prática se usar só as ferramentas de gerenciamento de criptografia do banco de dados. Fabricantes de hardware oferecem produtos que abordam o gerenciamento de chaves empresariais usando módulos de segurança de hardware (HSMs). Os dispositivos HSM armazenam chaves de criptografia em módulos de software ou hardware. Essa abordagem é mais segura porque as chaves de criptografia não residem com os dados criptografados.

Vários fornecedores oferecem HSMs tanto para gerenciamento de chaves quanto para aceleração de criptografia. Os dispositivos de HSM usam interfaces de hardware com um processo de servidor como um intermediário entre um aplicativo e um HSM. Os fornecedores também implementam provedores de MSCAPI nos seus módulos, que podem ser hardware ou software. O MSCAPI frequentemente oferece apenas um subconjunto da funcionalidade que um HSM oferece. Os fornecedores também podem fornecer softwares de gerenciamento para HSMs, configuração de chaves e acesso a chaves.

As implementações de HSM variam de fornecedor para fornecedor, e usá-las com o SQL Server requer uma interface comum. Embora o MSCAPI forneça essa interface, ele suporta apenas um subconjunto dos recursos do HSM. Também existem outras limitações, como incapacidade de persistir chaves simétricas, e uma falta de suporte orientado por sessão.

O SQL Server Extensible Key Management permite que fornecedores terceirizados de EKM e HSM registrem seus módulos no SQL Server. Após o registro de um módulo, os usuários do SQL Server podem usar as chaves de criptografia armazenadas nele. O SQL Server pode então acessar os recursos avançados de criptografia que esses módulos suportam, como criptografia e descriptografia em massa, e funções de gerenciamento de chaves, como envelhecimento e rotação de chaves.

Quando você executa o SQL Server em uma VM do Azure, o SQL Server pode usar chaves armazenadas no Azure Key Vault. Para mais informações, veja Gerenciamento de Chaves Extensível usando Azure Key Vault (SQL Server).

Configuração do EKM

O Gerenciamento de Chaves Extensível não está disponível em todas as edições do SQL Server. Para uma lista de recursos suportados pelas edições do SQL Server, veja Edições e recursos suportados do SQL Server 2025.

Por padrão, o Gerenciador Extensível de Chaves está desativado. Para habilitar esse recurso, use o procedimento armazenado sp_configure (Transact-SQL) com a seguinte opção e valor:

sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GO

Observação

Se você usar sp_configure para esta opção em edições do SQL Server que não suportam EKM, receberá um erro.

Para desativar o recurso, defina o valor para 0. Para mais informações sobre como definir opções de servidor, veja sp_configure (Transact-SQL).

Como usar o EKM

O SQL Server Extensible Key Management permite que você armazene as chaves de criptografia que protegem os arquivos do banco de dados em um dispositivo off-box, como um smart card, dispositivo USB ou módulo EKM/HSM. Também protege os dados contra administradores de banco de dados, exceto para membros do papel fixo de servidor sysadmin. Você pode criptografar dados usando chaves de criptografia que somente o usuário do banco de dados pode acessar no módulo externo EKM/HSM.

O Gerenciamento Extensível de Chaves também oferece os seguintes benefícios:

  • Uma verificação extra de autorização, que permite a separação de tarefas.
  • Desempenho superior para criptografia e descriptografia baseadas em hardware.
  • Geração de chave de criptografia externa.
  • Armazenamento externo de chaves de criptografia, que separa fisicamente dados e chaves.
  • Recuperação de chave de criptografia.
  • Retenção externa de chaves de criptografia, que permite a rotação de chaves de criptografia.
  • Recuperação mais fácil da chave de criptografia.
  • Distribuição de chave de criptografia manejável.
  • Disposição segura de chave de criptografia.

Você pode usar o Gerenciamento Extensível de Chaves para uma combinação de nome de usuário e senha ou outros métodos definidos pelo driver de EKM.

Cuidado

Para solução de problemas, o suporte técnico da Microsoft poderá solicitar a chave de criptografia do provedor EKM. Talvez seja necessário acessar os processos ou as ferramentas do fornecedor para ajudar a resolver um problema.

Autenticação com um dispositivo EKM

Um módulo EKM pode oferecer suporte para mais de um tipo de autenticação. Cada provedor expõe apenas um tipo de autenticação ao SQL Server. Ou seja, se o módulo suporta tanto tipos básicos quanto outros tipos de autenticação, ele expõe um ou outro, mas não ambos.

Autenticação básica específica de dispositivo EKM usando nome de usuário e senha

Para módulos EKM que suportam autenticação básica usando um par de nome de usuário e senha, o SQL Server oferece autenticação transparente por meio de credenciais. Para mais informações sobre credenciais, consulte Credenciais (Mecanismo de Banco de Dados).

Você pode criar uma credencial para um provedor EKM e mapeá-la para um login, seja uma conta do Windows ou do SQL Server, para acessar um módulo EKM por login. O campo identity da credencial contém o nome de usuário, e o campo secret contém uma senha para se conectar a um módulo EKM.

Se não existir credencial mapeada por login para o provedor EKM, o SQL Server usa a credencial mapeada para a conta do serviço.

Um login pode ter múltiplas credenciais mapeadas, desde que cada uma seja usada por um provedor EKM distinto. Deve haver só uma credencial mapeada por provedor de EKM por logon. Você pode mapear a mesma credencial para outros logins.

Outros tipos de autenticação específica de dispositivo EKM

Para módulos EKM que usam autenticação diferente do Windows ou combinações de nome de usuário e senha, você deve realizar a autenticação de forma independente do SQL Server.

Criptografia e descriptografia por um dispositivo EKM

Use as seguintes funções e recursos para criptografar e descriptografar dados usando chaves simétricas e assimétricas:

Função ou recurso Referência
Criptografia de chave simétrica CREATE SYMMETRIC KEY (Transact-SQL)
Criptografia de chave assimétrica CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', ...) ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, ...) DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)

Criptografia de chaves de banco de dados com chaves EKM

O SQL Server pode usar as chaves EKM para criptografar outras chaves em um banco de dados. É possível criar e usar chaves simétricas e assimétricas em um dispositivo de EKM. Você pode criptografar chaves simétricas nativas (não EKM) com chaves assimétricas EKM.

O exemplo a seguir cria uma chave simétrica de banco de dados e a criptografa usando uma chave em um módulo EKM.

CREATE SYMMETRIC KEY Key1
WITH ALGORITHM = AES_256
ENCRYPTION BY EKM_AKey1;
GO

-- Open the database key.
OPEN SYMMETRIC KEY Key1
DECRYPTION BY EKM_AKey1;

Para mais informações sobre chaves de banco de dados e de servidor no SQL Server, veja Chaves de criptografia do SQL Server e do banco de dados (Mecanismo de Banco de Dados).

Observação

Você não pode criptografar uma chave EKM com outra chave EKM.

O SQL Server não suporta assinar módulos com chaves assimétricas geradas por um provedor EKM.