Certificaat van met TDE beveiligde database migreren naar met Azure SQL Database beheerd exemplaar
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 How to migrate your on-premises database to Azure SQL Managed Instance using Azure Database Migration Service (Uw on-premises database migreren naar Azure SQL Managed Instance met behulp van Azure Database Migration Service) voor een alternatieve optie voor een naadloze migratie van zowel een met TDE beveiligde database als 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.
Vereisten
U moet de volgende vereiste zaken hebben om de stappen in dit artikel uit te voeren:
- Het Pvk2Pfx-opdrachtregelprogramma is geïnstalleerd op de on-premises server of een andere computer met toegang tot het certificaat dat als een bestand wordt geëxporteerd. Het hulpprogramma Pvk2Pfx maakt deel uit van de Enterprise Windows Driver Kit, een zelfstandige opdrachtregelomgeving.
- Windows PowerShell versie 5.0 of hoger is geïnstalleerd.
Zorg ervoor dat u over de volgende zaken beschikt:
- De Azure PowerShell-module is geïnstalleerd en bijgewerkt.
- Az.Sql-module.
Notitie
In dit artikel wordt gebruikgemaakt van de Azure Az PowerShell-module. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Belangrijk
De PowerShell Azure Resource Manager-module wordt nog steeds ondersteund door Azure SQL Managed Instance, maar alle toekomstige ontwikkeling is voor de Az.Sql-module. Zie AzureRM.Sql voor deze cmdlets. De argumenten voor de opdrachten in de Az-module en in de AzureRM-modules zijn aanzienlijk identiek.
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 uit het SQL Server-bronexemplaren
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. Deze moeten worden vervangen door de werkelijke namen.
Open in SSMS een nieuw queryvenster en maak verbinding met het SQL Server-bronexemplaren.
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 bestandspaar (.cer en .pvk), waarbij de gegevens van de openbare en persoonlijke sleutel 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 Persoonlijke > certificaten 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 persoonlijke sleutel te exporteren naar een PFX-indeling.
Het certificaat uploaden naar Azure SQL Managed Instance met behulp van een Azure PowerShell-cmdlet
Begin met de 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 de 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 databaseback-up herstellen naar een beheerd exemplaar van Azure SQL voor meer informatie over het herstellen van een databaseback-up naar Azure SQL Managed Instance.