Visão geral do gerenciamento de chaves do Always EncryptedOverview of key management for Always Encrypted

APLICA-SE A: SimSQL Server SimBanco de Dados SQL do Azure NãoAzure Synapse Analytics (SQL DW) NãoParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Always Encrypted usa dois tipos de chaves de criptografia para proteger seus dados, uma chave para criptografar os dados e outra para criptografar a chave que criptografa os dados.Always Encrypted uses two types of cryptographic keys to protect your data - one key to encrypt your data, and another key to encrypt the key that encrypts your data. A chave de criptografia de coluna criptografa os dados, a chave mestra de coluna criptografa a chave de criptografia de coluna.The column encryption key encrypts your data, the column master key encrypts the column encryption key. Este artigo fornece uma visão geral detalhada para gerenciar essas chaves de criptografia.This article provides a detailed overview for managing these encryption keys.

Ao discutir chaves Always Encrypted e o gerenciamento de chaves, é importante compreender a diferença entre as chaves de criptografia reais e os objetos de metadados que descrevem as chaves.When discussing Always Encrypted keys and key management it is important to understand the distinction between the actual cryptographic keys, and the metadata objects that describe the keys. Usamos os termos chave de criptografia de coluna e chave mestra de coluna para referir-se às chaves de criptografia reais e usamos os metadados de chave de criptografia de coluna e metadados de chave mestra de coluna para referir-se às descrições da chave Always Encrypted no banco de dados.We use the terms column encryption key and column master key to refer to the actual cryptographic keys, and we use column encryption key metadata and column master key metadata to refer to the Always Encrypted key descriptions in the database.

  • Chaves de criptografia de coluna são chaves de criptografia de conteúdo usadas para criptografar dados.Column encryption keys are content-encryption keys used to encrypt data. Como o nome implica, usamos chaves de criptografia de coluna para criptografar dados em colunas de banco de dados.As the name implies, you use column encryption keys to encrypt data in database columns. Você pode criptografar uma ou mais colunas com a mesma chave de criptografia de coluna ou pode usar várias chaves de criptografia de coluna dependendo dos requisitos do aplicativo.You can encrypt 1 or more columns with the same column encryption key, or you can use multiple column encryption keys depending on your application requirements. As chaves de criptografia de coluna são criptografadas elas mesmas e apenas os valores criptografados das chaves de criptografia de coluna são armazenados no banco de dados (como parte dos metadados de chave de criptografia de coluna).The column encryption keys are themselves encrypted, and only the encrypted values of the column encryption keys are stored in the database (as part of the column encryption key metadata). Os metadados de chave de criptografia de coluna são armazenados nas exibições de catálogo sys.column_encryption_keys (Transact-SQL) e sys.column_encryption_key_values (Transact-SQL) .The column encryption key metadata is stored in the sys.column_encryption_keys (Transact-SQL) and sys.column_encryption_key_values (Transact-SQL) catalog views. As chaves de criptografia de coluna usadas com o algoritmo AES-256 têm 256 bits.Column encryption keys used with the AES-256 algorithm are 256-bit long.

  • Chaves mestras de coluna são chaves de proteção usadas para criptografar as chaves de criptografia de coluna.Column master keys are key-protecting keys used to encrypt column encryption keys. Chaves mestras de coluna devem ser armazenadas em um repositório de chave confiável, como o Repositório de Certificados do Windows, o Cofre de Chaves do Azure ou um módulo de segurança de hardware.Column master keys must be stored in a trusted key store, such as Windows Certificate Store, Azure Key Vault, or a hardware security module. O banco de dados só contém metadados sobre chaves mestras de coluna (o tipo e local do repositório de chaves).The database only contains metadata about column master keys (the type of key store and location). Os metadados de chave mestra de coluna são armazenados na exibição de catálogo sys.column_master_keys (Transact-SQL) .The column master key metadata is stored in the sys.column_master_keys (Transact-SQL) catalog view.

