Migrace certifikátu transparentního šifrování dat SQL Serveru do služby Azure SQL Managed Instance

Platí pro:Azure SQL Managed Instance

V tomto článku se dozvíte, jak migrovat certifikát před migrací databáze SQL Serveru chráněné transparentním šifrováním dat do služby Azure SQL Managed Instance pomocí možnosti nativního obnovení.

Když migrujete databázi chráněnou transparentním šifrováním dat (TDE) z SQL Serveru do spravované instance Azure SQL pomocí možnosti nativního obnovení, musíte před obnovením databáze do spravované instance SQL nejprve migrovat odpovídající certifikát.

Alternativně můžete pomocí plně spravované služby Azure Database Migration Service bezproblémově migrovat databázi chráněnou transparentním šifrováním dat i odpovídající certifikát.

Tento článek se zaměřuje na migraci databází z SQL Serveru do azure SQL Managed Instance. Pokud chcete přesouvat databáze mezi spravovanými instancemi SQL, přečtěte si téma:

Požadavky

K dokončení kroků v tomto článku budete potřebovat následující:

Ujistěte se, že máte následující požadavky:

Spuštěním následujících příkazů v PowerShellu nainstalujte nebo aktualizujte modul:

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

Exportujte certifikát TDE do souboru .pfx

Certifikát můžete exportovat přímo ze zdrojové instance SQL Serveru nebo z úložiště certifikátů, pokud ho tam uchováváte.

Export certifikátu ze zdrojové instance SQL Serveru

Následující kroky exportují certifikát pomocí aplikace SQL Server Management Studio a převedou ho do formátu .pfx. Obecné názvy TDE_Cert a full_path jsou zástupné symboly pro názvy certifikátů, názvy souborů a cesty. Nahraďte je skutečnými názvy.

  1. V nástroji SSMS otevřete nové okno dotazu a připojte se ke zdrojové instanci SQL Serveru.

  2. Pomocí následujícího skriptu vypíšete databáze chráněné transparentním šifrováním dat a získáte název certifikátu, který chrání šifrování databáze, které se má migrovat:

    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
    

    Snímek obrazovky se službou SSMS, který zobrazuje seznam certifikátů transparentního šifrování dat

  3. Následujícím skriptem exportujte certifikát do dvojice souborů (.cer a .pvk), které obsahují veřejný a privátní klíč:

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

    Snímek obrazovky v SSMS, který zobrazuje zálohovaný certifikát TDE.

  4. Pomocí konzoly PowerShellu zkopírujte informace o certifikátu z dvojice nově vytvořených souborů do souboru .pfx pomocí nástroje 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
    

Export certifikátu z úložiště certifikátů

Pokud certifikát ponecháte v úložišti certifikátů místního počítače SQL Serveru, exportujte ho pomocí následujících kroků:

  1. Otevřete konzolu PowerShell a spusťte následující příkaz, abyste otevřeli modul snap-in Certifikáty v konzoli Microsoft Management Console:

    certlm
    
  2. V modulu snap-in Certifikáty konzoly MMC rozbalte cestu Osobní>certifikáty a zobrazte seznam certifikátů.

  3. Klikněte pravým tlačítkem na certifikát a vyberte Exportovat.

  4. Podle průvodce exportujte certifikát a privátní klíč do formátu .pfx.

Nahrání certifikátu do azure SQL Managed Instance pomocí rutiny Azure PowerShellu

Důležité

K obnovení databáze chráněné TDE použijte pouze migrovaný certifikát. Krátce po dokončení obnovení se migrovaný certifikát nahradí jinou ochranou. Nová ochrana je certifikát spravovaný službou nebo asymetrický klíč z trezoru klíčů v závislosti na typu transparentního šifrování dat, který jste nastavili v instanci.

  1. Začněte s přípravnými kroky v prostředí 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 dokončení všech kroků přípravy spusťte následující příkazy pro nahrání certifikátu zakódovaného base-64 do cílové spravované instance SQL:

    # 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
    

Certifikát je nyní k dispozici pro zadanou spravovanou instanci SQL a můžete obnovit zálohu odpovídající databáze chráněné transparentním šifrováním dat.

Poznámka:

Nahraný certifikát není v sys.certificates zobrazení katalogu viditelný. Pokud chcete potvrdit úspěšné nahrání certifikátu, spusťte příkaz RESTORE FILELISTONLY.