Een certificaat van een met TDE beveiligde database migreren naar Azure SQL Managed Instance
van toepassing op:Azure SQL Managed Instance
Wanneer u een database migreert die wordt beveiligd door TDE (Transparent Data Encryption) naar Azure SQL Managed Instance met behulp van de systeemeigen hersteloptie, moet het bijbehorende certificaat van het SQL Server-exemplaar worden gemigreerd voordat de database wordt hersteld. In dit artikel wordt u begeleid bij het handmatige migratieproces van het certificaat naar Azure SQL Managed Instance:
- Het certificaat exporteren naar een pfx-bestand (Personal Information Exchange)
- Pak het certificaat uit een bestand uit naar een base-64-tekenreeks
- Upload het met behulp van een PowerShell-cmdlet
Zie Uw on-premises database migreren naar Azure SQL Managed Instance met behulp van Azure Database Migration Servicevoor een alternatieve optie voor een volledig beheerde service voor naadloze migratie van een met TDE beveiligde database en een bijbehorend certificaat.
Belangrijk
Een gemigreerd certificaat wordt alleen gebruikt voor het herstellen van de met TDE beveiligde database. Kort nadat het herstel is voltooid, wordt het gemigreerde certificaat vervangen door een andere beveiliging, ofwel een door de service beheerd certificaat of een asymmetrische sleutel uit de sleutelkluis, afhankelijk van het type TDE dat u hebt ingesteld op het exemplaar.
Voorwaarden
Voor het voltooien van de stappen in dit artikel hebt u de volgende vereisten nodig:
- Pvk2Pfx opdrachtregelprogramma geïnstalleerd op de on-premises server of andere computer met toegang tot het certificaat dat is geëxporteerd als een bestand. Het Pvk2Pfx-hulpprogramma maakt deel uit van de Enterprise Windows Driver Kit, een zelfstandige opdrachtregelomgeving.
- Windows PowerShell versie 5.0 of hoger geïnstalleerd.
Zorg ervoor dat u over het volgende beschikt:
- Azure PowerShell-module geïnstalleerd en bijgewerkt.
- Az.Sql-module.
Notitie
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Zie Azure PowerShell-installeren om aan de slag te gaan met de Az PowerShell-module. Zie Azure PowerShell migreren van AzureRM naar Azvoor meer informatie over het migreren naar de Az PowerShell-module.
Belangrijk
De Module PowerShell Azure Resource Manager (AzureRM) is afgeschaft op 29 februari 2024. Voor alle toekomstige ontwikkeling moet de Az.Sql-module worden gebruikt. Gebruikers wordt aangeraden om van AzureRM naar de Az PowerShell-module te migreren om ondersteuning en updates te garanderen. De AzureRM-module wordt niet meer onderhouden of ondersteund. De argumenten voor de opdrachten in de Az PowerShell-module en in de AzureRM-modules zijn aanzienlijk identiek. Zie Introductie van de nieuwe Az PowerShell-modulevoor meer informatie over de compatibiliteit.
Voer de volgende opdrachten uit in PowerShell om de module te installeren/bij te werken:
Install-Module -Name Az.Sql
Update-Module -Name Az.Sql
Het TDE-certificaat exporteren naar een PFX-bestand
Het certificaat kan rechtstreeks worden geëxporteerd vanuit het SQL Server-bronexemplaren of vanuit het certificaatarchief als het daar wordt bewaard.
Het certificaat exporteren vanuit de broninstantie van de SQL Server
Gebruik de volgende stappen om het certificaat te exporteren met SQL Server Management Studio en het te converteren naar PFX-indeling. De algemene namen TDE_Cert en full_path worden gebruikt voor certificaat- en bestandsnamen en paden door de stappen. Ze moeten worden vervangen door de werkelijke namen.
Open een nieuw queryvenster in SSMS en maak verbinding met het SQL Server-bronexemplaar.
Gebruik het volgende script om met TDE beveiligde databases weer te geven en de naam op te halen van de certificaatbeveiliging van de database die moet worden gemigreerd:
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
Voer het volgende script uit om het certificaat te exporteren naar een paar bestanden (.cer en .pvk), zodat de openbare en persoonlijke sleutelgegevens behouden blijven:
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>' )
Gebruik de PowerShell-console om certificaatgegevens van een paar nieuw gemaakte bestanden naar een PFX-bestand te kopiëren met behulp van het hulpprogramma Pvk2Pfx:
.\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
Het certificaat exporteren uit een certificaatarchief
Als het certificaat wordt bewaard in het certificaatarchief van de lokale SQL Server-machine, kan het worden geëxporteerd met behulp van de volgende stappen:
Open de PowerShell-console en voer de volgende opdracht uit om de module Certificaten van Microsoft Management Console te openen:
certlm
Vouw in de MMC-module Certificaten het pad Personal > Certificates uit om de lijst met certificaten weer te geven.
Klik met de rechtermuisknop op het certificaat en klik op Exporteren.
Volg de wizard om het certificaat en de privésleutel te exporteren naar een .pfx-bestandsindeling.
Het certificaat uploaden naar Azure SQL Managed Instance met behulp van een Azure PowerShell-cmdlet
Begin met voorbereidingsstappen in 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>
Zodra alle voorbereidingsstappen zijn voltooid, voert u de volgende opdrachten uit om het met Base 64 gecodeerde certificaat te uploaden naar het beheerde doelexemplaren:
# 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
Het certificaat is nu beschikbaar voor het opgegeven beheerde exemplaar en de back-up van de bijbehorende met TDE beveiligde database kan worden hersteld.
Notitie
Geüpload certificaat is niet zichtbaar in de catalogusweergave sys.certificates. Als u wilt bevestigen dat het certificaat is geüpload, kunt u opdracht RESTORE FILELISTONLY uitvoeren.
Volgende stappen
In dit artikel hebt u geleerd hoe u een certificaat migreert dat de versleutelingssleutel van een database beveiligt met Transparent Data Encryption, van het on-premises of IaaS SQL Server-exemplaar naar Azure SQL Managed Instance.
Zie Een back-up van een database herstellen naar een met Azure SQL beheerd exemplaar voor meer informatie over het herstellen van een databaseback-up naar Azure SQL Managed Instance.