É importante observar que os metadados de chave no sistema de banco de dados não contém chaves mestras de coluna de texto não criptografado ou chaves de criptografia de coluna de texto não criptografado.It is important to note that the key metadata in the database system does not contain plaintext column master keys or plaintext column encryption keys. O banco de dados contém apenas informações sobre o tipo e o local das chaves mestras de coluna e valores criptografados das chaves de criptografia de coluna.The database only contains information about the type and location of column master keys, and encrypted values of column encryption keys. Isso significa que chaves com texto não criptografado nunca são expostas no sistema de banco de dados, garantindo que os dados protegidos que usam o Always Encrypted estejam seguros, mesmo se o sistema de banco de dados for comprometido.This means that plaintext keys are never exposed to the database system ensuring that data protected using Always Encrypted is safe, even if the database system gets compromised. Para garantir que o sistema de banco de dados não possa obter acesso às chaves de texto não criptografado, execute as ferramentas de gerenciamento de chaves em um computador diferente daquele que hospeda seu banco de dados. Leia a seção Considerações de segurança para gerenciamento de chaves abaixo para ver os detalhes.To ensure the database system cannot gain access to the plaintext keys, be sure to run your key management tools on a different machine than the one hosting your database - review the Security Considerations for Key Management section below for details.

Como o banco de dados só contém dados criptografados (em colunas Always Encrypted protegidas) e não pode acessar as chaves de texto não criptografado, ele não pode descriptografar os dados.Because the database only contains encrypted data (in Always Encrypted protected columns), and cannot access the plaintext keys, it cannot decrypt the data. Isso significa que consultar colunas Always Encrypted simplesmente retornará valores criptografados, por isso aplicativos cliente que precisam criptografar ou descriptografar dados protegidos devem ser capazes de acessar a chave mestra de coluna e as chaves de criptografia de coluna relacionadas.This means that querying Always Encrypted columns will simply return encrypted values, so client applications that need to encrypt or decrypt protected data must be able to access the column master key, and related column encryption keys. Para obter detalhes, confira Desenvolver aplicativos usando o Always Encrypted.For details, see Develop Applications using Always Encrypted.

Tarefas de Gerenciamento de ChavesKey Management Tasks

O processo de gerenciamento de chaves pode ser dividido nas seguintes tarefas de alto nível:The process of managing keys can be divided into the following high-level tasks:

  • Provisionamento de chave - Criar as chaves físicas em um repositório de chaves confiável (por exemplo, no Repositório de Certificados do Windows, o Cofre de Chaves do Azure ou um módulo de segurança de hardware), chaves de criptografia de coluna de criptografia com chaves mestras de coluna e criar metadados para os dois tipos de chaves no banco de dados.Key provisioning - Creating the physical keys in a trusted key store (for example, in the Windows Certificate Store, Azure Key Vault, or a hardware security module), encrypting column encryption keys with column master keys, and creating metadata for both types of keys in the database.

  • Rotação de chaves - Substituir periodicamente uma chave existente por uma nova chave.Key rotation - Periodically replacing an existing key with a new key. Poderá ser necessário trocar uma chave caso ela tenha sido comprometida ou para manter a conformidade com as políticas ou os regulamentos da organização que exigem que as chaves de criptografia sejam trocadas.You may need to rotate a key if the key has been compromised, or in order to comply with your organization's policies or compliance regulations that mandate cryptographic keys must be rotated.

Funções de Gerenciamento de ChavesKey Management Roles

