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 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 Så här migrerar du din lokala databas till Azure SQL Managed Instance med hjälp av Azure Database Migration Service.
Viktig
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
För att slutföra stegen i den här artikeln behöver du följande krav:
- Pvk2Pfx kommandoradsverktyg som är installerat på den lokala servern eller på en annan dator med åtkomst till certifikatet som exporteras som en fil. Pvk2Pfx-verktyget är en del av Enterprise Windows Driver Kit, en fristående kommandoradsmiljö.
- Windows PowerShell version 5.0 eller senare installerad.
Kontrollera att du har följande:
- Azure PowerShell-modulen installerad och uppdaterad.
- Az.Sql-modul.
Notis
Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. Information om hur du kommer igång med Az PowerShell-modulen finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i Migrera Azure PowerShell från AzureRM till Az.
Viktig
PowerShell Azure Resource Manager-modulen (AzureRM) blev avvecklad den 29 februari 2024. All framtida utveckling bör använda Az.Sql-modulen. Användare rekommenderas att migrera från AzureRM till Az PowerShell-modulen för att säkerställa fortsatt support och uppdateringar. AzureRM-modulen underhålls inte längre eller stöds inte längre. Argumenten för kommandona i Az PowerShell-modulen och i AzureRM-modulerna är i stort sätt identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Az PowerShell-modulen.
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 bör ersättas med de faktiska namnen.
I SSMS öppnar du ett nytt frågefönster och ansluter till SQL Server-källinstansen.
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
Kör följande skript för att exportera certifikatet till ett par filer (.cer och .pvk) och behåll informationen om den offentliga och 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>' )
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:
Öppna PowerShell-konsolen och kör följande kommando för att öppna snapin-modulen Certifikat i Microsoft Management Console:
certlm
I MMC-snapin-modulen Certifikat expanderar du sökvägen Personligt > certifikat för att se listan över certifikat.
Högerklicka på certifikatet och klicka på Exportera.
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
Börja med förberedelsesteg 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>
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.
Anmärkning
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 Azure SQL Managed Instance- för att lära dig hur du återställer en databassäkerhetskopia till Azure SQL Managed Instance.