Migrar VMs VMware para VMs do Azure habilitadas com criptografia do lado do servidor e chaves gerenciadas pelo cliente

Este artigo descreve como migrar VMs VMware para máquinas virtuais do Azure com discos criptografados usando criptografia do lado do servidor (SSE) com chaves gerenciadas pelo cliente (CMK), usando migração e modernização (replicação sem agente).

A experiência do portal de migração e modernização permite migrar VMs VMware para o Azure com replicação sem agente. A experiência do portal suporta DES/CMK. O DES deve ser criado antes de iniciar a replicação e deve ser fornecido durante o início da replicação. Não pode ser fornecido no momento da migração. Neste artigo, você verá como criar e implantar um modelo do Azure Resource Manager para replicar uma VM VMware e configurar os discos replicados no Azure para usar SSE com CMK.

Os exemplos neste artigo usam o Azure PowerShell para executar as tarefas necessárias para criar e implantar o modelo do Gerenciador de Recursos.

Saiba mais sobre a criptografia do lado do servidor (SSE) com chaves gerenciadas pelo cliente (CMK) para discos gerenciados.

Pré-requisitos

  • Analise o tutorial sobre migração de VMs VMware para o Azure com replicação sem agente para entender os requisitos da ferramenta.
  • Siga estas instruções para criar um projeto do Azure Migrate e adicionar a ferramenta de migração e modernização ao projeto.
  • Siga estas instruções para configurar o dispositivo Azure Migrate para VMware em seu ambiente local e concluir a descoberta.

Prepare-se para a replicação

Quando a descoberta de VM estiver concluída, a linha Servidores descobertos no bloco Migração e modernização mostrará uma contagem de VMs VMware descobertas pelo dispositivo.

Antes de começar a replicar VMs, a infraestrutura de replicação precisa estar preparada.

  1. Crie uma instância do Service Bus na região de destino. O Service Bus é usado pelo dispositivo Azure Migrate local para se comunicar com o serviço de Migração e modernização para coordenar a replicação e a migração.
  2. Crie uma conta de armazenamento para transferência de logs de operação da replicação.
  3. Crie uma conta de armazenamento para a qual o dispositivo Azure Migrate carregue dados de replicação.
  4. Crie um Cofre de Chaves e configure o Cofre de Chaves para gerenciar tokens de assinatura de acesso compartilhado para acesso de blob nas contas de armazenamento criadas nas etapas 3 e 4.
  5. Gere um token de assinatura de acesso compartilhado para o barramento de serviço criado na etapa 1 e crie um segredo para o token no Cofre da Chave criado na etapa anterior.
  6. Crie uma política de acesso ao Cofre da Chave para conceder ao dispositivo Azure Migrate local (usando o aplicativo AAD do dispositivo) e ao Serviço de Migração e modernização acesso ao Cofre da Chave.
  7. Crie uma política de replicação e configure o serviço de migração e modernização com detalhes da infraestrutura de replicação criada na etapa anterior.

A infraestrutura de replicação deve ser criada na região do Azure de destino para a migração e na assinatura do Azure de destino para a qual as VMs estão sendo migradas.

A experiência do portal de migração e modernização simplifica a preparação da infraestrutura de replicação, fazendo isso automaticamente quando você replica uma VM pela primeira vez em um projeto. Neste artigo, assumiremos que você já replicou uma ou mais VMs usando a experiência do portal e que a infraestrutura de replicação já está criada. Veremos como descobrir detalhes da infraestrutura de replicação existente e como usar esses detalhes como entradas para o modelo do Gerenciador de Recursos que será usado para configurar a replicação com CMK.

Identificação de componentes da infraestrutura de replicação

  1. No portal do Azure, vá para a página de grupos de recursos e selecione o grupo de recursos no qual o projeto Azure Migrate foi criado.
  2. Selecione Implantações no menu esquerdo e procure um nome de implantação começando com a cadeia de caracteres "Microsoft.MigrateV2.VMwareV2EnableMigrate". Você verá uma lista de modelos do Resource Manager criados pela experiência do portal para configurar a replicação para VMs neste projeto. Vamos baixar um desses modelos e usá-lo como base para preparar o modelo para replicação com CMK.
  3. Para baixar o modelo, selecione qualquer implantação que corresponda ao padrão de cadeia de caracteres na etapa > anterior, selecione Modelo no menu esquerdo Clique em Download no menu > superior. Salve o arquivo template.json localmente. Você editará esse arquivo de modelo na última etapa.

Criar um conjunto de criptografia de disco

