Melakukan migrasi sertifikat database yang dilindungi TDE ke Azure SQL Managed Instance

Berlaku untuk:Azure SQL Managed Instance

Saat Anda memigrasikan database yang dilindungi oleh Transparent Data Encryption (TDE) ke Azure SQL Managed Instance menggunakan opsi pemulihan asli, sertifikat yang sesuai dari instans SQL Server perlu dimigrasikan sebelum pemulihan database. Artikel ini memandu Anda melalui proses migrasi manual sertifikat ke Azure SQL Managed Instance:

  • Mengekspor sertifikat ke file Pertukaran Informasi Pribadi (.pfx)
  • Mengekstrak sertifikat dari file ke string dasar-64
  • Mengunggahnya menggunakan cmdlet PowerShell

Untuk opsi alternatif menggunakan layanan terkelola penuh untuk migrasi mulus database yang dilindungi TDE dan sertifikat terkait, lihat Cara memigrasikan database lokal Anda ke Azure SQL Managed Instance menggunakan Azure Database Migration Service.

Penting

Sertifikat yang dimigrasikan digunakan untuk memulihkan database yang dilindungi TDE saja. Segera setelah pemulihan selesai, sertifikat yang dimigrasikan akan digantikan oleh pelindung yang berbeda, baik sertifikat yang dikelola layanan atau kunci asimetris dari key vault, tergantung pada jenis TDE yang Anda tetapkan pada instans.

Prasyarat

Untuk menyelesaikan langkah-langkah dalam artikel ini, Anda memerlukan prasyarat berikut:

Pastikan Anda mengaktifkan tindakan berikut:

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Penting

Modul PowerShell Azure Resource Manager masih didukung oleh Azure SQL Managed Instance, tetapi semua pengembangan di masa mendatang adalah untuk modul Az.Sql. Untuk cmdlet ini, lihat AzureRM.Sql. Argumen untuk perintah dalam modul Az dan dalam modul AzureRM secara substansial identik.

Jalankan perintah berikut di PowerShell untuk menginstal/memperbarui modul:

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

Mengekspor sertifikat TDE ke file .pfx

Sertifikat dapat diekspor langsung dari sumber SQL Server instance, atau dari penyimpanan sertifikat jika disimpan di sana.

Mengekspor sertifikat dari contoh SQL Server instance

Gunakan langkah-langkah berikut untuk mengekspor sertifikat dengan SQL Server Management Studio dan mengonversinya menjadi format .pfx. Nama generik TDE_Cert dan full_path digunakan untuk sertifikat dan nama file dan jalur melalui tahapan. Mereka harus diganti dengan nama yang sebenarnya.

  1. Di SSMS, buka jendela kueri baru dan sambungkan ke sumber SQL Server instance.

  2. Gunakan skrip berikut ini untuk mencantumkan database yang dilindungi TDE dan dapatkan nama sertifikat yang melindungi enkripsi database untuk dimigrasikan:

    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. Jalankan skrip berikut untuk mengekspor sertifikat ke sepasang file (.cer dan .pvk), menyimpan informasi kunci publik dan privat:

    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. Gunakan konsol PowerShell untuk menyalin informasi sertifikat dari sepasang file yang baru dibuat ke file .pfx, menggunakan alat 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
    

Mengekspor sertifikat dari penyimpanan sertifikat

Jika sertifikat disimpan di penyimpanan sertifikat mesin lokal SQL Server, sertifikat dapat diekspor menggunakan langkah-langkah berikut:

  1. Buka konsol PowerShell dan jalankan perintah berikut untuk membuka snap-in Sertifikat Konsol Manajemen Microsoft:

    certlm
    
  2. Dalam snap-in Sertifikat MMC, perluas jalur Personal > Sertifikat untuk melihat daftar sertifikat.

  3. Klik kanan sertifikat dan klik Ekspor.

  4. Ikuti panduan untuk mengekspor sertifikat dan kunci privat ke format .pfx.

Unggah sertifikat ke Azure SQL Managed Instance menggunakan cmdlet Azure PowerShell

  1. Mulai dengan langkah-langkah persiapan di 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. Setelah semua langkah persiapan selesai, jalankan perintah berikut untuk mengunggah sertifikat dasar-64 yang dikodekan ke instans terkelola target:

    # 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
    

Sertifikat sekarang tersedia untuk instans terkelola yang ditentukan, dan cadangan database yang dilindungi TDE yang sesuai berhasil dipulihkan.

Catatan

Sertifikat yang diunggah tidak terlihat dalam tampilan katalog sys.certificates. Untuk mengonfirmasi keberhasilan pengunggahan sertifikat, Anda dapat menjalankan perintah RESTORE FILELISTONLY .

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara memigrasikan sertifikat yang melindungi kunci enkripsi database dengan Transparent Data Encryption, dari instans di tempat atau IaaS SQL Server ke Azure SQL Managed Instance.

Lihat Memulihkan cadangan database ke Azure SQL Managed Instance untuk mempelajari cara memulihkan cadangan database ke Azure SQL Managed Instance.