Gerenciamento extensível de chaves (EKM)Extensible Key Management (EKM)

SQL ServerSQL 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. provides data encryption capabilities together with Extensible Key Management (EKM), using the Microsoft Cryptographic API (MSCAPI) provider for encryption and key generation. As chaves de criptografia de dados e a criptografia da chave são criadas em contêineres chaves e devem ser exportadas por um provedor antes de serem armazenadas no banco de dados.Encryption keys for data and key encryption are created in transient key containers, and they must be exported from a provider before they are stored in the database. Essa abordagem habilita o gerenciamento de chave, que inclui uma hierarquia de chave de criptografia e backup da chave, para ser tratado pelo SQL ServerSQL Server.This approach enables key management that includes an encryption key hierarchy and key backup, to be handled by SQL ServerSQL Server.

Com a crescente demanda de conformidade reguladora e referente à privacidade dos dados, as organizações estão tirando vantagem da criptografia como meio de oferecer uma solução de "defesa aprofundada".With the growing demand for regulatory compliance and concern for data privacy, organizations are taking advantage of encryption as a way to provide a "defense in depth" solution. Essa abordagem geralmente não é muito prática se usar só as ferramentas de gerenciamento de criptografia do banco de dados.This approach is often impractical using only database encryption management tools. Os fornecedores de hardware fornecem produtos que corrigem o gerenciamento de chave empresarial, usando o HSM (módulos de segurança do hardware).Hardware vendors provide products that address enterprise key management by using Hardware Security Modules (HSM). Os dispositivos HSM armazenam chaves de criptografia em módulos de software ou hardware.HSM devices store encryption keys on hardware or software modules. É uma solução mais segura porque as chaves de criptografia não estão com dados de criptografia.This is a more secure solution because the encryption keys do not reside with encryption data.

Vários fornecedores oferecem HSM para gerenciamento de chave e aceleração de criptografia.A number of vendors offer HSM for both key management and encryption acceleration. Os dispositivos de HSM usam interfaces de hardware com um processo de servidor como um intermediário entre um aplicativo e um HSM.HSM devices use hardware interfaces with a server process as an intermediary between an application and an HSM. Os fornecedores também implementam provedores de MSCAPI nos seus módulos, que podem ser hardware ou software.Vendors also implement MSCAPI providers over their modules, which might be hardware or software. O MSCAPI oferece frequentemente só um subconjunto da funcionalidade que é oferecida por um HSM.MSCAPI often offers only a subset of the functionality that is offered by an HSM. Os fornecedores também podem prover software de gerenciamento para HSM, configuração fundamental e acesso fundamental.Vendors can also provide management software for HSM, key configuration, and key access.

As implementações HSM variam conforme o fornecedor e usá-los com o SQL ServerSQL Server requer uma interface comum.HSM implementations vary from vendor to vendor, and to use them with SQL ServerSQL Server requires a common interface. Embora o MSCAPI ofereça esta interface, ele dá suporte apenas a um subconjunto das características do HSM.Although the MSCAPI provides this interface, it supports only a subset of the HSM features. Também existem outras limitações, como incapacidade de persistir chaves simétricas, e uma falta de suporte orientado por sessão.It also has other limitations, such as the inability to natively persist symmetric keys, and a lack of session-oriented support.

O Gerenciador Extensível de Chaves SQL ServerSQL Server permite que os fornecedores do EKM/HSM de terceiros registrem os seus módulos no SQL ServerSQL Server.The SQL ServerSQL Server Extensible Key Management enables third-party EKM/HSM vendors to register their modules in SQL ServerSQL Server. Quando registrado, os usuários SQL ServerSQL Server podem usar as chaves de criptografia armazenadas em módulos EKM.When registered, SQL ServerSQL Server users can use the encryption keys stored on EKM modules. Isso permite o SQL ServerSQL Server acessar os recursos avançados de criptografia, esses módulos oferecem suporte à criptografia em massa e à descriptografia e, às funções de gerenciamento de chave, como envelhecimento de chave e rotação de chave.This enables SQL ServerSQL Server to access the advanced encryption features these modules support such as bulk encryption and decryption, and key management functions such as key aging and key rotation.

