Restringa o acesso à importação e exportação de discos geridos usando o Private Link

Aplica-se a: ✔️ Máquinas Virtuais Linux ✔️ Máquinas Virtuais Windows ✔️ Conjuntos de dimensionamento flexível

Utilize endpoints privados para restringir a importação e exportação de discos geridos. Aceda de forma segura aos dados através do Azure Private Link a partir de clientes na sua rede virtual Azure. O ponto final privado usa um endereço IP do espaço de endereçamento da sua rede virtual para o seu serviço de discos geridos. O tráfego entre clientes na sua rede virtual e discos geridos mantém-se na rede virtual e no Private Link na rede backbone da Microsoft, o que reduz a exposição à internet pública.

Este artigo mostra como configurar o Private Link para importação e exportação de disco gerido usando CLI do Azure ou Azure PowerShell. Crie um recurso de acesso ao disco e ligue-o a uma rede virtual na mesma subscrição, criando um endpoint privado. Depois associe um disco ou snapshot ao recurso de acesso ao disco. Por fim, defina a política de acesso à rede do disco ou instantâneo para AllowPrivate, de modo a limitar o acesso à sua rede virtual.

Defina a política de acesso à rede para DenyAll impedir que alguém exporte dados de um disco ou snapshot. A política de acesso à rede por defeito é AllowAll.

Pré-requisitos

Antes de começar, instale o módulo mais recente do CLI do Azure ou Azure PowerShell.

Limitações

  • Não é possível importar ou exportar mais de 100 discos ou instantâneos ao mesmo tempo com o mesmo recurso de acesso ao disco
  • Não é possível carregar para um disco que possui simultaneamente um recurso de acesso ao disco e um conjunto de criptografia de disco.
  • Além dos destinos de escala que se aplicam a discos individuais, os recursos de acesso ao disco têm mais destinos de escala centrados na entrada/saída de dados. Esses limites se aplicam cumulativamente a todos os discos associados a um recurso de acesso ao disco. Para mais detalhes ver aqui
  • O recurso de acesso ao disco deve estar na mesma região e subscrição do disco ao qual o associa

Entrar e definir variáveis

Escolha um separador para usar CLI do Azure ou Azure PowerShell. Defina valores para a sua subscrição, grupo de recursos, região, recurso de acesso ao disco, rede virtual, sub-rede, endpoint privado e zona DNS privada. Os procedimentos restantes reutilizam estas variáveis. Para criar um snapshot protegido, forneça também o nome de um disco de origem existente e um nome para o novo snapshot.

subscriptionId=yourSubscriptionId
resourceGroupName=yourResourceGroupName
region=northcentralus
diskAccessName=yourDiskAccessForPrivateLink
vnetName=yourVnetForPrivateLink
subnetName=yourSubnetForPrivateLink
privateEndpointName=yourPrivateEndpointForSecureMDExportImport
privateEndpointConnectionName=yourPrivateEndpointConnection
privateDnsZoneName=privatelink.blob.core.windows.net
privateDnsZoneLinkName=yourDnsLink
privateDnsZoneGroupName=yourZoneGroup

# The name of an existing disk that is the source of the snapshot.
sourceDiskName=yourSourceDiskForSnapshot

# The name of the new snapshot secured with Private Link.
snapshotNameSecuredWithPrivateLink=yourSnapshotNameSecuredWithPrivateLink

az login
az account set --subscription $subscriptionId

Criar um recurso de acesso ao disco

Use o grupo de recursos, a região e o nome do recurso de acesso ao disco que definiu anteriormente. O comando az disk-access create cria o recurso de acesso ao disco. Depois, az disk-access show armazena o identificador do recurso em $diskAccessId para procedimentos posteriores.

az disk-access create -n $diskAccessName -g $resourceGroupName -l $region

diskAccessId=$(az disk-access show -n $diskAccessName -g $resourceGroupName --query [id] -o tsv)

Criar uma rede virtual

Políticas de rede, como grupos de segurança de rede (NSGs), não são suportadas para endpoints privados. Para implementar um endpoint privado numa sub-rede, desative as políticas de rede de endpoint privado nessa sub-rede.

