你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure CLI - 使用专用链接限制对托管磁盘的导入/导出访问
适用于:✔️ Linux VM ✔️ 灵活规模集
可以使用专用终结点来限制托管磁盘的导出和导入,并通过专用链接从 Azure 虚拟网络上的客户端安全地访问数据。 专用终结点将虚拟网络地址空间中的 IP 地址用于托管磁盘服务。 虚拟网络上客户端与托管磁盘之间的网络流量仅穿过虚拟网络以及 Microsoft 主干网络上的专用链接,因此不会从公共 Internet 公开。
若要使用专用链接导出/导入托管磁盘,首先要创建磁盘访问资源,并通过创建专用终结点将其链接到同一订阅中的虚拟网络。 然后,将磁盘或快照与磁盘访问的实例相关联。 最后,将磁盘或快照的 NetworkAccessPolicy 属性设置为 AllowPrivate
。 这将限制对虚拟网络的访问。
可以将 NetworkAccessPolicy 属性设置为 DenyAll
,以防止任何人导出磁盘或快照的数据。 NetworkAccessPolicy 属性的默认值为 AllowAll
。
限制
- 同一磁盘访问对象不能同时导入或导出超过 5 个磁盘或快照。
- 不能上传到同时具有磁盘访问对象和磁盘加密集的磁盘。
登录到订阅并设置变量
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 区域
创建存储 blob 域的专用 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
后续步骤
- 将 VHD 上传到 Azure 或将托管磁盘复制到其他区域 - Azure CLI 或 Azure PowerShell 模块
- 下载 VHD - Windows 或 Linux
- 专用链接常见问题解答
- 使用 CLI 将托管快照作为 VHD 导出/复制到不同区域中的存储帐户