SQL Server e chaves de encriptação de base de dados (Database Engine)

Aplica-se a:SQL Server

O SQL Server usa chaves de criptografia para ajudar a proteger dados, credenciais e informações de conexão armazenados em um banco de dados do servidor. O SQL Server tem dois tipos de chaves: simétrica e assimétrica. As chaves simétricas usam a mesma senha para criptografar e descriptografar dados. As chaves assimétricas usam uma senha para criptografar dados (chamada de chave pública ) e outra para descriptografar dados (chamada de chave privada ).

No SQL Server, as chaves de criptografia incluem uma combinação de chaves públicas, privadas e simétricas que são usadas para proteger dados confidenciais. A chave simétrica é criada durante a inicialização do SQL Server quando você inicia a instância do SQL Server pela primeira vez. O SQL Server utiliza a chave para encriptar dados sensíveis que são armazenados no SQL Server. O sistema operativo cria as chaves pública e privada, e estas protegem a chave simétrica. Um par de chaves pública e privada é criado para cada instância do SQL Server que armazena dados confidenciais em um banco de dados.

Aplicações para SQL Server e chaves de base de dados

O SQL Server tem dois aplicativos principais para chaves: uma chave mestra de serviço (SMK) gerada em e para uma instância do SQL Server e uma chave mestra de banco de dados (DMK) usada para um banco de dados.

Chave mestra de serviço

A chave mestra de serviço é a raiz da hierarquia de criptografia do SQL Server. O SQL Server gera o SMK na primeira vez que a instância inicia e usa-o para encriptar palavras-passe de servidores ligados, credenciais e a chave mestra da base de dados em cada base de dados.

O SMK é encriptado utilizando a chave local da máquina ou a API de Proteção de Dados do Windows (DPAPI). O DPAPI utiliza uma chave derivada das credenciais do Windows da conta do serviço SQL Server. Como a chave está protegida em ambos os sentidos, a chave mestra de serviço pode ser aberta pela conta de serviço sob a qual foi criada, ou por um principal que tenha acesso às credenciais da máquina.

O SQL Server utiliza o algoritmo de encriptação AES para proteger a chave mestra do serviço e a chave mestra da base de dados. O AES substituiu o algoritmo 3DES utilizado em versões anteriores ao SQL Server 2012 (11.x). Depois de atualizares uma instância do Database Engine de uma dessas versões anteriores, regenera o SMK e o DMK para atualizar as chaves mestras para AES. Para mais informações sobre a regeneração do SMK, veja ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) e ALTER MASTER KEY (Transact-SQL).

Chave mestra do banco de dados

A chave mestra da base de dados é uma chave simétrica que protege as chaves privadas dos certificados e as chaves assimétricas presentes na base de dados. Também pode encriptar dados, mas tem limitações de comprimento que o tornam menos prático para dados do que uma chave assimétrica. Para permitir a desencriptação automática da chave mestra da base de dados, uma cópia da chave é encriptada utilizando o SMK. O SQL Server armazena essa cópia tanto na base de dados onde a chave é usada como na master base de dados do sistema.

A cópia do DMK armazenada na master base de dados do sistema é atualizada silenciosamente sempre que o DMK muda. Pode alterar este padrão usando a opção DROP ENCRYPTION BY SERVICE MASTER KEY de ALTER MASTER KEY (Transact-SQL). Um DMK que não seja encriptado pela chave mestra de serviço deve ser aberto usando OPEN MASTER KEYOPEN MASTER KEY (Transact-SQL) e uma palavra-passe.

Gerir SQL Server e chaves de base de dados

Gerir chaves de encriptação envolve criar novas chaves de base de dados, fazer backup das chaves do servidor e da base de dados, e saber quando e como restaurar, eliminar ou alterar as chaves.

Para gerir chaves simétricas, utilize as ferramentas incluídas no SQL Server para realizar as seguintes tarefas:

  • Faça uma cópia de segurança das chaves do servidor e da base de dados para que possa usá-las para recuperar uma instalação do servidor ou como parte de uma migração planeada.
  • Restaure uma chave salva anteriormente em um banco de dados. Restaurar a chave permite que uma nova instância de servidor aceda a dados existentes que não tinha originalmente encriptado.
  • Exclua os dados criptografados em um banco de dados no caso improvável de que você não possa mais acessar os dados criptografados.
  • Recriar chaves e voltar a encriptar os dados no improvável caso de a chave ser comprometida. Como boa prática de segurança, recria as chaves periodicamente, como a cada poucos meses, para proteger o servidor de ataques que tentem decifrar as chaves.
  • Adicione ou remova uma instância de servidor de uma implantação em expansão de servidor em que vários servidores compartilham um único banco de dados e a chave que fornece criptografia reversível para esse banco de dados.

Informação importante de segurança

Para aceder a objetos protegidos pela chave mestra de serviço, precisa ou da conta de serviço do SQL Server que usou para criar a chave ou da conta do computador (máquina) associada ao sistema onde criou a chave. Pode alterar a conta do serviço SQL Server ou a conta do computador sem perder o acesso à chave. No entanto, se mudar ambas as contas, perde o acesso à chave mestra de serviço. Se perder o acesso à chave mestra de serviço sem qualquer um destes dois elementos, não pode desencriptar dados e objetos que a chave original encriptou.

Não podes restaurar ligações protegidas pela chave mestra de serviço a menos que tenhas essa chave.

Para aceder a objetos e dados protegidos com a chave mestra da base de dados, só precisa da palavra-passe que ajuda a proteger a chave.

Atenção

Se perder todo o acesso às chaves descritas neste artigo, perde o acesso aos objetos, ligações e dados protegidos por essas chaves. Pode restaurar a chave mestra de serviço conforme descrito em Restaurar a chave mestra de serviço, ou pode voltar ao sistema original de encriptação para recuperar o acesso. Não existe nenhuma forma alternativa de recuperar o acesso.