Freigeben über


Migrieren eines SQL Server TDE-Zertifikats zu azure SQL Managed Instance

Gilt für:Azure SQL Managed Instance

In diesem Artikel erfahren Sie, wie Sie das Zertifikat migrieren, bevor Sie Ihre TDE-geschützte SQL Server-Datenbank mithilfe der systemeigenen Wiederherstellungsoption zu Azure SQL Managed Instance migrieren.

Wenn Sie eine Datenbank migrieren, die durch die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) von SQL Server zu azure SQL Managed Instance geschützt ist, indem Sie die native Wiederherstellungsoption verwenden, müssen Sie zuerst das entsprechende Zertifikat migrieren, bevor Sie die Datenbank in die verwaltete SQL-Instanz wiederherstellen.

Alternativ können Sie den vollständig verwalteten Azure-Datenbankmigrationsdienst verwenden, um sowohl eine TDE-geschützte Datenbank als auch das entsprechende Zertifikat nahtlos zu migrieren.

Dieser Artikel konzentriert sich auf die Migration von Datenbanken von SQL Server zu azure SQL Managed Instance. Informationen zum Verschieben von Datenbanken zwischen verwalteten SQL-Instanzen finden Sie unter:

Voraussetzungen

Damit Sie die in diesem Artikel aufgeführten Schritte ausführen können, benötigen Sie Folgendes:

  • Das Pvk2pfx-Befehlszeilentool, das auf dem lokalen Server oder einem anderen Computer mit Zugriff auf das Zertifikat installiert ist, das als Datei exportiert wurde. Das Pvk2pfx-Tool ist Bestandteil des Enterprise Windows Driver Kit, einer eigenständigen Befehlszeilenumgebung.
  • Windows PowerShell Version 5.0 oder höher installiert.

Stellen Sie sicher, dass Sie über die folgenden Voraussetzungen verfügen:

Führen Sie die folgenden Befehle in PowerShell aus, um das Modul zu installieren oder zu aktualisieren:

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

Exportieren des TDE-Zertifikats in eine PFX-Datei

Sie können das Zertifikat direkt aus der SQL Server-Quellinstanz oder aus dem Zertifikatspeicher exportieren, wenn Sie es dort aufbewahren.

Exportieren des Zertifikats aus der SQL Server-Quellinstanz

Die folgenden Schritte exportieren das Zertifikat mithilfe von SQL Server Management Studio und konvertieren es in das PFX-Format. Die generischen Namen TDE_Cert und full_path sind Platzhalter für Zertifikatnamen, Dateinamen und Pfade. Ersetzen Sie sie durch die tatsächlichen Namen.

  1. Öffnen Sie in SSMS ein neues Abfragefenster, und stellen Sie eine Verbindung mit der SQL Server-Quellinstanz her.

  2. Verwenden Sie das folgende Skript, um durch TDE geschützte Datenbanken aufzulisten und den Namen des Zertifikats abzurufen, das die Verschlüsselung der zu migrierenden Datenbank schützt:

    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
    

    Screenshot in SSMS mit einer Liste von TDE-Zertifikaten.

  3. Führen Sie das folgende Skript zum Exportieren des Zertifikats in zwei Dateien (CER- und PVK-Datei) aus, die die Informationen zum öffentlichen und privaten Schlüssel enthalten:

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

    Screenshot in SSMS, der das gesicherte TDE-Zertifikat zeigt.

  4. Verwenden Sie die PowerShell-Konsole, um Zertifikatinformationen aus einem paar neu erstellten Dateien mithilfe des Pvk2Pfx-Tools in eine PFX-Datei zu kopieren:

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

Exportieren des Zertifikats aus einem Zertifikatspeicher

Wenn Sie das Zertifikat im zertifikatspeicher des lokalen SQL Server-Computers beibehalten, führen Sie die folgenden Schritte aus, um es zu exportieren:

  1. Öffnen Sie die PowerShell-Konsole, und führen Sie den folgenden Befehl aus, um das Zertifikat-Snap-In der Microsoft Management Console zu öffnen:

    certlm
    
  2. Erweitern Sie im MMC-Snap-In "Zertifikate" den Pfad "Persönliche>Zertifikate ", um die Liste der Zertifikate anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf das Zertifikat, und wählen Sie "Exportieren" aus.

  4. Folgen Sie den Anweisungen des Assistenten, um das Zertifikat und den privaten Schlüssel in ein PFX-Format zu exportieren.

Hochladen des Zertifikats in azure SQL Managed Instance mithilfe eines Azure PowerShell-Cmdlets

Wichtig

Verwenden Sie ein migriertes Zertifikat nur, um die TDE-geschützte Datenbank wiederherzustellen. Kurz nach Abschluss der Wiederherstellung wird das migrierte Zertifikat durch einen anderen Schutz ersetzt. Die neue Schutzkomponente ist entweder ein vom Dienst verwaltetes Zertifikat oder ein asymmetrischer Schlüssel aus dem Schlüsseltresor, je nachdem, welche Art von TDE Sie für die Instanz festgelegt haben.

  1. Beginnen Sie mit den Vorbereitungsschritten 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. Führen Sie nach Abschluss aller Vorbereitungsschritte die folgenden Befehle aus, um das base64-codierte Zertifikat in die sql-verwaltete Zielinstanz hochzuladen:

    # 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
    

Das Zertifikat ist jetzt für die angegebene sql-verwaltete Instanz verfügbar, und Sie können die Sicherung der entsprechenden TDE-geschützten Datenbank wiederherstellen.

Hinweis

Das hochgeladene Zertifikat ist in der sys.certificates Katalogansicht nicht sichtbar. Um das erfolgreiche Hochladen des Zertifikats zu bestätigen, führen Sie den Befehl RESTORE FILELISTONLY aus.