Um objeto de conjunto de criptografia de disco mapeia Managed Disks para um Cofre de Chaves que contém a CMK a ser usada para SSE. Para replicar VMs com CMK, você criará um conjunto de criptografia de disco e o passará como uma entrada para a operação de replicação.

Siga o exemplo aqui para criar um conjunto de criptografia de disco usando o Azure PowerShell. Verifique se o conjunto de criptografia de disco foi criado na assinatura de destino para a qual as VMs estão sendo migradas e na região do Azure de destino para a migração.

O conjunto de criptografia de disco pode ser configurado para criptografar discos gerenciados com uma chave gerenciada pelo cliente ou para criptografia dupla com uma chave gerenciada pelo cliente e uma chave de plataforma. Para usar a opção de criptografia dupla em repouso, configure o conjunto de criptografia de disco conforme descrito aqui.

No exemplo mostrado abaixo, o conjunto de criptografia de disco é configurado para usar uma chave gerenciada pelo cliente.

$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"

Obtenha detalhes da VM VMware a ser migrada

Nesta etapa, você usará o Azure PowerShell para obter os detalhes da VM que precisa ser migrada. Esses detalhes serão usados para construir o modelo do Gerenciador de Recursos para replicação. Especificamente, os dois imóveis de interesse são:

  • O ID de recurso da máquina para as VMs descobertas.
  • A lista de discos para a VM e seus identificadores de disco.

$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/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite

Copie o valor da cadeia de caracteres SiteId correspondente ao dispositivo Azure Migrate pelo qual a VM é descoberta. No exemplo mostrado acima, o SiteId é "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite"


#Replace value with SiteId from the previous step
$SiteId = "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/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.

Copie os valores ResourceId, name e disk uuid para a máquina a ser migrada.

PS > $machine.Name
10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210
PS > $machine.ResourceId
/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/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

