适用对象:✔️ Linux VM ✔️ 灵活规模集
可以使用 专用终结点 来限制托管磁盘的导出和导入,并通过 Azure 虚拟网络上的客户端通过 专用链接 安全地访问数据。 专用终结点为托管磁盘服务使用虚拟网络地址空间中的 IP 地址。 其虚拟网络上的客户端与托管磁盘之间的网络流量仅通过虚拟网络和Microsoft主干网络上的专用链接进行遍历,从而消除了来自公共 Internet 的暴露。
若要使用专用链接导出/导入托管磁盘,请先创建磁盘访问资源,并通过创建专用终结点将其链接到同一订阅中的虚拟网络。 然后,将磁盘或快照与磁盘访问实例相关联。 最后,将磁盘或快照的 NetworkAccessPolicy 属性设置为 AllowPrivate。 这会限制对虚拟网络的访问。
可以将 NetworkAccessPolicy 属性设置为 DenyAll 阻止任何人导出磁盘或快照的数据。 NetworkAccessPolicy 属性的默认值为 AllowAll。
局限性
- 不能使用相同的磁盘访问资源同时导入或导出 100 多个磁盘或快照
- 不能将数据上传到同时具有磁盘访问资源和磁盘加密集的磁盘
- 除了应用于单个磁盘的缩放目标外,磁盘访问资源还具有更多的缩放目标,这些目标以数据入口/出口为中心。 这些限制累积应用于与磁盘访问资源关联的所有磁盘。 有关详细信息,请参阅 此处
登录到订阅并设置变量
subscriptionId=yourSubscriptionId
resourceGroupName=yourResourceGroupName
region=chinanorth2
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 cloud set -n AzureChinaCloud
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.chinacloudapi.cn"
az network private-dns link vnet create --resource-group $resourceGroupName \
--zone-name "privatelink.blob.core.chinacloudapi.cn" \
--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.chinacloudapi.cn" \
--zone-name disks
创建受专用链接保护的磁盘
resourceGroupName=yourResourceGroupName
region=chinanorth2
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=chinanorth2
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 导出/复制到不同区域中的存储帐户