Existem duas funções distintas de usuários que gerencia chaves Always Encrypted: Administradores de Segurança e DBAs (Administradores de Banco de Dados):There are two distinct roles of users who manage Always Encrypted keys; Security Administrators and Database Administrators (DBAs):

  • Administrador de Segurança - Gera chaves de criptografia de coluna e chaves mestras de coluna e gerencia repositórios de chaves que contém as chaves mestras de coluna.Security Administrator - generates column encryption keys and column master keys and manages key stores containing the column master keys. Para executar essas tarefas, um Administrador de Segurança deve ser capaz de acessar as chaves e o repositório de chaves, mas não precisam de acesso ao banco de dados.To perform these tasks, a Security Administrator needs to be able to access the keys and the key store, but does not need access to the database.
  • DBA – gerencia os metadados das chaves no banco de dados.DBA - manages metadata about the keys in the database. Para executar tarefas de gerenciamento de chaves, um DBA precisa ser capaz de gerenciar metadados de chave no banco de dados, mas não precisam acessar as chaves ou repositório de chaves que contém as chaves mestras de coluna.To perform key management tasks, a DBA needs to be able to manage key metadata in the database, but does not need access to the keys or the key store holding the column master keys.

Considerando as funções acima, há duas maneiras de executar tarefas de gerenciamento de chaves para Always Encrypted: com separação de funçãoe sem separação de funções.Considering the above roles, there are two different ways to perform key management tasks for Always Encrypted; with role separation, and without role separation. Dependendo das necessidades da sua organização, você pode selecionar o processo de gerenciamento de chaves que melhor atenda às suas necessidades.Depending on the needs of your organization you can select the key management process that best suits your requirements.

Gerenciamento de chaves com separação de funçõesManaging Keys with Role Separation

Quando chaves Always Encrypted forem gerenciadas com separação de funções, pessoas diferentes em uma organização assumem as funções de Administrador de Segurança e de DBA.When Always Encrypted keys are managed with role separation, different people in an organization assume the Security Administrator and DBA roles. Um processo de gerenciamento de chaves com separação de funções garante que DBAs não tenham acesso a chaves ou repositórios de chaves que contém chaves reais e os Administradores de Segurança não tenham acesso ao banco de dados que contêm dados confidenciais.A key management process with role separation ensures DBAs have no access to the keys or key stores holding the actual keys, and Security Administrators have no access to the database containing sensitive data. É recomendável gerenciar as chaves com separação de funções se sua meta for garantir que os DBAs na sua organização não possam acessar dados confidenciais.Managing keys with role separation is recommended if your goal is to ensure DBAs in your organization cannot access sensitive data.

Observação: Administradores de Segurança geram e trabalham com as chaves de texto não criptografado, por isso nunca devem executar suas tarefas nos mesmos computadores que hospedam um sistema de banco de dados ou computadores que podem ser acessados por DBAs ou outras pessoas que podem ser possíveis adversários.Note: Security Administrators generate and work with the plaintext keys, so they should never perform their tasks on the same computers hosting a database system, or computers that can be accessed by DBAs or anyone else who might be potential adversaries.

Gerenciamento de chaves sem separação de funçõesManaging Keys without Role Separation

Quando chaves Always Encrypted são gerenciadas sem a separação de funções, uma única pessoa pode assumir ambas as funções de Administrador de Segurança e de DBA, o que significa que a pessoa precisa ser capaz de acessar e gerenciar tanto as chaves/repositório de chaves quanto os metadados de chaves.When Always Encrypted keys are managed without role separation, a single person can assume both Security Administrator and DBA roles, which implies that person needs to be able to access and manage both the keys/key stores and the key metadata. Gerenciar chaves sem separação de funções pode ser recomendado para organizações que usam o modelo de DevOps ou se o banco de dados estiver hospedado na nuvem e o principal objetivo for impedir que os administradores de nuvem (mas não os DBAs locais) acessem dados confidenciais.Managing keys without role separation can be recommended for organizations using the DevOps model, or if the database is hosted in the cloud and the primary goal is to restrict cloud administrators (but not on-premises DBAs), from accessing sensitive data.

Ferramentas para gerenciar chaves Always EncryptedTools for Managing Always Encrypted Keys

Chaves Always Encrypted podem ser gerenciadas usando o SSMS (SQL Server Management Studio) e PowerShell:Always Encrypted keys can be managed using SQL Server Management Studio (SSMS) and PowerShell:

Considerações de segurança para gerenciamento de chavesSecurity Considerations for Key Management

