プライベート リンクを使用してマネージド ディスクのインポートとエクスポートを制限する

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット

プライベート エンドポイントを使用して、マネージド ディスクのインポートとエクスポートを制限します。 Azure仮想ネットワーク内のクライアントからPrivate Link経由でデータに安全にアクセスします。 プライベート エンドポイントは、マネージド ディスク サービスの仮想ネットワーク アドレス空間の IP アドレスを使用します。 仮想ネットワーク内のクライアントとマネージド ディスク間のトラフィックは、仮想ネットワークと Microsoft バックボーン ネットワーク上のプライベート リンクに留まります。これにより、パブリック インターネットへの露出が減少します。

マネージド ディスクのインポートまたはエクスポートに Private Links を使用するには、ディスク アクセス リソースを作成し、プライベート エンドポイントを作成して同じサブスクリプション内の仮想ネットワークにリンクします。 次に、ディスクまたはスナップショットをディスク アクセス リソースに関連付けます。 最後に、ディスクまたはスナップショットのネットワーク アクセス ポリシーを AllowPrivate に設定して、仮想ネットワークへのアクセスを制限します。

ネットワーク アクセス ポリシーを DenyAll に設定して、ディスクまたはスナップショットからデータをエクスポートできないようにします。 既定のネットワーク アクセス ポリシーは AllowAll

前提条件

開始する前に、最新のAzure CLIまたはAzure PowerShell モジュールをインストールします

制限事項

  • 同じディスク アクセス リソースで同時に 100 を超えるディスクまたはスナップショットをインポートまたはエクスポートすることはできません
  • ディスク アクセス リソースとディスク暗号化セットの両方を持つディスクにアップロードすることはできません
  • 個々のディスクに適用されるスケール ターゲットに加えて、ディスク アクセス リソースには、データのイングレス/エグレスを中心とするスケール ターゲットが増えています。 これらの制限は、ディスク アクセス リソースに関連付けられているすべてのディスクに累積的に適用されます。 詳しくは こちらをご覧ください。
  • ディスク アクセス リソースは、関連付けるディスクと同じリージョンとサブスクリプションに存在する必要があります

サインインして変数を設定する

Azure CLIまたはAzure PowerShellを使用するタブを選択します。

subscriptionId=yourSubscriptionId
resourceGroupName=yourResourceGroupName
region=northcentralus
diskAccessName=yourDiskAccessForPrivateLinks
vnetName=yourVNETForPrivateLinks
subnetName=yourSubnetForPrivateLinks
privateEndPointName=yourPrivateLinkForSecureMDExportImport
privateEndPointConnectionName=yourPrivateLinkConnection
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 Links.
snapshotNameSecuredWithPL=yourSnapshotNameSecuredWithPL

az login
az account set --subscription $subscriptionId

ディスク アクセス リソースを作成する

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

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

ディスク アクセス リソースのプライベート エンドポイントを作成する

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

次のステップ