Migrar as VMs do VMware para as VMs do Azure habilitadas com a criptografia do lado do servidor e as chaves gerenciadas pelo cliente
Este artigo descreve como migrar as VMs do VMware para máquinas virtuais do Azure com discos criptografados usando a SSE (criptografia do lado do servidor) com as CMK (chaves gerenciadas pelo cliente), usando a ferramenta de Migração e modernização (replicação sem agente).
A experiência do portal de Migração e modernização permite migrar as VMs do VMware para as VMs do Azure com replicação sem agente. A experiência do portal dá suporte a DES/CMK. O DES deve ser criado antes de iniciar a replicação e deve ser fornecido durante a replicação inicial. Ele não pode ser fornecido no momento da migração. Neste artigo, você verá como criar e implantar um modelo de Azure Resource Manager para replicar uma VM do VMware e configurar os discos replicados no Azure para usar a SSE com as CMK.
Os exemplos deste artigo usam o Azure PowerShell para executar as tarefas necessárias para criar e implantar o modelo do Resource Manager.
Saiba mais sobre a SSE (criptografia do lado do servidor) com as CMKs (chaves gerenciadas pelo cliente) para discos gerenciados.
Pré-requisitos
- Examine o tutorial sobre migração de VMs do VMware para o Azure com replicação sem agente a fim de entender os requisitos da ferramenta.
- Siga essas instruções para criar um projeto de Migrações para Azure e adicionar a ferramenta de Migração e modernização ao projeto.
- Siga estas instruções para configurar o dispositivo de Migrações para Azure para VMware em seu ambiente local e concluir a descoberta.
Preparar a replicação
Depois que a descoberta de VM for concluída, a linha Servidores Descobertos no bloco de Migração e modernização vai mostrar a contagem de VMs do VMware descobertas pelo dispositivo.
Para iniciar a replicação de VMs, a infraestrutura de replicação precisará ser preparada.
- Crie uma instância do Barramento de Serviço na região de destino. O Barramento de Serviço é usado pelo dispositivo de Migrações para Azure local para se comunicar com o serviço de Migração e modernização para coordenar a replicação e a migração.
- Crie uma conta de armazenamento para transferência de logs de operação da replicação.
- Crie uma conta de armazenamento para o dispositivo de Migrações para Azure carregar os dados de replicação.
- Crie um cofre de chaves e configure-o para gerenciar os tokens de assinatura de acesso compartilhado para acesso a blob nas contas de armazenamento criadas nas etapas 3 e 4.
- 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 de chaves criado na etapa anterior.
- Crie uma política de acesso do Key Vault para conceder ao dispositivo local de Migrações para Azure (usando o aplicativo AAD do dispositivo) e o acesso do serviço de Migração e modernização ao Key Vault.
- Crie uma política de replicação e configure o serviço de Migração e modernização com os 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 para você ao replicar uma VM pela primeira vez em um projeto. Neste artigo, vamos supor que você já tenha replicado uma ou mais VMs usando a experiência do portal e que a infraestrutura de replicação já tenha sido criada. Vamos examinar como descobrir detalhes da infraestrutura de replicação existente e como usar esses detalhes como entradas para o modelo do Resource Manager que será usado para configurar a replicação com as CMK.
Identificação dos componentes da infraestrutura de replicação
- No portal do Azure, acesse a página de grupos de recursos e selecione o grupo de recursos em que o projeto de Migrações para Azure foi criado.
- Selecione Implantações no menu à esquerda e pesquise 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 as CMK.
- Para baixar o modelo, selecione qualquer implantação que corresponda ao padrão de cadeia de caracteres na etapa anterior > selecione Modelo no menu à esquerda > Clique em Baixar 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 o Managed Disks para um Key Vault que contém a CMK a ser usada para a SSE. Para replicar VMs com as CMK, você criará um conjunto de criptografia de disco e o passará como entrada para a operação de replicação.
Siga este exemplo 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 está 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"
Obter detalhes da VM do VMware a migrar
Nesta etapa, você usará o Azure PowerShell para obter os detalhes da VM que precisam ser migrados. Esses detalhes serão usados para construir o modelo do Resource Manager para replicação. Especificamente, as duas propriedades de interesse são:
- A ID de recurso do computador para as VMs descobertas.
- A lista de discos da 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoVMwareCMK/providers/Microsoft.OffAzure/VMwareSites/VMwareApplianca8basite
Copie o valor da cadeia de caracteres SiteId correspondente ao dispositivo de Migrações para Azure por meio do qual a VM é descoberta. No exemplo mostrado acima, o 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.
Copie os valores de ResourceId, nome e UUID de disco para o computador a ser migrado.
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
Criar modelo do Resource Manager para replicação
- Abra o arquivo de modelo do Resource Manager que você baixou na etapa Identificação dos componentes da infraestrutura de replicação em um editor de sua preferência.
- Remova todas as definições de recurso do modelo, exceto os recursos do tipo "Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationMigrationItems"
- Se houver várias definições de recurso do tipo acima, remova todas, menos uma. Remova todas as definições da propriedade dependsOn da definição de recurso.
- Ao final desta etapa, você deverá ter um arquivo semelhante ao exemplo abaixo e com 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/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"
}
}
}
]
}
- Edite a propriedade name na definição do recurso. Substitua a cadeia de caracteres que vem após a última "/" da propriedade name pelo valor $machine.Name (da etapa anterior).
- Altere o valor da propriedade properties.providerSpecificDetails.vmwareMachineId pelo valor $machine.ResourceId (da etapa anterior).
- Defina os valores de targetResourceGroupId, targetNetworkId e targetSubnetName com a ID do grupo de recursos de destino, a ID do recurso de rede virtual de destino e o nome da sub-rede de destino, respectivamente.
- Defina o valor de licenseType como "WindowsServer" para aplicar o Benefício Híbrido do Azure a essa VM. Se essa 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 com 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 que representa um disco local. Crie tantos itens de lista quanto o número de discos na VM local. Substitua a propriedade diskId do item de lista pelo UUID dos discos identificados na etapa anterior. Defina o valor de isOSDisk como "true" para o disco do SO da VM e "false" para todos os outros discos. Deixe as propriedades logStorageAccountId e logStorageAccountSasSecretName inalteradas. Defina o valor de diskType com 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 as CMK, adicione uma propriedade chamada diskEncryptionSetId e defina o valor da 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/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"
}
}
}
]
}
Configurar a replicação
Agora você pode implantar o modelo do Resource Manager editado no grupo de recursos do projeto para configurar a replicação para a VM. Saiba como implantar recursos com os modelos do Azure Resource Manager e o 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óximas etapas
Monitore a replicação do status por meio da experiência do portal e execute migrações de testes e migrações reais.