將 VMware VM 移轉至已啟用伺服器端加密和客戶自控金鑰的 Azure VM
本文描述如何使用移轉和現代化工具 (無代理程式複寫),將 VMware VM 移轉至 Azure 虛擬機器,其中磁碟會使用伺服器端加密 (SSE) 搭配客戶自控金鑰 (CMK) 進行加密。
移轉和現代化入口網站體驗可讓您使用無代理程式複寫將 VMware VM 移轉至 Azure。入口網站體驗支援 DES/CMK。 啟動複寫之前,應先建立 DES,而且必須在啟動複寫時提供。 移轉時無法提供。 在本文中,您將了解如何建立及部署 Azure Resource Manager 範本,以複寫 VMware VM,並在 Azure 中設定複寫的磁碟,以使用 SSE 搭配 CMK。
本文中的範例會使用 Azure PowerShell 來執行建立和部署 Resource Manager 範本所需的工作。
深入了解針對受控磁碟使用伺服器端加密 (SSE) 搭配客戶受控金鑰 (CMK)。
必要條件
- 檢閱使用無代理程式複寫將 VMware VM 移轉至 Azure 的教學課程,以了解工具需求。
- 遵循這些指示來建立 Azure Migrate 專案,並將移轉和現代化工具新增至專案。
- 遵循這些指示在內部部署環境中設定適用於 VMware 的 Azure Migrate 設備,並完成探索。
準備進行複寫
VM 探索完成後,[移轉和現代化] 圖格上的 [探索到的伺服器] 行會顯示裝置探索到的 VMware VM 計數。
開始複寫 VM 之前,必須先備妥複寫基礎結構。
- 在目標區域中建立服務匯流排執行個體。 內部部署 Azure Migrate 設備會使用服務匯流排,與移轉和現代化服務通訊,以協調複寫和移轉。
- 建立儲存體帳戶,以用於從複寫傳輸作業記錄。
- 建立 Azure Migrate 設備上傳複寫資料的儲存體帳戶。
- 建立 Key Vault,並設定 Key Vault 來管理共用存取簽章權杖,以取得在步驟 3 和 4 中所建立儲存體帳戶上的 Blob 存取權。
- 針對在步驟 1 中建立的服務匯流排產生共用存取簽章權杖,並針對在上一個步驟中建立的 Key Vault 中的權杖建立祕密。
- 建立 Key Vault 存取原則,以提供內部部署 Azure Migrate 設備 (使用設備 AAD 應用程式) 以及移轉和現代化服務對 Key Vault 的存取權。
- 建立複寫原則,並使用上一個步驟中建立的複寫基礎結構詳細資料來設定移轉和現代化服務。
複寫基礎結構必須在針對移轉的目標 Azure 區域中,以及在要移轉 VM 的目標 Azure 訂用帳戶中建立。
當您第一次在專案中複寫 VM 時,移轉和現代化入口網站體驗會透過自動為您執行此動作來簡化複寫基礎結構的準備。 在本文中,我們將假設您已使用入口網站體驗複寫一或多個 VM,而且已建立複寫基礎結構。 我們將探討如何探索現有複寫基礎結構的詳細資料,以及如何將這些詳細資料對將用來設定使用 CMK 複寫的 Resource Manager 範本的輸入。
識別複寫基礎結構元件
- 在 Azure 入口網站上,移至資源群組頁面,然後選取建立 Azure Migrate 專案所在的資源群組。
- 從左側功能表中選取 [部署],然後搜尋開頭為字串 "Microsoft.MigrateV2.VMwareV2EnableMigrate" 的部署名稱。 您會看到入口網站體驗所建立、用來設定此專案中 VM 的複寫的 Resource Manager 範本清單。 我們將下載一個這類範本,並使用該範本做為基礎,以準備使用 CMK 複寫的範本。
- 若要下載範本,請選取上一個步驟中符合字串模式的任何部署 > 從左側功能表中選取 [範本] > 按一下頂端功能表中的 [下載]。 在本機儲存 template.json 檔案。 您將在最後一個步驟中編輯此範本檔案。
建立磁碟加密集
磁碟加密設定物件會將受控磁碟對應至包含要用於 SSE 之 CMK 的 Key Vault。 若要使用 CMK 複寫 VM,您將建立磁碟加密集,並傳遞其作為複寫作業的輸入。
遵循這裡的範例,使用 Azure PowerShell 建立磁碟加密集。 確保已在要移轉 VM 的目標訂用帳戶中以及在移轉的目標 Azure 區域中建立磁碟加密集。
磁碟加密集可以設定為使用客戶自控金鑰加密受控磁碟,或使用客戶自控金鑰和平台金鑰進行雙重加密。 若要使用雙重的待用加密選項,請遵循這裡的描述來設定磁碟加密集。
在下列範例中,磁碟加密集設定為使用客戶自控金鑰。
$Location = "southcentralus" #Target Azure region for migration
$TargetResourceGroupName = "ContosoMigrationTarget"
$KeyVaultName = "ContosoCMKKV"
$KeyName = "ContosoCMKKey"
$KeyDestination = "Software"
$DiskEncryptionSetName = "ContosoCMKDES"
$KeyVault = New-AzKeyVault -Name $KeyVaultName -ResourceGroupName $TargetResourceGroupName -Location $Location -EnableSoftDelete -EnablePurgeProtection
$Key = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KeyName -Destination $KeyDestination
$desConfig = New-AzDiskEncryptionSetConfig -Location $Location -SourceVaultId $KeyVault.ResourceId -KeyUrl $Key.Key.Kid -IdentityType SystemAssigned
$des = New-AzDiskEncryptionSet -Name $DiskEncryptionSetName -ResourceGroupName $TargetResourceGroupName -InputObject $desConfig
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
New-AzRoleAssignment -ResourceName $KeyVaultName -ResourceGroupName $TargetResourceGroupName -ResourceType "Microsoft.KeyVault/vaults" -ObjectId $des.Identity.PrincipalId -RoleDefinitionName "Reader"
取得要移轉的 VMware VM 的詳細資料
在此步驟中,您將使用 Azure PowerShell 來取得需要移轉的 VM 的詳細資料。 這些詳細資料將用來建構用於複寫的 Resource Manager 範本。 具體來說,有意義的兩個屬性為:
- 所探索 VM 的機器資源識別碼。
- VM 的磁碟清單及其磁碟識別碼。
$ProjectResourceGroup = "ContosoVMwareCMK" #Resource group that the Azure Migrate Project is created in
$ProjectName = "ContosoVMwareCMK" #Name of the Azure Migrate Project
$solution = Get-AzResource -ResourceGroupName $ProjectResourceGroup -ResourceType Microsoft.Migrate/MigrateProjects/solutions -ExpandProperties -ResourceName $ProjectName | where Name -eq "Servers-Discovery-ServerDis
covery"
# Displays one entry for each appliance in the project mapping the appliance to the VMware sites discovered through the appliance.
$solution.Properties.details.extendedDetails.applianceNameToSiteIdMapV2 | ConvertFrom-Json | select ApplianceName, SiteId
ApplianceName SiteId
------------- ------
VMwareApplianc /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite
複製與探索到 VM 的 Azure Migrate 設備對應的 SiteId 字串的值。 在上述範例中,SiteId 是 “/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite”
#Replace value with SiteId from the previous step
$SiteId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite"
$SiteName = Get-AzResource -ResourceId $SiteId -ExpandProperties | Select-Object -ExpandProperty Name
$DiscoveredMachines = Get-AzResource -ResourceGroupName $ProjectResourceGroup -ResourceType Microsoft.OffAzure/VMwareSites/machines -ExpandProperties -ResourceName $SiteName
#Get machine details
PS /home/bharathram> $MachineName = "FPL-W19-09" #Replace string with VMware VM name of the machine to migrate
PS /home/bharathram> $machine = $Discoveredmachines | where {$_.Properties.displayName -eq $MachineName}
PS /home/bharathram> $machine.count #Validate that only 1 VM was found matching this name.
複製要移轉的機器的 ResourceId、名稱和磁碟 uuid 值。
PS > $machine.Name
10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210
PS > $machine.ResourceId
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/machines/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210
PS > $machine.Properties.disks | select uuid, label, name, maxSizeInBytes
uuid label name maxSizeInBytes
---- ----- ---- --------------
6000C291-5106-2aac-7a74-4f33c3ddb78c Hard disk 1 scsi0:0 42949672960
6000C293-39a1-bd70-7b24-735f0eeb79c4 Hard disk 2 scsi0:1 53687091200
6000C29e-cbee-4d79-39c7-d00dd0208aa9 Hard disk 3 scsi0:2 53687091200
建立用於複寫的 Resource Manager 範本
- 在您選擇的編輯器中,開啟您在識別複寫基礎結構元件步驟中下載的 Resource Manager 範本檔案。
- 從範本中移除所有資源定義,但類型為 "Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems" 的資源定義除外
- 如果有上述類型的多個資源定義,請保留一個,其他全部移除。 從資源定義中移除任何 dependsOn 屬性定義。
- 在此步驟結束時,您應該會有類似下列範例的檔案,而且具有相同的屬性集。
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems",
"apiVersion": "2018-01-10",
"name": "ContosoMigration7371rsvault/VMware104e4replicationfabric/VMware104e4replicationcontainer/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_500937f3-805e-9414-11b1-f22923456e08",
"properties": {
"policyId": "/Subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.RecoveryServices/vaults/ContosoMigration7371rsvault/replicationPolicies/migrateVMware104e4sitepolicy",
"providerSpecificDetails": {
"instanceType": "VMwareCbt",
"vmwareMachineId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/machines/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_500937f3-805e-9414-11b1-f22923456e08",
"targetResourceGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/PayrollRG",
"targetNetworkId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/PayrollRG/providers/Microsoft.Network/virtualNetworks/PayrollNW",
"targetSubnetName": "PayrollSubnet",
"licenseType": "NoLicenseType",
"disksToInclude": [
{
"diskId": "6000C295-dafe-a0eb-906e-d47cb5b05a1d",
"isOSDisk": "true",
"logStorageAccountId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.Storage/storageAccounts/migratelsa1432469187",
"logStorageAccountSasSecretName": "migratelsa1432469187-cacheSas",
"diskType": "Standard_LRS"
}
],
"dataMoverRunAsAccountId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/runasaccounts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"snapshotRunAsAccountId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/runasaccounts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"targetBootDiagnosticsStorageAccountId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ContosoMigration/providers/Microsoft.Storage/storageAccounts/migratelsa1432469187",
"targetVmName": "PayrollWeb04"
}
}
}
]
}
- 編輯資源定義中的 name 屬性。 將 name 屬性中最後一個 "/" 後面的字串取代為 $machine.Name 的值 (來自先前的步驟)。
- 將 properties.providerSpecificDetails.vmwareMachineId 屬性的值變更為 $machine.ResourceId 的值 (來自先前的步驟)。
- 將 targetResourceGroupId、targetNetworkId、targetSubnetName 的值分別設定為目標資源群組識別碼、目標虛擬網路資源識別碼和目標子網路名稱。
- 將 licenseType 的值設定為 "WindowsServer",以套用此 VM 的 Azure Hybrid Benefit。 如果此 VM 不符合 Azure Hybrid Benefit 資格,請將 licenseType 的值設定為 NoLicenseType。
- 將 targetVmName 屬性的值變更為移轉的 VM 所需的 Azure 虛擬機器名稱。
- 選擇性地在 targetVmName 屬性下新增名為 targetVmSize 的屬性。 將 targetVmSize 屬性的值設定為移轉的 VM 所需的 Azure 虛擬機器大小。
- disksToInclude 屬性是複寫的磁碟輸入清單,每個清單項目都代表一個內部部署磁碟。 建立與內部部署 VM 上磁碟數目一樣多的清單項目。 將清單項目中的 diskId 屬性取代為上一個步驟中所識別磁碟的 uuid。 將 VM OS 磁碟的 isOSDisk 值設定為 "true",並將所有其他磁碟設定為 "false"。 讓 logStorageAccountId 和 logStorageAccountSasSecretName 屬性保持不變。 將 diskType 值設定為要用於磁碟的 Azure 受控磁碟類型 (Standard_LRS、Premium_LRS、StandardSSD_LRS)。 對於需要使用 CMK 加密的磁碟,請新增名為 diskEncryptionSetId 的屬性,並將值設定為建立磁碟加密集步驟中所建立磁碟加密集的資源識別碼 ($des.Id)
- 儲存編輯過的範本檔案。 針對上述範例,編輯過的範本檔案看起來如下所示:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems",
"apiVersion": "2018-01-10",
"name": "ContosoVMwareCMK00ddrsvault/VMwareApplianca8bareplicationfabric/VMwareApplianca8bareplicationcontainer/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210",
"properties": {
"policyId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.RecoveryServices/vaults/ContosoVMwareCMK00ddrsvault/replicationPolicies/migrateVMwareApplianca8basitepolicy",
"providerSpecificDetails": {
"instanceType": "VMwareCbt",
"vmwareMachineId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/machines/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210",
"targetResourceGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoMigrationTarget",
"targetNetworkId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/cmkRTest/providers/Microsoft.Network/virtualNetworks/cmkvm1_vnet",
"targetSubnetName": "cmkvm1_subnet",
"licenseType": "NoLicenseType",
"disksToInclude": [
{
"diskId": "6000C291-5106-2aac-7a74-4f33c3ddb78c",
"isOSDisk": "true",
"logStorageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
"logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
"diskEncryptionSetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
"diskType": "Standard_LRS"
},
{
"diskId": "6000C293-39a1-bd70-7b24-735f0eeb79c4",
"isOSDisk": "false",
"logStorageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
"logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
"diskEncryptionSetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
"diskType": "Standard_LRS"
},
{
"diskId": "6000C29e-cbee-4d79-39c7-d00dd0208aa9",
"isOSDisk": "false",
"logStorageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
"logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
"diskEncryptionSetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
"diskType": "Standard_LRS"
}
],
"dataMoverRunAsAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/runasaccounts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"snapshotRunAsAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/runasaccounts/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"targetBootDiagnosticsStorageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
"performAutoResync": "true",
"targetVmName": "FPL-W19-09"
}
}
}
]
}
設定複寫
您現在可以將編輯過的 Resource Manager 範本部署到專案資源群組,以為 VM 設定複寫。 了解如何使用 Azure Resource Manager 範本和 Azure PowerShell 部署資源
New-AzResourceGroupDeployment -ResourceGroupName $ProjectResourceGroup -TemplateFile "C:\Users\Administrator\Downloads\template.json"
DeploymentName : template
ResourceGroupName : ContosoVMwareCMK
ProvisioningState : Succeeded
Timestamp : 3/11/2020 8:52:00 PM
Mode : Incremental
TemplateLink :
Parameters :
Outputs :
DeploymentDebugLogLevel :
下一步
透過入口網站體驗監視複寫狀態,並執行測試移轉和移轉。