다음을 통해 공유


Azure CLI - Private Links를 사용하여 관리 디스크에 대한 가져오기/내보내기 액세스 제한

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

프라이빗 엔드포인트를 사용하여 관리 디스크의 내보내기 및 가져오기를 제한하고 Azure 가상 네트워크의 클라이언트에서 Private Link를 통해 데이터에 안전하게 액세스할 수 있습니다. 프라이빗 엔드포인트는 관리 디스크 서비스에 대한 가상 네트워크 주소 공간의 IP 주소를 사용합니다. 가상 네트워크의 클라이언트와 관리 디스크 간의 네트워크 트래픽은 가상 네트워크와 Microsoft 백본 네트워크의 프라이빗 링크를 통해서만 트래버스하므로 공용 인터넷에서 노출되지 않습니다.

프라이빗 링크를 사용하여 관리 디스크를 내보내거나 가져오려면 먼저 디스크 액세스 리소스를 만들고 프라이빗 엔드포인트를 만들어 동일한 구독의 가상 네트워크에 연결합니다. 그런 다음 디스크 또는 스냅샷을 디스크 액세스 인스턴스와 연결합니다. 마지막으로 디스크 또는 스냅샷의 NetworkAccessPolicy 속성을 .로 AllowPrivate설정합니다. 이렇게 하면 가상 네트워크에 대한 액세스가 제한됩니다.

NetworkAccessPolicy 속성을 설정하여 DenyAll 누구도 디스크 또는 스냅샷의 데이터를 내보내지 못하도록 할 수 있습니다. NetworkAccessPolicy 속성의 기본값은 .입니다 AllowAll.

제한점

  • 동일한 디스크 액세스 리소스를 사용하여 동시에 100개 이상의 디스크 또는 스냅샷을 가져오거나 내보낼 수 없습니다.
  • 디스크 액세스 리소스와 디스크 암호화 집합을 모두 사용하여 디스크에 업로드할 수 없습니다.
  • 개별 디스크에 적용되는 크기 조정 대상 외에도 디스크 액세스 리소스에는 데이터 수신/송신을 중심으로 하는 더 많은 크기 조정 대상이 있습니다. 이러한 제한은 디스크 액세스 리소스와 연결된 모든 디스크에 누적적으로 적용됩니다. 자세한 내용은 여기를 참조 하세요.

구독에 로그인하고 변수 설정

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)

Virtual Network 만들기

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 

다음 단계