Compartilhar via


SQL Always On quando os dados de recuperação do BitLocker são encriptados na base de dados

Para o SQL Always On, são necessários passos adicionais quando as informações do BitLocker são encriptadas com as instruções em Encriptar dados de recuperação na base de dados. Os passos adicionais garantem que todos os Always On nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) quando ocorre um evento de ativação pós-falha. Os passos seguintes permitem a obtenção totalmente integrada de chaves BitLocker sem intervenção manual.

Descrição geral do SQL Always On quando os dados de recuperação do BitLocker são encriptados na base de dados

SQL Server encripta dados com uma infraestrutura hierárquica e é descrito em profundidade na Hierarquia de Encriptação.

  • Chave Mestra do Site (SMK) – esta chave é uma chave por instância que é exclusiva de cada nó SQL Server Always On e não é replicada. É utilizado para encriptar a base de dados master chave.
  • Chave Mestra da Base de Dados (DMK) – esta chave é armazenada na base de dados e replicada. É utilizado para encriptar o BitLockerManagement_CERT.
  • BitLockerManagement_CERT – este certificado é armazenado na base de dados e replicado. É utilizado para encriptar alguns dados relacionados com o BitLocker, como chaves de recuperação.

O SMK encripta a palavra-passe do DMK. Os SMKs são específicos do nó. Quando ocorre um evento de ativação pós-falha, o novo nó primário não consegue desencriptar a palavra-passe do DMK, uma vez que foi encriptado com um SMK diferente. Definir a palavra-passe do DMK em cada nó permite que o nó desencripte a palavra-passe na ativação pós-falha.

Observação

O BitLockerManagement_CERT efetua a encriptação das colunas. Se este certificado for perdido ou eliminado, ou se o DMK que o encriptou for perdido ou eliminado, as chaves BitLocker terão de ser guardadas e encriptadas novamente.

Se a palavra-passe da Chave Mestra da Base de Dados (DMK) for conhecida

Execute o seguinte comando em cada nó no Grupo de Disponibilidade que aloja a base de dados Configuration Manager:

Importante

O seguinte comando:

  • Substitua password em qualquer lugar por uma palavra-passe segura à sua escolha. Certifique-se de que armazena a palavra-passe de forma segura para referência futura.
  • Substitua CM_XXX pelo nome da base de dados Configuration Manager (CM).
EXEC sp_control_dbmasterkey_password
    @db_name = N'CM_XXX',
    @password = N'password',
    @action = N'add';

Este comando regista a palavra-passe do DMK com a Chave Mestra do Serviço (SMK) local, permitindo que SQL Server abram automaticamente o DMK quando ocorre um evento de ativação pós-falha. Este processo garante que o DMK pode ser desencriptado automaticamente nesse nó após uma ativação pós-falha ou um reinício.

Para verificar se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados, veja a secção Verificar se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados neste artigo.

Se a palavra-passe da Chave Mestra da Base de Dados (DMK) existente for desconhecida

Se a palavra-passe do DMK existente for desconhecida, o DMK existente tem de ser removido e um novo criado com uma palavra-passe conhecida. Estes passos documentam como efetuar este procedimento.

Localizar um DMK válido

Se não for conhecido qual o nó que tem um DMK válido, siga estes passos para determinar onde o DMK existente está aberto:

Importante

Nas seguintes consultas e comandos:

  • Substitua password em qualquer lugar por uma palavra-passe segura à sua escolha. Certifique-se de que armazena a palavra-passe em segurança numa localização conhecida para referência futura.
  • Substitua CM_XXX pelo nome da base de dados Configuration Manager (CM).
  1. Execute a seguinte consulta no nó primário:

    SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT)
    FROM RecoveryAndHardwareCore_Keys
    ORDER BY LastUpdateTime DESC
    
  2. Na consulta resultante:

    • Se o DMK estiver aberto, a consulta devolve valores de texto simples para quaisquer linhas que tenham uma chave válida. Este nó é o nó a iniciar e o passo seguinte pode ser ignorado.
    • Se o DMK não estiver aberto, a consulta devolve valores NULL para todas as linhas. O nó atual não é o nó onde o DMK está aberto. Siga o passo seguinte para localizar o nó onde o DMK está aberto.
  3. Se a consulta devolver todos os valores NULL, a ativação pós-falha para cada nó secundário e repetir os passos anteriores até encontrar o nó que pode desencriptar com êxito RecoveryAndHardwareCore_Keys . Este nó é o nó a iniciar.