Ao executar o SQL ServerSQL Server em uma VM do Azure, SQL ServerSQL Server pode usar chaves armazenadas no Cofre da Chave do Azure.When running SQL ServerSQL Server in an Azure VM, SQL ServerSQL Server can use keys stored in the Azure Key Vault. Para obter mais informações, veja Gerenciamento extensível de chaves usando o Cofre de Chaves do Azure (SQL Server).For more information, see Extensible Key Management Using Azure Key Vault (SQL Server).

Configuração de EKMEKM Configuration

O gerenciamento extensível de chaves não está disponível em todas as edições do MicrosoftMicrosoft SQL ServerSQL Server.Extensible Key Management is not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. Para obter uma lista de recursos com suporte nas edições do SQL ServerSQL Server, consulte Recursos com suporte nas edições do SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

Por padrão, o Gerenciador Extensível de Chaves está desativado.By default, Extensible Key Management is off. Para habilitar esse recurso, use o comando sp_configure que tem a seguinte opção e valor, conforme o exemplo a seguir:To enable this feature, use the sp_configure command that has the following option and value, as in the following example:

sp_configure 'show advanced', 1  
GO  
RECONFIGURE  
GO  
sp_configure 'EKM provider enabled', 1  
GO  
RECONFIGURE  
GO  
Observação

Se você usar o comando sp_configure para esta opção em edições do SQL ServerSQL Server que não dão suporte a EKM, receberá um erro.If you use the sp_configure command for this option on editions of SQL ServerSQL Server that do not support EKM, you will receive an error.

Para desabilitar o recurso, defina o valor para 0.To disable the feature, set the value to 0. Para mais informações sobre como definir opções de servidor, veja sp_configure (Transact-SQL).For more information about how to set server options, see sp_configure (Transact-SQL).

Como usar EKMHow to Use EKM

SQL ServerSQL Server O Gerenciamento Extensível de Chaves permite que as chaves de criptografia protejam os arquivos de banco de dados a serem armazenados em um dispositivo pronto para uso, como um smartcard, dispositivo USB ou o módulo EKM/HSM. Extensible Key Management enables the encryption keys that protect the database files to be stored in an off-box device such as a smartcard, USB device, or EKM/HSM module. O que também habilita proteção de dados a partir dos administradores de banco de dados (exceto os membros do grupo sysadmin ).This also enables data protection from database administrators (except members of the sysadmin group). Com o uso de chaves de criptografia, é possível criptografar dados aos quais somente o usuário do banco de dados tem acesso no módulo externo de EKM/HSM.Data can be encrypted by using encryption keys that only the database user has access to on the external EKM/HSM module.

O Gerenciador Extensível de Chaves também oferece os seguintes benefícios:Extensible Key Management also provides the following benefits:

  • Verificação de autorização adicional (habilitando a separação de tarefas).Additional authorization check (enabling separation of duties).

  • Alto desempenho de criptografia/descriptografia com base em hardware.Higher performance for hardware-based encryption/decryption.

  • Geração de chave de criptografia externa.External encryption key generation.

  • Armazenamento de chave de criptografia externa (separação física de dados e chaves).External encryption key storage (physical separation of data and keys).

  • Recuperação de chave de criptografia.Encryption key retrieval.

  • Retenção de chave de criptografia externa (habilita a rotação de chave de criptografia).External encryption key retention (enables encryption key rotation).

  • Recuperação mais fácil da chave de criptografia.Easier encryption key recovery.

  • Distribuição de chave de criptografia manejável.Manageable encryption key distribution.

  • Disposição segura de chave de criptografia.Secure encryption key disposal.

    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.You can use Extensible Key Management for a username and password combination or other methods defined by the EKM driver.

Cuidado

Para solução de problemas, o suporte técnico do MicrosoftMicrosoft poderá solicitar a chave de criptografia do provedor EKM.For troubleshooting, MicrosoftMicrosoft technical support might require the encryption key from the EKM provider. Talvez seja necessário acessar os processos ou as ferramentas do fornecedor para ajudar a resolver um problema.You might also need to access vendor tools or processes to help resolve an issue.

