Migrowanie certyfikatu bazy danych chronionej przez szyfrowanie TDE do usługi Azure SQL Managed Instance
Dotyczy:Azure SQL Managed Instance
Podczas migrowania bazy danych chronionej przez funkcję Transparent Data Encryption (TDE) do usługi Azure SQL Managed Instance przy użyciu opcji przywracania natywnego należy przeprowadzić migrację odpowiedniego certyfikatu z wystąpienia programu SQL Server przed przywróceniem bazy danych. W tym artykule przedstawiono proces ręcznej migracji certyfikatu do usługi Azure SQL Managed Instance:
- Eksportowanie certyfikatu do pliku wymiany informacji osobistych (pfx)
- Wyodrębnianie certyfikatu z pliku do ciągu base-64
- Przekazywanie go przy użyciu polecenia cmdlet programu PowerShell
Aby uzyskać alternatywną opcję użycia w pełni zarządzanej usługi do bezproblemowej migracji zarówno bazy danych chronionej za pomocą technologii TDE, jak i odpowiedniego certyfikatu, zobacz Jak przeprowadzić migrację lokalnej bazy danych do wystąpienia zarządzanego usługi Azure SQL przy użyciu usługi Azure Database Migration Service.
Ważne
Migrowany certyfikat służy tylko do przywracania bazy danych chronionej przez funkcję TDE. Wkrótce po zakończeniu przywracania zmigrowany certyfikat zostanie zastąpiony przez inną funkcję ochrony, certyfikat zarządzany przez usługę lub klucz asymetryczny z magazynu kluczy, w zależności od typu TDE ustawionego na wystąpieniu.
Wymagania wstępne
Do wykonania kroków opisanych w tym artykule potrzebne jest spełnienie następujących wymagań wstępnych:
- Narzędzie wiersza polecenia Pvk2Pfx zainstalowane na serwerze lokalnym lub innym komputerze z dostępem do certyfikatu wyeksportowanego jako plik. Narzędzie Pvk2Pfx jest częścią zestawu sterowników systemu Windows Enterprise, samodzielnego środowiska wiersza polecenia.
- Zainstalowany program Windows PowerShell w wersji 5.0 lub nowszej.
Upewnij się, że masz:
Uwaga
W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Ważne
Moduł Azure Resource Manager (AzureRM) programu PowerShell został wycofany 29 lutego 2024 r. Wszystkie przyszłe programowanie powinno używać modułu Az.Sql. Zaleca się migrowanie użytkowników z modułu AzureRM do modułu Az programu PowerShell w celu zapewnienia ciągłej obsługi i aktualizacji. Moduł AzureRM nie jest już utrzymywany ani wspierany. Argumenty poleceń w module Az programu PowerShell i modułach AzureRM są zasadniczo identyczne. Aby uzyskać więcej informacji odnośnie ich zgodności, zobacz sekcję Wprowadzenie do nowego modułu Az programu PowerShell.
Uruchom następujące polecenia w programie PowerShell, aby zainstalować/zaktualizować moduł:
Install-Module -Name Az.Sql
Update-Module -Name Az.Sql
Eksportowanie certyfikatu TDE do pliku pfx
Certyfikat można wyeksportować bezpośrednio ze źródłowego wystąpienia programu SQL Server lub z magazynu certyfikatów, jeśli jest tam przechowywany.
Eksportowanie certyfikatu ze źródłowego wystąpienia programu SQL Server
Wykonaj poniższe kroki, aby wyeksportować certyfikat za pomocą programu SQL Server Management Studio i przekonwertować go na format pfx. Nazwy ogólne TDE_Cert i full_path są używane dla nazw certyfikatów i plików oraz ścieżek w krokach. Należy je zastąpić rzeczywistymi nazwami.
W programie SSMS otwórz nowe okno zapytania i połącz się ze źródłowym wystąpieniem programu SQL Server.
Użyj następującego skryptu, aby wyświetlić listę baz danych chronionych przez funkcję TDE i uzyskać nazwę certyfikatu chroniącego szyfrowanie bazy danych do zmigrowania:
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
Wykonaj następujący skrypt, aby wyeksportować certyfikat do pary plików (cer i pvk), w których znajdują się informacje o kluczu publicznym i prywatnym:
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>' )
Użyj konsoli programu PowerShell, aby skopiować informacje o certyfikacie z pary nowo utworzonych plików do pliku pfx przy użyciu narzędzia 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
Eksportowanie certyfikatu z magazynu certyfikatów
Jeśli certyfikat jest przechowywany w magazynie certyfikatów komputera lokalnego programu SQL Server, można go wyeksportować, wykonując następujące czynności:
Otwórz konsolę programu PowerShell i wykonaj następujące polecenie, aby otworzyć przystawkę Certyfikaty programu Microsoft Management Console:
certlm
W przystawce MMC Certyfikaty rozwiń ścieżkę Osobiste > certyfikaty, aby wyświetlić listę certyfikatów.
Kliknij prawym przyciskiem myszy certyfikat i kliknij polecenie Eksportuj.
Postępuj zgodnie z instrukcjami kreatora, aby wyeksportować certyfikat i klucz prywatny do formatu pfx.
Przekazywanie certyfikatu do usługi Azure SQL Managed Instance przy użyciu polecenia cmdlet programu Azure PowerShell
Rozpocznij od kroków przygotowawczych w programie 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>
Po wykonaniu wszystkich kroków przygotowywania uruchom następujące polecenia, aby przekazać certyfikat zakodowany w formacie base-64 do docelowego wystąpienia zarządzanego:
# 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
Certyfikat jest teraz dostępny dla określonego wystąpienia zarządzanego, a kopia zapasowa odpowiedniej bazy danych chronionej przez funkcję TDE może zostać pomyślnie przywrócona.
Uwaga
Przekazany certyfikat nie jest widoczny w widoku katalogu sys.certificates. Aby potwierdzić pomyślne przekazanie certyfikatu, możesz uruchomić polecenie RESTORE FILELISTONLY .
Następne kroki
W tym artykule przedstawiono sposób migrowania certyfikatu chroniącego klucz szyfrowania bazy danych za pomocą funkcji Transparent Data Encryption z lokalnego lub lokalnego wystąpienia programu SQL Server IaaS do usługi Azure SQL Managed Instance.
Zobacz Przywracanie kopii zapasowej bazy danych do usługi Azure SQL Managed Instance , aby dowiedzieć się, jak przywrócić kopię zapasową bazy danych do usługi Azure SQL Managed Instance.