A TDE-vel védett adatbázis tanúsítványának migrálása az Azure SQL Managed Instance-be

A következőre vonatkozik: Felügyelt Azure SQL-példány

Ha a natív visszaállítási beállítással migrál egy transzparens adattitkosítás (TDE) által védett adatbázist a felügyelt Azure SQL-példányba, az SQL Server-példány megfelelő tanúsítványát át kell telepíteni az adatbázis-visszaállítás előtt. Ez a cikk végigvezeti a tanúsítvány manuális migrálásának folyamatán a felügyelt Azure SQL-példányra:

  • A tanúsítvány exportálása személyes adatcsere -fájlba (.pfx)
  • A tanúsítvány kinyerése fájlból egy base-64 sztringbe
  • Feltöltés PowerShell-parancsmaggal

Ha egy teljes körűen felügyelt szolgáltatást használ egy TDE-vel védett adatbázis és egy megfelelő tanúsítvány zökkenőmentes migrálásához, olvassa el a helyszíni adatbázis azure sql managed instance-be való migrálását az Azure Database Migration Service használatával.

Fontos

A migrált tanúsítvány csak a TDE által védett adatbázis visszaállítására szolgál. A visszaállítás befejezése után a migrált tanúsítványt egy másik védő váltja fel, vagy egy szolgáltatás által felügyelt tanúsítványra vagy a kulcstartó aszimmetrikus kulcsára a példányon beállított TDE típusától függően.

Előfeltételek

A cikkben leírt lépések elvégzéséhez a következő előfeltételekre lesz szüksége:

  • Telepített Pvk2Pfx parancssori eszköz egy helyszíni kiszolgálón vagy egy olyan számítógépen, amely hozzáfér a fájlként exportált tanúsítványhoz. A Pvk2Pfx eszköz az Enterprise Windows Driver Kit része, amely egy önálló parancssori környezet.
  • Telepített Windows PowerShell, 5.0-s vagy újabb verzió.

Győződjön meg róla, hogy rendelkezik az alábbiakkal:

Feljegyzés

Ez a cikk az Azure Az PowerShell-modult használja, amely az Azure-ral való interakcióhoz ajánlott PowerShell-modul. Az Az PowerShell-modul használatának megkezdéséhez lásd az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Fontos

A PowerShell Azure Resource Manager modult továbbra is támogatja az Azure SQL Managed Instance, de minden jövőbeli fejlesztés az Az.Sql modulhoz tartozik. Ezekhez a parancsmagokhoz lásd: AzureRM.Sql. Az Az modulban és az AzureRM-modulokban található parancsok argumentumai lényegében azonosak.

Futtassa a következő parancsokat a PowerShellben a modul telepítéséhez/frissítéséhez:

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

A TDE-tanúsítvány exportálása .pfx fájlba

A tanúsítvány exportálható közvetlenül a forrás SQL Server-példányból vagy a tanúsítványtárolóból, ha az ott van.

A tanúsítvány exportálása a forrás SQL Server-példányból

Az alábbi lépésekkel exportálhatja a tanúsítványt az SQL Server Management Studióval, és .pfx formátumúvá alakíthatja. A lépések során a rendszer az általános TDE_Cert és full_path nevet használja a tanúsítványokhoz, a fájlnevekhez és az elérési utakhoz. Ezeket a gyakorlatban a tényleges nevekre kell cserélni.

  1. Az SSMS-ben nyisson meg egy új lekérdezési ablakot, és csatlakozzon a forrás SQL Server-példányhoz.

  2. A következő szkripttel listázhatja a TDE által védett adatbázisokat, és lekérheti a migrálni kívánt adatbázis titkosítását védő tanúsítvány nevét:

    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. A következő szkriptet futtatva a tanúsítványt két fájlba (.cer és .pvk) exportálhatja, megőrizve a nyilvános és a titkos kulcs adatait:

    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. A PowerShell-konzol használatával másolja a tanúsítványadatokat egy újonnan létrehozott fájlpárból egy .pfx fájlba a Pvk2Pfx eszközzel:

    .\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk  -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
    

Tanúsítvány exportálása tanúsítványtárolóból

Ha a tanúsítvány az SQL Server helyi számítógép tanúsítványtárolójában van tárolva, a következő lépésekkel exportálható:

  1. Nyissa meg a PowerShell-konzolt, és hajtsa végre a következő parancsot a Microsoft Felügyeleti konzol Tanúsítványok beépülő moduljának megnyitásához:

    certlm
    
  2. A Tanúsítványok MMC beépülő modulban bontsa ki a személyes > tanúsítványok elérési útját a tanúsítványok listájának megtekintéséhez.

  3. Kattintson a jobb gombbal a tanúsítványra, és válassza az Exportálás parancsot.

  4. A varázslót követve exportálhatja a tanúsítványt és a titkos kulcsot .pfx formátumba.

A tanúsítvány feltöltése felügyelt Azure SQL-példányba egy Azure PowerShell-parancsmag használatával

  1. Előkészítő lépések a PowerShellben:

    # 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. Az összes előkészítési lépés elvégzése után futtassa a következő parancsokat a base-64 kódolású tanúsítvány feltöltéséhez a cél felügyelt példányra:

    # 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
    

A tanúsítvány már elérhető a megadott felügyelt példány számára, és a megfelelő TDE által védett adatbázis biztonsági mentése sikeresen visszaállítható.

Feljegyzés

A feltöltött tanúsítvány nem látható a sys.certificates katalógusnézetben. A tanúsítvány sikeres feltöltésének megerősítéséhez futtassa a RESTORE FILELISTONLY parancsot.

Következő lépések

Ebből a cikkből megtudhatja, hogyan migrálhat egy adatbázis titkosítási kulcsát védő tanúsítványt transzparens adattitkosítás a helyszíni vagy az IaaS SQL Server-példányból a felügyelt Azure SQL-példányba.

Az adatbázis biztonsági mentésének visszaállítása felügyelt Azure SQL-példányra című cikkből megtudhatja, hogyan állíthatja vissza az adatbázis biztonsági mentését a felügyelt Azure SQL-példányra.