Autenticação com um dispositivo EKMAuthentication with an EKM Device

Um módulo EKM pode oferecer suporte para mais de um tipo de autenticação.An EKM module can support more than one type of authentication. Cada provedor mostra apenas um tipo de autenticação para o SQL ServerSQL Server, isto é, se o módulo oferecer suporte aos tipos de autenticação Básica ou a outros, ele mostrará um ou outro, mas não os dois.Each provider exposes only one type of authentication to SQL ServerSQL Server, that is if the module supports Basic or Other authentication types, it exposes one or the other, but not both.

Nome do usuário/senha de Autenticação Básica Específica do Dispositivo EKMEKM Device-Specific Basic Authentication Using username/password

Para esses módulos EKM que dão suporte à autenticação Básica usando um par nome de usuário/senha , o SQL ServerSQL Server fornece autenticação transparente que usa credenciais.For those EKM modules that support Basic authentication using a username/password pair, SQL ServerSQL Server provides transparent authentication using credentials. Para mais informações sobre credenciais, consulte Credenciais (Mecanismo de Banco de Dados).For more information about credentials, see Credentials (Database Engine).

É possível criar uma credencial para um provedor EKM e mapear (ambas as contas do Windows e do SQL ServerSQL Server ) para acessar um módulo EKM por logon.A credential can be created for an EKM provider and mapped to a login (both Windows and SQL ServerSQL Server accounts) to access an EKM module on per-login basis. O campo da credencial Identify contém o nome do usuário; o campo secret contém uma senha para conectar a um módulo de EKM.The Identify field of the credential contains the username; the secret field contains a password to connect to an EKM module.

Se não houver nenhuma credencial mapeada de logon para o provedor EKM, a credencial mapeada para conta de serviço SQL ServerSQL Server será usada.If there is no login mapped credential for the EKM provider, the credential mapped to the SQL ServerSQL Server service account is used.

Um logon pode ter várias credenciais mapeadas para isto, contanto que elas sejam usadas para provedores de EKM diferentes.A login can have multiple credentials mapped to it, as long as they are used for distinctive EKM providers. Deve haver só uma credencial mapeada por provedor de EKM por logon.There must be only one mapped credential per EKM provider per login. A mesma credencial pode ser mapeada para outros logons.The same credential can be mapped to other logins.

Outros tipos de autenticação de dispositivo específico EKMOther Types of EKM Device-Specific Authentication

Para os módulos EKM que tenham autenticação diferente do Windows ou combinações de usuário/senha , a autenticação deve ser executada independentemente do SQL ServerSQL Server.For EKM modules that have authentication other than Windows or user/password combinations, authentication must be performed independently from SQL ServerSQL Server.

Criptografia e decodificação por um dispositivo EKMEncryption and Decryption by an EKM Device

É possível usar as seguintes funções e características para criptografar e descriptografar dados, usando chaves simétricas e assimétricas:You can use the following functions and features to encrypt and decrypt data by using symmetric and asymmetric keys:

Função ou recursoFunction or feature ReferênciaReference
Criptografia de chave simétricaSymmetric key encryption CREATE SYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)
Criptografia de chave assimétricaAsymmetric Key encryption CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)
EncryptByKey(key_guid, 'cleartext', …)EncryptByKey(key_guid, 'cleartext', …) ENCRYPTBYKEY (Transact-SQL)ENCRYPTBYKEY (Transact-SQL)
DecryptByKey(ciphertext, …)DecryptByKey(ciphertext, …) DECRYPTBYKEY (Transact-SQL)DECRYPTBYKEY (Transact-SQL)
EncryptByAsmKey(key_guid, 'cleartext')EncryptByAsmKey(key_guid, 'cleartext') ENCRYPTBYASYMKEY (Transact-SQL)ENCRYPTBYASYMKEY (Transact-SQL)
DecryptByAsmKey(ciphertext)DecryptByAsmKey(ciphertext) DECRYPTBYASYMKEY (Transact-SQL)DECRYPTBYASYMKEY (Transact-SQL)

