Ограничение доступа на импорт и экспорт управляемых дисков с помощью Приватного канала — Azure CLI

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Вы можете использовать частные конечные точки, чтобы ограничить доступ на экспорт и импорт управляемых дисков и получить защищенный доступ к данным через Приватный канал из клиентов в виртуальной сети Azure. Частная конечная точка использует для службы управляемых дисков IP-адрес из адресного пространства виртуальной сети. Сетевой трафик между клиентами в виртуальной сети и управляемыми дисками проходит через виртуальную сеть и приватный канал в магистральной сети Майкрософт, что позволяет избежать рисков, связанных с использованием общедоступного Интернета.

Чтобы использовать Приватные каналы для экспорта и импорта управляемых дисков, сначала нужно создать ресурс доступа к диску и связать его с виртуальной сетью в той же подписке, создав частную конечную точку. Затем свяжите диск или моментальный снимок с экземпляром ресурса доступа к диску. Наконец, задайте для диска или моментального снимка свойство NetworkAccessPolicy со значением AllowPrivate. Это ограничит доступ к виртуальной сети.

Можно задать для свойства NetworkAccessPolicy значение DenyAll, чтобы полностью запретить экспорт данных диска или моментального снимка. Для свойства NetworkAccessPolicy по умолчанию используется значение AllowAll.

Ограничения

  • Вы не можете импортировать или экспортировать более пяти дисков или моментальных снимков одновременно с тем же объектом доступа к диску.
  • Вы не можете передать на диск как объект доступа к диску, так и набор шифрования дисков.

Вход в подписку и настройка переменных

subscriptionId=yourSubscriptionId
resourceGroupName=yourResourceGroupName
region=northcentralus
diskAccessName=yourDiskAccessForPrivateLinks
vnetName=yourVNETForPrivateLinks
subnetName=yourSubnetForPrivateLinks
privateEndPointName=yourPrivateLinkForSecureMDExportImport
privateEndPointConnectionName=yourPrivateLinkConnection

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

#The name of the new snapshot which will be secured via Private Links
snapshotNameSecuredWithPL=yourSnapshotNameSecuredWithPL

az login

az account set --subscription $subscriptionId

Создание доступа к диску с помощью Azure CLI

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

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

Создание виртуальной сети

Для частных конечных точек не поддерживаются сетевые политики, например группы безопасности сети (NSG). Чтобы развернуть частную конечную точку в подсети, для этой подсети необходимо явным образом указать параметр отключения.

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

Отключение политик подсети частной конечной точки

Так как Azure развертывает ресурсы в подсети виртуальной сети, вам нужно в параметрах подсети отключить политики частной конечной точки.

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

Создание частной конечной точки для объекта доступа к диску

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

Настройка частной зоны DNS

Создайте Частную зону DNS для домена большого двоичного объекта хранилища, установите связь с виртуальной сетью и создайте группу зоны DNS, чтобы связать частную конечную точку с Частной зоной DNS.

az network private-dns zone create --resource-group $resourceGroupName \
    --name "privatelink.blob.core.windows.net"

az network private-dns link vnet create --resource-group $resourceGroupName \
    --zone-name "privatelink.blob.core.windows.net" \
    --name yourDNSLink \
    --virtual-network $vnetName \
    --registration-enabled false 

az network private-endpoint dns-zone-group create \
   --resource-group $resourceGroupName \
   --endpoint-name $privateEndPointName \
   --name yourZoneGroup \
   --private-dns-zone "privatelink.blob.core.windows.net" \
   --zone-name disks
resourceGroupName=yourResourceGroupName
region=northcentralus
diskAccessName=yourDiskAccessName
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 
resourceGroupName=yourResourceGroupName
region=northcentralus
diskAccessName=yourDiskAccessName
sourceDiskName=yourSourceDiskForSnapshot
snapshotNameSecuredWithPL=yourSnapshotName

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 $snapshotNameSecuredWithPL \
-g $resourceGroupName \
-l $region \
--source $diskId \
--network-access-policy AllowPrivate \
--disk-access $diskAccessId 

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