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:

  • Zainstalowany i zaktualizowany moduł programu Azure PowerShell.
  • Moduł Az.Sql.

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 programu PowerShell jest nadal obsługiwany przez usługę Azure SQL Managed Instance, ale wszystkie przyszłe programowanie dotyczy modułu Az.Sql. Aby uzyskać te polecenia cmdlet, zobacz AzureRM.Sql. Argumenty poleceń w module Az i modułach AzureRM są zasadniczo identyczne.

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.

  1. W programie SSMS otwórz nowe okno zapytania i połącz się ze źródłowym wystąpieniem programu SQL Server.

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

    List of TDE certificates

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

    Backup TDE certificate

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

  1. Otwórz konsolę programu PowerShell i wykonaj następujące polecenie, aby otworzyć przystawkę Certyfikaty programu Microsoft Management Console:

    certlm
    
  2. W przystawce MMC Certyfikaty rozwiń ścieżkę Osobiste > certyfikaty, aby wyświetlić listę certyfikatów.

  3. Kliknij prawym przyciskiem myszy certyfikat i kliknij polecenie Eksportuj.

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

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