O principal objetivo do Always Encrypted é garantir que os dados confidenciais armazenados em um banco de dados estejam seguros, mesmo se o sistema de banco de dados ou seu ambiente de hospedagem for comprometido.The primary objective of Always Encrypted is to ensure sensitive data stored in a database is safe, even if the database system or its hosting environment gets compromised. Exemplos de ataques de segurança em que o Always Encrypted pode ajudar a impedir vazamentos de dados confidenciais:Examples of security attacks where Always Encrypted can help prevent sensitive data leaks include:

  • Um usuário de banco de dados de alto privilégio mal-intencionado, como um DBA, consultando colunas de dados confidenciais.A malicious high-privilege database user, such as a DBA, querying sensitive data columns.
  • Um administrador invasor de um computador que hospeda uma instância do SQL Server examinando a memória de um processo do SQL Server ou arquivos de despejo de memória do processo do SQL Server.A rogue administrator of a computer hosting a SQL Server instance, scanning memory of a SQL Server process, or SQL Server process dump files.
  • Um operador do data center mal-intencionado consulta um banco de dados do cliente, examinando os arquivos de despejo do SQL Server ou examinando a memória de um computador que hospeda os dados do cliente na nuvem.A malicious data center operator querying a customer database, examining SQL Server dump files, or examining the memory of a computer hosting customer data in the cloud.
  • Malware em execução em um computador que hospeda o banco de dados.Malware running on a computer hosting the database.

Para garantir que Always Encrypted seja eficaz na prevenção desses tipos de ataques, o processo de gerenciamento de chaves deve garantir que as chaves mestras de coluna e as chaves de criptografia de coluna, bem como as credenciais para um repositório de chaves que contém as chaves mestras de coluna, nunca sejam reveladas para um invasor em potencial.To ensure Always Encrypted is effective in preventing these types of attacks, your key management process must ensure the column master keys and column encryption keys, as well as credentials to a key store containing the column master keys, are never revealed to a potential attacker. Aqui estão algumas diretrizes que você deve seguir:Here are a few guidelines, you should follow:

  • Nunca gere chaves mestras de coluna ou as chaves de criptografia de coluna em um computador que hospeda o banco de dados.Never generate column master keys or column encryption keys on a computer hosting your database. Em vez disso, gere as chaves em um computador separado, dedicado para o gerenciamento de chaves ou que hospeda aplicativos que também precisarão de acesso às chaves.Instead generate the keys on a separate computer, which is either dedicated for key management, or is a machine hosting applications that will need access to the keys anyway. Isso significa que você nunca deve executar ferramentas usadas para gerar as chaves no computador que hospeda o banco de dados, pois se um invasor acessar um computador usado para provisionar ou manter as chaves Always Encrypted, ele terá a chance de poderá obter suas chaves, mesmo se elas aparecerem somente na memória da ferramenta por um curto período.This means that you should never run tools used to generate the keys on the computer hosting your database because if an attacker accesses a computer used to provision or maintain your Always Encrypted keys, the attacker can potentially get your keys, even if the keys only appear in the tool's memory for a short time.
  • Para garantir que o processo de gerenciamento de chaves não revele inadvertidamente as chaves mestras de coluna ou as chaves de criptografia de coluna, é essencial identificar os possíveis adversários e ameaças de segurança antes de definir e implementar um processo de gerenciamento de chaves.To ensure your key management process does not inadvertently reveal column master keys or column encryption keys, it is critical to identify potential adversaries and security threats before defining and implementing a key management process. Por exemplo, se sua meta é garantir que os DBAs não tenham acesso a dados confidenciais, um DBA não pode ser o responsável por gerar as chaves.For example, if your goal is to ensure DBAs have no access to sensitive data, then a DBA cannot be responsible for generating the keys. Um DBA, no entanto, pode gerenciar metadados de chave no banco de dados, pois os metadados não contêm as chaves de texto não criptografado.A DBA, however, can manage key metadata in the database, as the metadata does not contain the plaintext keys.

Próximas etapasNext Steps

Consulte TambémSee Also