Azure CLI - プライベート リンクを使用してマネージド ディスクに対するインポートおよびエクスポート アクセスを制限する
適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
プライベート エンドポイントを使用すると、マネージド ディスクのエクスポートとインポートを制限し、Azure 仮想ネットワーク上のクライアントからプライベート リンクを介してデータに安全にアクセスできます。 プライベート エンドポイントでは、対象のマネージド ディスク サービスのために仮想ネットワークのアドレス空間の IP アドレスを使用します。 仮想ネットワーク上のクライアントとマネージド ディスク間のネットワーク トラフィックは、仮想ネットワークおよび Microsoft バックボーン ネットワーク上のプライベート リンク経由でのみ送信され、パブリック インターネットから公開されることはなくなります。
プライベート リンクを使用してマネージド ディスクをエクスポートまたはインポートするには、ディスク アクセス リソースを作成した後、プライベート エンドポイントを作成することによってこれを同じサブスクリプション内の仮想ネットワークにリンクします。 次に、ディスクまたはスナップショットをディスク アクセスのインスタンスに関連付けます。 最後に、ディスクまたはスナップショットの 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 ゾーンを作成し、Virtual Network に対する関連付けリンクを作成します。また、プライベート エンドポイントをプライベート 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
- プライベート リンクに関する FAQ
- CLI を使用して別のリージョンのストレージ アカウントに管理スナップショットを VHD としてエクスポート/コピーする