Criar uma nova Chave Mestra da Base de Dados (DMK)

Assim que o nó adequado com o DMK aberto for identificado, siga estes passos:

  1. No nó identificado nos passos anteriores, execute a seguinte consulta para exportar o certificado de BitLockerManagement_CERT com a respetiva chave privada. Certifique-se de que utiliza uma palavra-passe segura:

    BACKUP CERTIFICATE BitLockerManagement_CERT
    TO FILE = 'C:\Windows\Temp\BitLockerManagement_CERT'
    WITH PRIVATE KEY
    (
        FILE = 'C:\Windows\Temp\BitLockerManagement_CERT_KEY',
        ENCRYPTION BY PASSWORD = 'password'
    );
    
  2. Faça uma cópia de segurança da Chave Mestra da Base de Dados (DMK) existente ao executar a seguinte consulta para exportar o DMK existente:

    BACKUP MASTER KEY
    TO FILE = 'C:\Windows\Temp\DMK'
    ENCRYPTION BY PASSWORD = 'password';
    

    Observação

    Este passo é opcional, mas recomendado. Certifique-se de que mantém a cópia de segurança numa localização conhecida segura.

  3. Execute a seguinte consulta para remover o certificado existente e o DMK:

    DROP CERTIFICATE BitLockerManagement_CERT;
    DROP MASTER KEY;
    

    Este passo remove as teclas antigas.

  4. Execute a seguinte consulta para criar um novo DMK. Certifique-se de que utiliza uma palavra-passe segura:

    CREATE MASTER KEY
    ENCRYPTION BY PASSWORD = 'password';
    
  5. Execute a seguinte consulta para registar a nova palavra-passe do DMK no SMK local:

    EXEC sp_control_dbmasterkey_password
        @db_name = N'CM_XXX',
        @password = N'password',
        @action = N'add';
    
  6. Execute a seguinte consulta para importar o certificado de BitLockerManagement_CERT exportado anteriormente:

    CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
    FROM FILE = 'C:\Windows\Temp\BitLockerManagement_CERT'
    WITH PRIVATE KEY
    (
        FILE = 'C:\Windows\Temp\BitLockerManagement_CERT_KEY',
        DECRYPTION BY PASSWORD = 'password'
    );
    
  7. Execute a seguinte consulta para conceder as permissões de controlo necessárias no certificado:

    GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareRead;
    GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareWrite;
    
  8. Efetue a ativação pós-falha para o nó seguinte.

  9. Execute a seguinte consulta para registar a palavra-passe do DMK no SMK local. Execute uma vez por réplica:

    EXEC sp_control_dbmasterkey_password
        @db_name = N'CM_XXX',
        @password = N'password',
        @action = N'add';
    
  10. Execute os dois passos anteriores em quaisquer nós restantes.

  11. Efetue a ativação pós-falha para o nó original.

  12. Para verificar se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados, veja a secção seguinte Verificar se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados neste artigo.

Verifique se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados

Para verificar se todos os nós podem abrir automaticamente a Chave Mestra da Base de Dados (DMK) e desencriptar os dados:

  1. Efetuar a ativação pós-falha para um nó.

  2. Execute a seguinte consulta:

    SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT)
    FROM RecoveryAndHardwareCore_Keys
    ORDER BY LastUpdateTime DESC
    
  3. Se a consulta devolver valores de texto simples para quaisquer linhas que tenham uma chave válida, o nó pode abrir automaticamente a Chave Mestra da Base de Dados (DMK) e pode desencriptar os dados.

  4. Repita os três passos anteriores para cada nó adicional.

Dica

Para uma segurança melhorada, armazene a palavra-passe DMK seguramente. Por exemplo, no Azure Key Vault ou noutro arquivo de segredos seguro. Além disso, evite codificar a palavra-passe do DMK em texto simples em scripts ou ficheiros de configuração.