Delen via


Een SQL Server TDE-certificaat migreren naar Azure SQL Managed Instance

van toepassing op:Azure SQL Managed Instance

In dit artikel leert u hoe u het certificaat migreert voordat u uw met TDE beveiligde SQL Server-database migreert naar Azure SQL Managed Instance met behulp van de systeemeigen hersteloptie.

Wanneer u een database migreert die wordt beveiligd door Transparent Data Encryption (TDE) van SQL Server naar Azure SQL Managed Instance met behulp van de systeemeigen hersteloptie, moet u eerst het bijbehorende certificaat migreren voordat u de database herstelt naar het beheerde SQL-exemplaar.

U kunt ook de volledig beheerde Azure Database Migration Service gebruiken om naadloos een met TDE beveiligde database en het bijbehorende certificaat te migreren.

Dit artikel is gericht op het migreren van databases van SQL Server naar Azure SQL Managed Instance. Als u databases wilt verplaatsen tussen beheerde SQL-exemplaren, raadpleegt u:

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 aan de volgende vereisten voldoet:

Voer de volgende opdrachten uit in PowerShell om de module te installeren of bij te werken:

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

Het TDE-certificaat exporteren naar een PFX-bestand

U kunt het certificaat rechtstreeks vanuit het SQL Server-bronexemplaren exporteren of vanuit het certificaatarchief als u het daar bewaart.

Het certificaat exporteren vanuit de broninstantie van de SQL Server

Met de volgende stappen exporteert u het certificaat met behulp van SQL Server Management Studio en converteert u het naar PFX-indeling. De algemene namen TDE_Cert en full_path zijn tijdelijke aanduidingen voor certificaatnamen, bestandsnamen en paden. Vervang ze door de werkelijke namen.

  1. Open een nieuw queryvenster in SSMS en maak verbinding met het SQL Server-bronexemplaar.

  2. 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
    

    Schermopname in SSMS met een lijst met TDE-certificaten.

  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>'
    )
    

    Schermopname in SSMS met het TDE-certificaat waarvan een back-up is gemaakt.

  4. 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 u het certificaat in het certificaatarchief van de lokale SQL Server-machine bewaart, gebruikt u de volgende stappen om het te exporteren:

  1. Open de PowerShell-console en voer de volgende opdracht uit om de module Certificaten van Microsoft Management Console te openen:

    certlm
    
  2. Vouw in de MMC-module Certificaten het pad Persoonlijke>certificaten uit om de lijst met certificaten weer te geven.

  3. Klik met de rechtermuisknop op het certificaat en selecteer Exporteren.

  4. 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

Belangrijk

Gebruik alleen een gemigreerd certificaat om de met TDE beveiligde database te herstellen. Kort nadat het herstellen is voltooid, wordt het gemigreerde certificaat vervangen door een andere beveiliging. De nieuwe beveiliging is een door de service beheerd certificaat of een asymmetrische sleutel uit de sleutelkluis, afhankelijk van het type TDE dat u voor het exemplaar hebt ingesteld.

  1. 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>
    
  2. Nadat u alle voorbereidingsstappen hebt voltooid, voert u de volgende opdrachten uit om het met base 64 gecodeerde certificaat te uploaden naar het beheerde doelexemplaren van SQL:

    # 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 met SQL beheerde exemplaar en u kunt de back-up van de bijbehorende met TDE beveiligde database herstellen.

Notitie

Het geüploade certificaat is niet zichtbaar in de sys.certificates catalogusweergave. Voer de opdracht RESTORE FILELISTONLY uit om te bevestigen dat het certificaat is geüpload.