將受 TDE 保護資料庫的憑證移轉到 Azure SQL 受控執行個體
適用於:Azure SQL 受控執行個體
當您使用原生還原選項,將受到透明資料加密 (TDE) 保護的資料庫遷移到 Azure SQL 受控執行個體時,來自 SQL Server 執行個體的對應憑證必須在資料庫還原之前進行遷移。 本文將逐步引導您完成將憑證手動移轉至 Azure SQL 受控執行個體的程序:
- 將憑證匯出至個人資訊交換 (.pfx) 檔案
- 將憑證從檔案擷取至 base-64 字串
- 使用 PowerShell Cmdlet 上傳
如需替代選項,以使用完全受管理的服務,來順暢移轉受 TDE 保護的資料庫和對應憑證,請參閱如何使用資料庫移轉服務將內部部署資料庫遷移至 Azure SQL 受控執行個體。
重要
移轉的憑證僅用於還原受 TDE 保護的資料庫。 還原完成後,移轉的憑證會由不同的保護裝置取代,無論是服務管理憑證還是金鑰保存庫中的非對稱金鑰,視您在執行個體上設定的 TDE 類型而定。
必要條件
若要完成本文中的步驟,您必須符合下列必要條件:
- Pvk2Pfx 命令列工具已安裝在內部部署伺服器或其他計算機上,且可存取已匯出成檔案的憑證。 Pvk2Pfx 工具是 Enterprise Windows 驅動程式套件的一部分,這是獨立的命令列環境。
- 已安裝 Windows PowerShell 5.0 或更高版本。
請確保您已符合下列條件:
注意
本文使用 Azure Az PowerShell 模組,這是與 Azure 互動時建議使用的 PowerShell 模組。 若要開始使用 Az PowerShell 模組,請參閱安裝 Azure PowerShell。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。
重要
Azure SQL 受控執行個體仍然支援 PowerShell Azure Resource Manager 模組,但所有未來的開發都是針對 Az.Sql 模組。 如需這些 Cmdlet,請參閱 AzureRM.Sql \(英文\)。 Az 模組和 AzureRM 模組中命令的引數本質上完全相同。
請執行下列命令以安裝/更新模組:
Install-Module -Name Az.Sql
Update-Module -Name Az.Sql
將 TDE 憑證匯出為 .pfx 檔案
憑證可以直接從來源 SQL Server 執行個體匯出,或從憑證存放區匯出 (如果憑證保留在該處)。
從來源 SQL Server 執行個體匯出憑證
使用下列步驟以 SQL Server Management Studio 匯出憑證,並將其轉換成 .pfx 格式。 步驟中的憑證和檔案名稱和路徑將使用 TDE_Cert 和 full_path 的泛型名稱。 請將其取代為實際名稱。
在 SSMS 中,開啟新的查詢視窗,並連線到來源 SQL Server 執行個體。
使用以下指令碼列出受 TDE 保護的資料庫,並獲取保護要移轉資料庫加密的憑證名稱:
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
執行下指令碼本,將憑證匯出為兩個檔案 (.cer 和 .pvk),以保留公開和私密金鑰資訊:
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>' )
使用 PowerShell 控制台,使用 Pvk2Pfx 工具,將憑證資訊從兩個新建立的檔案複製到 .pfx 檔案:
.\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
從憑證存放區匯出憑證
如果憑證保留在 SQL Server 本機電腦憑證存放區中,則可以使用下列步驟匯出該憑證:
開啟 PowerShell 控制台,然後執行下列命令以開啟 Microsoft Management Console 的 [憑證] 嵌入式管理單元:
certlm
在 [憑證] MMC 嵌入式管理單元中,展開 [個人 > 憑證] 路徑,以查看憑證清單。
以滑鼠右鍵按一下憑證,然後按一下 [匯出]。
遵循精靈步驟,將憑證和私密金鑰匯出為 .pfx 格式。
使用 Azure PowerShell Cmdlet 將憑證上傳至 Azure SQL 受控執行個體
首先進行 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>
完成所有準備步驟之後,請執行下列命令,將 base-64編碼的憑證上傳至目標受控執行個體:
# 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
憑證現在即可用於指定的受控執行個體,並可成功還原受 TDE 保護的相對應資料庫備份。
注意
sys.certificates 目錄檢視中看不到上傳的憑證。 您可以執行 RESTORE FILELISTONLY 命令來確認憑證上傳成功。
下一步
在本文中,您已瞭解如何將具有透明資料加密之資料庫加密金鑰的保護憑證,從內部部署或 IaaS SQL Server 執行個體,移轉至 Azure SQL 受控執行個體。
請參閱將資料庫備份還原至 Azure SQL 受控執行個體,以瞭解如何將資料庫備份還原至 Azure SQL 受控執行個體。