Dela via


SQL AlwaysOn när BitLocker-återställningsdata krypteras i databasen

För SQL AlwaysOn krävs ytterligare steg när BitLocker-informationen krypteras med hjälp av anvisningarna i Kryptera återställningsdata i databasen. De ytterligare stegen säkerställer att alla AlwaysOn-noder automatiskt kan öppna databashuvudnyckeln (DMK) när en redundanshändelse inträffar. Följande steg möjliggör sömlös hämtning av BitLocker-nycklar utan manuella åtgärder.

Översikt över SQL AlwaysOn när BitLocker-återställningsdata krypteras i databasen

SQL Server krypterar data med hjälp av en hierarkisk infrastruktur och beskrivs ingående i krypteringshierarkin.

  • Platshuvudnyckel (SMK) – Den här nyckeln är en nyckel per instans som är unik för varje SQL Server AlwaysOn-nod och som inte replikeras. Den används för att kryptera databasens huvudnyckel.
  • Databashuvudnyckel (DMK) – Den här nyckeln lagras i databasen och replikeras. Den används för att kryptera BitLockerManagement_CERT.
  • BitLockerManagement_CERT – Det här certifikatet lagras i databasen och replikeras. Den används för att kryptera vissa BitLocker-relaterade data, till exempel återställningsnycklar.

SMK krypterar DMK-lösenordet. SMK:er är nodspecifika. När en redundanshändelse inträffar kan den nya primära noden inte dekryptera DMK-lösenordet eftersom det krypterades med ett annat SMK. Om du ställer in DMK-lösenordet på varje nod kan noden dekryptera lösenordet vid redundans.

Obs!

BitLockerManagement_CERT utför krypteringen av kolumnerna. Om det här certifikatet tappas bort eller tas bort, eller om DMK:t som krypterade det har förlorats eller tagits bort, måste BitLocker-nycklar deponeras och krypteras igen.

Om lösenordet för databashuvudnyckeln (DMK) är känt

Kör följande kommando på varje nod i tillgänglighetsgruppen som är värd för Configuration Manager-databasen:

Viktigt

I följande kommando:

  • Ersätt password överallt med ett starkt lösenord som du väljer. Se till att lagra lösenordet på ett säkert sätt för framtida referens.
  • Ersätt CM_XXX med namnet på databasen Configuration Manager (CM).
EXEC sp_control_dbmasterkey_password
    @db_name = N'CM_XXX',
    @password = N'password',
    @action = N'add';

Det här kommandot registrerar DMK-lösenordet med den lokala tjänstens huvudnyckel (SMK) så att SQL Server automatiskt kan öppna DMK:t när en redundanshändelse inträffar. Den här processen säkerställer att DMK kan dekrypteras automatiskt på noden efter en redundansväxling eller en omstart.

Om du vill kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data kan du läsa avsnittet Kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data i den här artikeln.

Om det befintliga lösenordet för databashuvudnyckeln (DMK) är okänt

Om det befintliga DMK-lösenordet är okänt måste den befintliga DMK:n tas bort och ett nytt skapas med ett känt lösenord. De här stegen beskriver hur du utför den här proceduren.

Hitta en giltig DMK

Om det är okänt vilken nod som har en giltig DMK följer du dessa steg för att avgöra var den befintliga DMK:en är öppen:

Viktigt

I följande frågor och kommandon:

  • Ersätt password överallt med ett starkt lösenord som du väljer. Se till att lagra lösenordet på ett säkert sätt på en känd plats för framtida referens.
  • Ersätt CM_XXX med namnet på databasen Configuration Manager (CM).
  1. Kör följande fråga på den primära noden:

    SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT)
    FROM RecoveryAndHardwareCore_Keys
    ORDER BY LastUpdateTime DESC
    
  2. I den resulterande frågan:

    • Om DMK:n är öppen returnerar frågan oformaterade värden för alla rader som har en giltig nyckel i sig. Den här noden är den nod som ska startas och nästa steg kan hoppas över.
    • Om DMK inte är öppen returnerar frågan NULL-värden för alla rader. Den aktuella noden är inte den nod där DMK är öppen. Följ nästa steg för att hitta noden där DMK är öppen.
  3. Om frågan returnerar alla NULL-värden redundansväxlar du till varje sekundär nod och upprepar föregående steg tills noden som kan dekryptera RecoveryAndHardwareCore_Keys hittas. Den här noden är den nod som ska startas.

Skapa en ny databashuvudnyckel (DMK)

När rätt nod med den öppna DMK:en har identifierats följer du dessa steg:

  1. På noden som identifierades i föregående steg kör du följande fråga för att exportera BitLockerManagement_CERT-certifikatet med dess privata nyckel. Se till att använda ett starkt lösenord:

    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. Säkerhetskopiera den befintliga databashuvudnyckeln (DMK) genom att köra följande fråga för att exportera den befintliga DMK:en:

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

    Obs!

    Det här steget är valfritt men rekommenderas. Se till att behålla säkerhetskopian på en säker känd plats.

  3. Kör följande fråga för att släppa det befintliga certifikatet och DMK:

    DROP CERTIFICATE BitLockerManagement_CERT;
    DROP MASTER KEY;
    

    Det här steget tar bort de gamla nycklarna.

  4. Kör följande fråga för att skapa en ny DMK. Se till att använda ett starkt lösenord:

    CREATE MASTER KEY
    ENCRYPTION BY PASSWORD = 'password';
    
  5. Kör följande fråga för att registrera det nya DMK-lösenordet med den lokala SMK:n:

    EXEC sp_control_dbmasterkey_password
        @db_name = N'CM_XXX',
        @password = N'password',
        @action = N'add';
    
  6. Kör följande fråga för att importera det tidigare exporterade BitLockerManagement_CERT certifikatet:

    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. Kör följande fråga för att bevilja nödvändiga kontrollbehörigheter för certifikatet:

    GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareRead;
    GRANT CONTROL ON CERTIFICATE::BitLockerManagement_CERT TO RecoveryAndHardwareWrite;
    
  8. Redundansväxla till nästa nod.

  9. Kör följande fråga för att registrera DMK-lösenordet med den lokala SMK:en. Kör en gång per replik:

    EXEC sp_control_dbmasterkey_password
        @db_name = N'CM_XXX',
        @password = N'password',
        @action = N'add';
    
  10. Utför de föregående två stegen på eventuella återstående noder.

  11. Redundansväxla till den ursprungliga noden.

  12. Om du vill kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data kan du läsa nästa avsnitt Kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data i den här artikeln.

Kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data

Kontrollera att alla noder automatiskt kan öppna databashuvudnyckeln (DMK) och dekryptera data:

  1. Redundansväxla till en nod.

  2. Kör följande fråga:

    SELECT TOP 5 RecoveryAndHardwareCore.DecryptString(RecoveryKey, DEFAULT)
    FROM RecoveryAndHardwareCore_Keys
    ORDER BY LastUpdateTime DESC
    
  3. Om frågan returnerar oformaterade värden för alla rader som har en giltig nyckel i sig kan noden automatiskt öppna databashuvudnyckeln (DMK) och dekryptera data.

  4. Upprepa de föregående tre stegen för varje ytterligare nod.

Tips

För bättre säkerhet lagrar du det starka DMK-lösenordet på ett säkert sätt. Till exempel i Azure Key Vault eller ett annat säkert hemligt arkiv. Undvik dessutom hårdkodning av DMK-lösenordet i oformaterad text i skript eller konfigurationsfiler.