Criptografia das chaves do banco de dados pelas chaves EKMDatabase Keys Encryption by EKM Keys

SQL ServerSQL Server pode usar as chaves EKM para criptografar outras chaves em um banco de dados. can use EKM keys to encrypt other keys in a database. É possível criar e usar chaves simétricas e assimétricas em um dispositivo de EKM.You can create and use both symmetric and asymmetric keys on an EKM device. Você pode criptografar chaves simétricas nativas (diferente de EKM) com chaves assimétricas do EKM.You can encrypt native (non-EKM) symmetric keys with EKM asymmetric keys.

O exemplo a seguir cria uma chave simétrica de banco de dados e criptografa a chave, usando uma chave em um módulo EKM.The following example creates a database symmetric key and encrypts it using a key on an EKM module.

CREATE SYMMETRIC KEY Key1  
WITH ALGORITHM = AES_256  
ENCRYPTION BY EKM_AKey1;  
GO  
--Open database key  
OPEN SYMMETRIC KEY Key1  
DECRYPTION BY EKM_AKey1  

Para mais informações sobre o Banco de Dados e as Chaves de Servidor no SQL ServerSQL Server, consulte Chaves de criptografia do SQL Server e banco de dados (Mecanismo de Banco de Dados).For more information about Database and Server Keys in SQL ServerSQL Server, see SQL Server and Database Encryption Keys (Database Engine).

Observação

Não é possível criptografar uma chave EKM com outra chave EKM.You cannot encrypt one EKM key with another EKM key.

SQL ServerSQL Server não dá suporte para assinar módulos com chaves assimétricas geradas a partir do provedor EKM. does not support signing modules with asymmetric keys generated from EKM provider.

Tarefas relacionadasRelated Tasks

Opção de configuração de servidor EKM provider enabledEKM provider enabled Server Configuration Option

Habilitar TDE no SQL Server usando EKMEnable TDE on SQL Server Using EKM

Gerenciamento extensível de chaves usando o Cofre de Chaves do Azure (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)

Consulte tambémSee Also

CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL) CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL)
DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL) DROP CRYPTOGRAPHIC PROVIDER (Transact-SQL)
ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL) ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL)
sys.cryptographic_providers (Transact-SQL) sys.cryptographic_providers (Transact-SQL)
sys.dm_cryptographic_provider_sessions (Transact-SQL) sys.dm_cryptographic_provider_sessions (Transact-SQL)
sys.dm_cryptographic_provider_properties (Transact-SQL) sys.dm_cryptographic_provider_properties (Transact-SQL)
sys.dm_cryptographic_provider_algorithms (Transact-SQL) sys.dm_cryptographic_provider_algorithms (Transact-SQL)
sys.dm_cryptographic_provider_keys (Transact-SQL) sys.dm_cryptographic_provider_keys (Transact-SQL)
sys.credentials (Transact-SQL) sys.credentials (Transact-SQL)
CREATE CREDENTIAL (Transact-SQL) CREATE CREDENTIAL (Transact-SQL)
ALTER LOGIN (Transact-SQL) ALTER LOGIN (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL) CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL) ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL) DROP ASYMMETRIC KEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL) CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL) ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL) DROP SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL) OPEN SYMMETRIC KEY (Transact-SQL)
Fazer backup e restaurar as chave de criptografia do Reporting Services Back Up and Restore Reporting Services Encryption Keys
Excluir e recriar chaves de criptografia (SSRS Configuration Manager) Delete and Re-create Encryption Keys (SSRS Configuration Manager)
Adicionar e remover chaves de criptografia para implantação escalável (Gerenciador de Configurações do SSRS) Add and Remove Encryption Keys for Scale-Out Deployment (SSRS Configuration Manager)
Fazer backup da chave mestra de serviço Back Up the Service Master Key
Restaurar a chave mestra de serviço Restore the Service Master Key
Criar uma chave mestra de banco de dados Create a Database Master Key
Fazer backup da chave mestra de um banco de dados Back Up a Database Master Key
Restaurar uma chave mestra de banco de dados Restore a Database Master Key
Criar chaves simétricas idênticas em dois servidores Create Identical Symmetric Keys on Two Servers