Migrieren des Zertifikats einer durch TDE geschützten Datenbank zu einer Azure SQL Managed Instance

Gilt für:Azure SQL Managed Instance

Beim Migrieren einer durch Transparent Data Encryption (TDE) geschützten Datenbank zu einer Azure SQL Managed Instance mithilfe der nativen Wiederherstellungsoption muss vor der Wiederherstellung der Datenbank das entsprechende Zertifikat aus der SQL-Server-Instanz migriert werden. Dieser Artikel stellt Ihnen schrittweise den Vorgang der manuellen Migration des Zertifikats zu einer verwalteten Azure SQL-Instanz vor:

  • Exportieren des Zertifikats in eine PFX-Datei (Personal Information Exchange)
  • Extrahieren des Zertifikats aus einer Datei in eine Base64-Zeichenfolge
  • Hochladen der Zeichenfolge mit einem PowerShell-Cmdlet

Eine alternative Option, einen vollständig verwalteten Dienst für die nahtlose Migration der durch TDE geschützten Datenbank und des entsprechenden Zertifikats zu verwenden, finden Sie unter Migrieren Ihrer lokalen Datenbank zu einer verwalteten Azure SQL-Instanz mit Azure Database Migration Service.

Wichtig

Ein migriertes Zertifikat wird nur für die Wiederherstellung der durch TDE geschützten Datenbank verwendet. Kurz nach Abschluss der Wiederherstellung wird das migrierte Zertifikat durch eine andere Schutzvorrichtung ersetzt – entweder ein vom Dienst verwaltetes Zertifikat oder einen asymmetrischen Schlüssel aus dem Schlüsseltresor – je nach dem Typ der TDE, die Sie für die Instanz festlegen.

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.

Stellen Sie sicher, dass Sie über Folgendes verfügen:

Hinweis

In diesem Artikel wird das Azure Az PowerShell-Modul verwendet. Dieses PowerShell-Modul wird für die Interaktion mit Azure empfohlen. Informationen zu den ersten Schritten mit dem Az PowerShell-Modul finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Wichtig

Das Azure Resource Manager-Modul von PowerShell wird von der verwalteten Azure SQL-Instanz weiterhin unterstützt, alle zukünftigen Entwicklungen erfolgen jedoch für das Az.Sql-Modul. Informationen zu diesen Cmdlets finden Sie unter AzureRM.Sql. Die Argumente für die Befehle im Az-Modul und den AzureRM-Modulen sind im Wesentlichen identisch.

Führen Sie die folgenden Befehle in PowerShell zum Installieren/Aktualisieren des Moduls aus:

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

Exportieren des TDE-Zertifikats in eine PFX-Datei

Das Zertifikat kann direkt aus der SQL Server-Quellinstanz oder aus dem Zertifikatspeicher exportiert werden, wenn es dort gespeichert ist.

Exportieren des Zertifikats aus der SQL Server-Quellinstanz

Führen Sie die folgenden Schritte aus, um das Zertifikat mit SQL Server Management Studio zu exportieren und in das PFX-Format zu konvertieren. Die generischen Namen TDE_Cert und full_path werden für die Zertifikat- und Dateinamen und Pfade in diesen Schritten verwendet. Sie sollten durch die tatsächlichen Namen ersetzt werden.

  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
    

    List of TDE certificates

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

    Backup TDE certificate

  4. Kopieren Sie mit der PowerShell-Konsole Zertifikatinformationen mit dem Pvk2Pfx-Tool aus zwei neu erstellten Dateien in eine PFX-Datei:

    .\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 das Zertifikat im Zertifikatspeicher des lokalen Computers mit SQL Server gespeichert wird, kann es mithilfe der folgenden Schritte exportiert werden:

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

    certlm
    
  2. Erweitern Sie im MMC-Snap-In für Zertifikate den Pfad „Personal > Certificates“, um eine Liste der Zertifikate anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf das Zertifikat, und klicken Sie dann auf Exportieren.

  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 eine Azure SQL Managed Instance mit dem Azure PowerShell-Cmdlet

  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. Nachdem alle Vorbereitungsschritte abgeschlossen sind, führen Sie die folgenden Befehle zum Hochladen des Base64-codierten Zertifikats in die verwaltete Zielinstanz aus:

    # 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 nun für die angegebene verwaltete Instanz verfügbar, und die Sicherung der entsprechenden durch TDE geschützten Datenbank kann erfolgreich wiederhergestellt werden.

Hinweis

Das hochgeladene Zertifikat ist in der sys.certificates-Katalogansicht nicht sichtbar. Um den erfolgreichen Upload des Zertifikats zu bestätigen, können Sie den Befehl RESTORE FILELISTONLY ausführen.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie das Zertifikat, das den Verschlüsselungsschlüssel der Datenbank mit Transparent Data Encryption schützt, aus dem lokalen oder IaaS-SQL-Server zu einer Azure SQL Managed Instance migriert wird.

Lesen Sie Wiederherstellen einer Datenbanksicherung in einer verwalteten Azure SQL-Instanz, um zu erfahren, wie Sie eine Datenbanksicherung in einer Azure SQL Managed Instance wiederherstellen können.