Use os nomes do grupo de recursos, da rede virtual e das sub-redes que definiu anteriormente. O comando create da rede vnet az cria a rede virtual e a sub-rede. Em seguida, az network vnet subnet update desativa as políticas de rede de pontos finais privados na sub-rede.

az network vnet create --resource-group $resourceGroupName \
    --name $vnetName \
    --subnet-name $subnetName

az network vnet subnet update --resource-group $resourceGroupName \
    --name $subnetName \
    --vnet-name $vnetName \
    --private-endpoint-network-policies Disabled

Crie um endpoint privado para o recurso de acesso ao disco

Use o grupo de recursos, endpoint privado, rede virtual, sub-rede e nomes de ligação que definiu anteriormente. Este procedimento também utiliza $diskAccessId do procedimento de recurso de acesso ao disco. O comando az network private-endpoint create cria um ponto final privado para o recurso de acesso ao disco.

az network private-endpoint create --resource-group $resourceGroupName \
    --name $privateEndpointName \
    --vnet-name $vnetName \
    --subnet $subnetName \
    --private-connection-resource-id $diskAccessId \
    --group-ids disks \
    --connection-name $privateEndpointConnectionName

Configurar a zona DNS privada

Crie uma zona DNS privada para o domínio do blob de armazenamento, crie uma ligação de rede virtual e depois crie um grupo de zona DNS que associe o endpoint privado à zona DNS privada.

Use os nomes do grupo de recursos, zona DNS privada, ligação de rede virtual, endpoint privado e grupo de zona DNS que definiu anteriormente. Os seguintes comandos criam a zona DNS privada, ligam-na à rede virtual e associam-na ao endpoint privado.

az network private-dns zone create --resource-group $resourceGroupName \
    --name $privateDnsZoneName

az network private-dns link vnet create --resource-group $resourceGroupName \
    --zone-name $privateDnsZoneName \
    --name $privateDnsZoneLinkName \
    --virtual-network $vnetName \
    --registration-enabled false

az network private-endpoint dns-zone-group create \
   --resource-group $resourceGroupName \
    --endpoint-name $privateEndpointName \
   --name $privateDnsZoneGroupName \
   --private-dns-zone $privateDnsZoneName \
   --zone-name disks

Defina o nome do disco gerido, SKU de armazenamento e tamanho para este procedimento. O procedimento reutiliza o grupo de recursos, a região e o nome do recurso de acesso ao disco que definiu anteriormente. O comando az disk create cria um disco gerido vazio, associa-o ao recurso de acesso ao disco e define a sua política de acesso à rede para AllowPrivate.

# These variables are specific to this step.
diskName=yourDiskName
diskSkuName=Standard_LRS
diskSizeGB=128

diskAccessId=$(az resource show -n $diskAccessName -g $resourceGroupName --namespace Microsoft.Compute --resource-type diskAccesses --query [id] -o tsv)

az disk create -n $diskName \
    -g $resourceGroupName \
    -l $region \
    --size-gb $diskSizeGB \
    --sku $diskSkuName \
    --network-access-policy AllowPrivate \
    --disk-access $diskAccessId

Use o disco de origem existente, o novo snapshot, o grupo de recursos, a região e os nomes de acesso ao disco que definiu anteriormente. O comando az disk show recebe o ID do disco de origem. Depois, o az snapshot create cria o snapshot, associa-o ao recurso de acesso ao disco e define a sua política de acesso à rede para AllowPrivate.

# This step reuses variables defined in the first CLI sample.

diskId=$(az disk show -n $sourceDiskName -g $resourceGroupName --query [id] -o tsv)

diskAccessId=$(az resource show -n $diskAccessName -g $resourceGroupName --namespace Microsoft.Compute --resource-type diskAccesses --query [id] -o tsv)

az snapshot create -n $snapshotNameSecuredWithPrivateLink \
    -g $resourceGroupName \
    -l $region \
    --source $diskId \
    --network-access-policy AllowPrivate \
    --disk-access $diskAccessId

Próximos passos