Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Öffnen Sie in SSMS ein neues Abfragefenster, und stellen Sie eine Verbindung mit der SQL Server-Quellinstanz her.
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 = 3Fü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>' )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:
Öffnen Sie die PowerShell-Konsole, und führen Sie den folgenden Befehl aus, um das Zertifikat-Snap-In der Microsoft Management Console zu öffnen:
certlmErweitern Sie im MMC-Snap-In "Zertifikate" den Pfad "Persönliche>Zertifikate ", um die Liste der Zertifikate anzuzeigen.
Klicken Sie mit der rechten Maustaste auf das Zertifikat, und wählen Sie "Exportieren" aus.
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.
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>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.