Criar modelo do Gerenciador de Recursos para replicação

  • Abra o arquivo de modelo do Gerenciador de Recursos que você baixou na etapa Identificando componentes da infraestrutura de replicação em um editor de sua escolha.
  • Remova todas as definições de recursos do modelo, exceto recursos do tipo "Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems"
  • Se houver várias definições de recursos do tipo acima, remova todas, exceto uma. Remova todas as definições de propriedade dependsOn da definição de recurso.
  • No final desta etapa, você deve ter um arquivo que se pareça com o exemplo abaixo e tenha o mesmo conjunto de propriedades.
{
    "$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/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.RecoveryServices/vaults/ContosoMigration7371rsvault/replicationPolicies/migrateVMware104e4sitepolicy",
                "providerSpecificDetails": {
                    "instanceType": "VMwareCbt",
                    "vmwareMachineId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/machines/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_500937f3-805e-9414-11b1-f22923456e08",
                    "targetResourceGroupId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/PayrollRG",
                    "targetNetworkId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/PayrollRG/providers/Microsoft.Network/virtualNetworks/PayrollNW",
                    "targetSubnetName": "PayrollSubnet",
                    "licenseType": "NoLicenseType",
                    "disksToInclude": [
                        {
                            "diskId": "6000C295-dafe-a0eb-906e-d47cb5b05a1d",
                            "isOSDisk": "true",
                            "logStorageAccountId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.Storage/storageAccounts/migratelsa1432469187",
                            "logStorageAccountSasSecretName": "migratelsa1432469187-cacheSas",
                            "diskType": "Standard_LRS"
                        }
                    ],
                    "dataMoverRunAsAccountId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/runasaccounts/b090bef3-b733-5e34-bc8f-eb6f2701432a",
                    "snapshotRunAsAccountId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.OffAzure/VMwareSites/VMware104e4site/runasaccounts/b090bef3-b733-5e34-bc8f-eb6f2701432a",
                    "targetBootDiagnosticsStorageAccountId": "/subscriptions/6785ea1f-ac40-4244-a9ce-94b12fd832ca/resourceGroups/ContosoMigration/providers/Microsoft.Storage/storageAccounts/migratelsa1432469187",
                    "targetVmName": "PayrollWeb04"
                }
            }
        }
    ]
}
  • Edite a propriedade name na definição de recurso. Substitua a cadeia de caracteres que segue o último "/" na propriedade name pelo valor de $machine. Name( da etapa anterior).
  • Altere o valor da propriedade properties.providerSpecificDetails.vmwareMachineId com o valor de $machine. ResourceId( da etapa anterior).
  • Defina os valores para targetResourceGroupId, targetNetworkId, targetSubnetName para o ID do grupo de recursos de destino, ID do recurso de rede virtual de destino e nome da sub-rede de destino, respectivamente.
  • Defina o valor de licenseType como "WindowsServer" para aplicar o Benefício Híbrido do Azure para esta VM. Se esta VM não estiver qualificada para o Benefício Híbrido do Azure, defina o valor de licenseType como NoLicenseType.
  • Altere o valor da propriedade targetVmName para o nome da máquina virtual do Azure desejado para a VM migrada.
  • Opcionalmente, adicione uma propriedade chamada targetVmSize abaixo da propriedade targetVmName . Defina o valor da propriedade targetVmSize para o tamanho desejado da máquina virtual do Azure para a VM migrada.
  • A propriedade disksToInclude é uma lista de entradas de disco para replicação com cada item de lista representando um disco local. Crie tantos itens de lista quanto o número de discos na VM local. Substitua a propriedade diskId no item de lista pelo uuid dos discos identificados na etapa anterior. Defina o valor isOSDisk como "true" para o disco do sistema operacional da VM e "false" para todos os outros discos. Deixe as propriedades logStorageAccountId e logStorageAccountSasSecretName inalteradas. Defina o valor diskType como o tipo de Disco Gerenciado do Azure (Standard_LRS, Premium_LRS StandardSSD_LRS) a ser usado para o disco. Para os discos que precisam ser criptografados com CMK, adicione uma propriedade chamada diskEncryptionSetId e defina o valor como a ID do recurso do conjunto de criptografia de disco criado($des. Id) na etapa Criar um conjunto de criptografia de disco
  • Salve o arquivo de modelo editado. Para o exemplo acima, o arquivo de modelo editado tem a seguinte aparência:
{
    "$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/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.RecoveryServices/vaults/ContosoVMwareCMK00ddrsvault/replicationPolicies/migrateVMwareApplianca8basitepolicy",
                "providerSpecificDetails": {
                    "instanceType": "VMwareCbt",
                    "vmwareMachineId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/machines/10-150-8-52-b090bef3-b733-5e34-bc8f-eb6f2701432a_50098f99-f949-22ca-642b-724ec6595210",
                    "targetResourceGroupId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoMigrationTarget",
                    "targetNetworkId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/cmkRTest/providers/Microsoft.Network/virtualNetworks/cmkvm1_vnet",
                    "targetSubnetName": "cmkvm1_subnet",
                    "licenseType": "NoLicenseType",
                    "disksToInclude": [
                        {
                            "diskId": "6000C291-5106-2aac-7a74-4f33c3ddb78c",
                            "isOSDisk": "true",
                            "logStorageAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
                            "logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
                            "diskEncryptionSetId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
                            "diskType": "Standard_LRS"
                        },
                        {
                            "diskId": "6000C293-39a1-bd70-7b24-735f0eeb79c4",
                            "isOSDisk": "false",
                            "logStorageAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
                            "logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
                            "diskEncryptionSetId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
                            "diskType": "Standard_LRS"
                        },
                        {
                            "diskId": "6000C29e-cbee-4d79-39c7-d00dd0208aa9",
                            "isOSDisk": "false",
                            "logStorageAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
                            "logStorageAccountSasSecretName": "migratelsa1671875959-cacheSas",
                            "diskEncryptionSetId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/CONTOSOMIGRATIONTARGET/providers/Microsoft.Compute/diskEncryptionSets/ContosoCMKDES",
                            "diskType": "Standard_LRS"
                        }
                    ],
                    "dataMoverRunAsAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/runasaccounts/b090bef3-b733-5e34-bc8f-eb6f2701432a",
                    "snapshotRunAsAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite/runasaccounts/b090bef3-b733-5e34-bc8f-eb6f2701432a",
                    "targetBootDiagnosticsStorageAccountId": "/subscriptions/509099b2-9d2c-4636-b43e-bd5cafb6be69/resourceGroups/ContosoVMwareCMK/providers/Microsoft.Storage/storageAccounts/migratelsa1671875959",
                    "performAutoResync": "true",
                    "targetVmName": "FPL-W19-09"
                }
            }
        }
    ]
}

Configurar a replicação

Agora você pode implantar o modelo editado do Gerenciador de Recursos no grupo de recursos do projeto para configurar a replicação para a VM. Saiba como implantar recursos com modelos do Azure Resource Manager e 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 :

Próximos passos

Monitore o status da replicação por meio da experiência do portal e execute migrações e migrações de teste.