Migrera ett certifikat för en TDE-skyddad databas till Azure SQL Managed Instance

Gäller för:Azure SQL Managed Instance

När du migrerar en databas som skyddas av transparent datakryptering (TDE) till Azure SQL Managed Instance med hjälp av det inbyggda återställningsalternativet måste motsvarande certifikat från SQL Server-instansen migreras innan databasåterställningen. Den här artikeln beskriver processen för manuell migrering av certifikatet till Azure SQL Managed Instance:

  • Exportera certifikatet till en Exchange-fil för personlig information (.pfx)
  • Extrahera certifikatet från en fil till en base-64-sträng
  • Ladda upp den med hjälp av en PowerShell-cmdlet

Ett alternativt alternativ med hjälp av en fullständigt hanterad tjänst för sömlös migrering av både en TDE-skyddad databas och ett motsvarande certifikat finns i Migrera din lokala databas till Azure SQL Managed Instance med Azure Database Migration Service.

Viktigt!

Ett migrerat certifikat används endast för återställning av den TDE-skyddade databasen. Strax efter att återställningen är klar ersätts det migrerade certifikatet av ett annat skydd, antingen ett tjänsthanterat certifikat eller en asymmetrisk nyckel från nyckelvalvet, beroende på vilken typ av TDE du har angett för instansen.

Förutsättningar

Du behöver följande för att slutföra stegen i den här artikeln:

  • Pvk2Pfx-kommandoradsverktyget installerat på den lokala servern eller en annan dator med åtkomst till det certifikat som exporterats som en fil. Pvk2Pfx-verktyget är en del av Enterprise Windows Driver Kit, en fristående kommandoradsmiljö.
  • Windows PowerShell version 5.0 eller senare installerat.

Se till att du har följande:

Kommentar

Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Viktigt!

PowerShell Azure Resource Manager-modulen stöds fortfarande av Azure SQL Managed Instance, men all framtida utveckling gäller för Az.Sql-modulen. Dessa cmdletar finns i AzureRM.Sql. Argumenten för kommandona i Az-modulen och i AzureRM-modulerna är i stort sätt identiska.

Kör följande kommandon i PowerShell för att installera/uppdatera modulen:

Install-Module -Name Az.Sql
Update-Module -Name Az.Sql

Exportera TDE-certifikatet till en .pfx-fil

Certifikatet kan exporteras direkt från SQL Server-källinstansen eller från certifikatarkivet om det behålls där.

Exportera certifikatet från SQL Server-källinstansen

Använd följande steg för att exportera certifikatet med SQL Server Management Studio och konvertera det till .pfx-format. De allmänna namnen TDE_Cert och full_path används för certifikat- och filnamn och sökvägar genom stegen. De ska ersättas med de faktiska namnen.

  1. I SSMS öppnar du ett nytt frågefönster och ansluter till SQL Server-källinstansen.

  2. Använd följande skript för att lista TDE-skyddade databaser och hämta namnet på certifikatet som skyddar krypteringen för databasen som ska migreras:

    USE master
    GO
    SELECT db.name as [database_name], cer.name as [certificate_name]
    FROM sys.dm_database_encryption_keys dek
    LEFT JOIN sys.certificates cer
    ON dek.encryptor_thumbprint = cer.thumbprint
    INNER JOIN sys.databases db
    ON dek.database_id = db.database_id
    WHERE dek.encryption_state = 3
    

    List of TDE certificates

  3. Kör följande skript för att exportera certifikatet till ett par filer (.cer och .pvk) med informationen för den offentliga nyckeln och den privata nyckeln:

    USE master
    GO
    BACKUP CERTIFICATE TDE_Cert
    TO FILE = 'c:\full_path\TDE_Cert.cer'
    WITH PRIVATE KEY (
      FILE = 'c:\full_path\TDE_Cert.pvk',
      ENCRYPTION BY PASSWORD = '<SomeStrongPassword>'
    )
    

    Backup TDE certificate

  4. Använd PowerShell-konsolen för att kopiera certifikatinformation från ett par nyligen skapade filer till en .pfx-fil med hjälp av Pvk2Pfx-verktyget:

    .\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk  -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
    

Exportera certifikatet från ett certifikatarkiv

Om certifikatet sparas i certifikatarkivet för den lokala SQL Server-datorn kan det exporteras med hjälp av följande steg:

  1. Öppna PowerShell-konsolen och kör följande kommando för att öppna snapin-modulen Certifikat i Microsoft Management Console:

    certlm
    
  2. I MMC-snapin-modulen Certifikat expanderar du sökvägen Personliga > certifikat för att se listan över certifikat.

  3. Högerklicka på certifikatet och klicka på Exportera.

  4. Följ guiden för att exportera certifikatet och den privata nyckeln till ett .pfx-format.

Ladda upp certifikatet till Azure SQL Managed Instance med hjälp av en Azure PowerShell-cmdlet

  1. Börja med förberedelsestegen i PowerShell:

    # import the module into the PowerShell session
    Import-Module Az
    # connect to Azure with an interactive dialog for sign-in
    Connect-AzAccount
    # list subscriptions available and copy id of the subscription target the managed instance belongs to
    Get-AzSubscription
    # set subscription for the session
    Select-AzSubscription <subscriptionId>
    
  2. När alla förberedelsesteg är klara kör du följande kommandon för att ladda upp base-64-kodat certifikat till den hanterade målinstansen:

    # If you are using PowerShell 6.0 or higher, run this command:
    $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -AsByteStream
    # If you are using PowerShell 5.x, uncomment and run this command instead of the one above:
    # $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -Encoding Byte
    $base64EncodedCert = [System.Convert]::ToBase64String($fileContentBytes)
    $securePrivateBlob = $base64EncodedCert  | ConvertTo-SecureString -AsPlainText -Force
    $password = "<password>"
    $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
    Add-AzSqlManagedInstanceTransparentDataEncryptionCertificate -ResourceGroupName "<resourceGroupName>" `
        -ManagedInstanceName "<managedInstanceName>" -PrivateBlob $securePrivateBlob -Password $securePassword
    

Certifikatet är nu tillgängligt för den angivna hanterade instansen och säkerhetskopieringen av motsvarande TDE-skyddade databas kan återställas.

Kommentar

Uppladdat certifikat visas inte i katalogvyn sys.certificates. För att bekräfta att certifikatet har laddats upp kan du köra kommandot RESTORE FILELISTONLY .

Nästa steg

I den här artikeln har du lärt dig hur du migrerar ett certifikat som skyddar krypteringsnyckeln för en databas med transparent datakryptering, från den lokala SQL Server-instansen eller IaaS SQL Server-instansen till Azure SQL Managed Instance.

Se Återställa en databassäkerhetskopia till en Hanterad Azure SQL-instans för att lära dig hur du återställer en databassäkerhetskopia till Azure SQL Managed Instance.