Перенос виртуальных машин VMware на виртуальные машины Azure, поддерживающие шифрование на стороне сервера, и ключи, управляемые клиентом

В этой статье описывается перенос виртуальных машин VMware на виртуальные машины Azure с дисками, зашифрованными с помощью шифрования на стороне сервера (SSE) с ключами, управляемыми клиентом (CMK), с помощью миграции и модернизации (репликация без агента).

Интерфейс портала миграции и модернизации позволяет перенести виртуальные машины VMware в Azure с репликацией без агента. Интерфейс портала поддерживает DES/CMK. ПЕРЕД началом репликации необходимо создать DES и предоставить ее при запуске репликации. Его нельзя предоставить во время миграции. В этой статье вы узнаете, как создать и развернуть шаблон Azure Resource Manager для репликации виртуальной машины VMware и настроить реплицированные диски в Azure для использования SSE с CMK.

В примерах, приведенных в этой статье, для выполнения задач, необходимых для создания и развертывания шаблона диспетчера ресурсов, используется Azure PowerShell.

Дополнительные сведения о шифровании на стороне сервера (SSE) с ключами, управляемыми клиентом (CMK), для управляемых дисков.

Необходимые компоненты

  • Ознакомьтесь с руководством по переносу виртуальных машин VMware в Azure с помощью репликации без агента, чтобы разобраться в требованиях к инструментам.
  • Следуйте этим инструкциям , чтобы создать проект службы "Миграция Azure" и добавить средство миграции и модернизации в проект.
  • Выполните эти инструкции, чтобы настроить устройство службы "Миграция Azure" для VMware в локальной среде и завершить обнаружение.

Подготовка к репликации

После завершения обнаружения виртуальных машин строка "Обнаруженные серверы" на плитке "Миграция и модернизация" отображает количество виртуальных машин VMware, обнаруженных устройством.

Перед началом репликации виртуальных машин необходимо подготовить инфраструктуру репликации.

  1. Создайте экземпляр служебной шины в целевом регионе. Служебная шина используется локальным устройством службы "Миграция Azure" для взаимодействия со службой миграции и модернизации для координации репликации и миграции.
  2. Создайте учетную запись хранения для перемещения журналов операций из репликации.
  3. Создайте учетную запись хранения, в которую устройство службы "Миграция Azure" будет отправлять данные репликации.
  4. Создайте хранилище ключей и настройте его для управления маркерами подписанных URL-адресов для доступа к BLOB-объектам в учетных записях хранения, созданных при выполнении шагов 3 и 4.
  5. Создайте маркер подписанного URL-канала для служебной шины, созданной в шаге 1, и секрет для маркера в хранилище ключей, созданном в предыдущем шаге.
  6. Создайте политику доступа Key Vault для предоставления локального устройства миграции Azure (с помощью приложения AAD устройства) и доступа службы миграции и модернизации к Key Vault.
  7. Создайте политику репликации и настройте службу миграции и модернизации с подробными сведениями о инфраструктуре репликации, созданной на предыдущем шаге.

Инфраструктура репликации должна быть создана в целевом регионе Azure для миграции и в целевой подписке Azure, в которую выполняется миграция виртуальных машин.

Портал миграции и модернизации упрощает подготовку инфраструктуры репликации, автоматически выполняя это при репликации виртуальной машины впервые в проекте. В этой статье предполагается, что вы уже реплицировали одну виртуальную машину или несколько через интерфейс портала и что инфраструктура репликации уже создана. Мы рассмотрим поиск сведений о существующей инфраструктуре репликации и их применение как входных данных для шаблона диспетчера ресурсов, который будет использоваться для настройки репликации с помощью CMK.

Определение компонентов инфраструктуры репликации

  1. На портале Azure перейдите на страницу групп ресурсов и выберите группу ресурсов, в которой был создан проект службы "Миграция Azure".
  2. В меню слева выберите Развертывания и найдите имя развертывания, начинающееся со строки Microsoft.MigrateV2.VMwareV2EnableMigrate. Вы увидите список шаблонов диспетчера ресурсов, созданный интерфейсом портала для настройки репликации для виртуальных машин в этом проекте. Мы скачаем один такой шаблон и используем его как основу для подготовки шаблона к репликации с помощью CMK.
  3. Чтобы скачать шаблон, выберите любое развертывание, соответствующее шаблону строки на предыдущем шаге>, выберите шаблон из меню слева щелкните "Скачать" в верхнем меню>. Сохраните файл template.json на локальном компьютере. Вы измените этот файл шаблона в последнем шаге.

Создание набора шифрования дисков

Объект набора шифрования дисков сопоставляет управляемые диски с Key Vault, где содержится CMK для использования в SSE. Чтобы реплицировать виртуальные машины с помощью CMK, необходимо создать набор шифрования дисков и передать его как входные данные для операции репликации.

Повторите показанный здесь пример, чтобы создать набор шифрования дисков с помощью Azure PowerShell. Убедитесь в том, что набор шифрования дисков создан в целевой подписке, куда выполняется миграция виртуальных машин, и в целевом регионе 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

В этом шаге вы будете использовать Azure PowerShell для получения сведений о виртуальной машине, которую необходимо перенести. Эти сведения будут использоваться для создания шаблона диспетчера ресурсов для репликации. Интерес представляют в первую очередь два свойства.

  • Идентификатор ресурса компьютера для обнаруженных виртуальных машин.
  • Список дисков виртуальной машины и их идентификаторов.

$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

Скопируйте значение строки SiteId, соответствующей устройству службы "Миграция Azure", с помощью которого была обнаружена виртуальная машина. В приведенном выше примере SiteId — "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeee4e4e4e4e/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

Создание шаблона диспетчера ресурсов для репликации

  • Откройте файл шаблона диспетчера ресурсов, скачанный в шаге Определение компонентов инфраструктуры репликации, в любом редакторе.
  • Удалите все определения ресурсов из шаблона, кроме ресурсов типа 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, чтобы применить преимущество гибридного использования Azure для этой виртуальной машины. Если эта виртуальная машина не подходит для преимущества гибридного использования Azure, присвойте параметру licenseType значение NoLicenseType.
  • Замените значение свойства targetVmName на нужное имя виртуальной машины Azure для перенесенной виртуальной машины.
  • При желании добавьте свойство с именем targetVmSize под свойством targetVmName. Укажите в качестве значения свойства targetVmName желаемое имя для перенесенной виртуальной машины Azure.
  • Свойство disksToInclude представляет список входных данных диска для репликации, в котором каждый элемент соответствует одному локальному диску. Создайте элементы списка по количеству дисков на локальной виртуальной машине. Замените свойство diskId в элементе списка на UUID дисков, определенный в предыдущем шаге. Задайте для параметра 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"
                }
            }
        }
    ]
}

Настройка репликации

Теперь вы можете развернуть измененный шаблон диспетчера ресурсов в группе ресурсов проекта, чтобы настроить репликацию для виртуальной машины. Узнайте, как развертывать ресурсы с помощью шаблонов 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 :

Следующие шаги

Мониторинг состояния репликации с помощью интерфейса портала и выполнения тестовых миграций и миграции.