가상 네트워크에서 Azure Machine Learning 학습 환경 보호

적용 대상: Python SDK azure-ai-ml v2(현재)

Microsoft에서는 이 문서의 단계 대신 Azure Machine Learning 관리되는 가상 네트워크를 사용하는 것이 좋습니다. 관리되는 가상 네트워크를 통해 Azure Machine Learning은 작업 영역 및 관리 컴퓨팅에 대한 네트워크 격리 작업을 처리합니다. Azure Storage 계정과 같이 작업 영역에 필요한 리소스에 대한 프라이빗 엔드포인트를 추가할 수도 있습니다. 자세한 내용은 작업 영역 관리되는 네트워크 격리를 참조하세요.

Azure Machine Learning 컴퓨팅 인스턴스, 서버리스 컴퓨팅 및 컴퓨팅 클러스터를 사용하여 Azure Virtual Network에서 모델을 안전하게 학습할 수 있습니다. 환경을 계획할 때 공용 IP 주소를 사용하거나 사용하지 않고 컴퓨팅 인스턴스/클러스터 또는 서버리스 컴퓨팅을 구성할 수 있습니다. 둘 사이의 일반적인 차이점은 다음과 같습니다.

  • 공용 IP 없음: 동일한 네트워킹 리소스 요구 사항이 없으므로 비용이 절감됩니다. 인터넷에서 인바운드 트래픽에 대한 요구 사항을 제거하여 보안을 개선합니다. 그러나 필요한 리소스(Microsoft Entra ID, Azure Resource Manager 등)에 대한 아웃바운드 액세스를 사용하도록 설정하는 데 필요한 추가 구성 변경 내용이 있습니다.
  • 공용 IP: 기본적으로 작동하지만 추가 Azure 네트워킹 리소스로 인해 비용이 더 많이 듭니다. 공용 인터넷을 통한 Azure Machine Learning Service의 인바운드 통신이 필요합니다.

다음 표에는 이러한 구성 간의 차이점이 나와 있습니다.

구성 공용 IP가 있는 경우 공용 IP가 없는 경우
인바운드 트래픽 AzureMachineLearning 서비스 태그. 없음
아웃바운드 트래픽 기본적으로 제한 없이 공용 인터넷에 액세스할 수 있습니다.
네트워크 보안 그룹 또는 방화벽을 사용하여 액세스하는 항목을 제한할 수 있습니다.
기본적으로 Azure에서 제공하는 기본 아웃바운드 액세스를 사용하여 공용 네트워크에 액세스할 수 있습니다.
인터넷에서 필요한 리소스로 아웃바운드 트래픽을 라우팅해야 하는 경우 Virtual Network NAT 게이트웨이 또는 방화벽을 대신 사용하는 것이 좋습니다.
Azure 네트워킹 리소스 공용 IP 주소, 부하 분산 장치, 네트워크 인터페이스 없음

Azure Databricks 또는 HDInsight를 사용하여 가상 네트워크에서 모델을 학습시킬 수도 있습니다.

Important

이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 미리 보기 버전은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

이 문서는 Azure Machine Learning 워크플로 보안에 대한 시리즈의 일부입니다. 이 시리즈의 다른 문서를 참조하세요.

보안 작업 영역 만들기에 대한 자습서는 자습서: 보안 작업 영역 만들기 또는 자습서: 템플릿을 사용하여 보안 작업 영역 만들기를 참조하세요.

이 문서에서는 가상 네트워크에서 다음 학습 컴퓨팅 리소스를 보호하는 방법을 알아봅니다.

  • Azure Machine Learning 컴퓨팅 클러스터
  • Azure Machine Learning 컴퓨팅 인스턴스
  • Azure Machine Learning 서버리스 컴퓨팅
  • Azure Databricks
  • 가상 머신
  • HDInsight 클러스터

필수 조건

  • 일반적인 가상 네트워크 시나리오 및 전반적인 가상 네트워크 아키텍처를 이해하려면 네트워크 보안 개요 문서를 참조하세요.

  • 컴퓨팅 리소스에 사용할 기존 가상 네트워크 및 서브넷입니다. 이 VNet은 Azure Machine Learning 작업 영역과 동일한 구독에 있어야 합니다.

    • 작업 영역 및 학습 작업에서 사용하는 스토리지 계정을 컴퓨팅 인스턴스, 서버리스 컴퓨팅 및 클러스터에 사용하려는 동일한 Azure 지역에 배치하는 것이 좋습니다. 동일한 Azure 지역에 있지 않은 경우 데이터 전송 비용이 발생하고 네트워크 대기 시간이 늘어날 수 있습니다.
    • VNet에서 *.instances.azureml.net*.instances.azureml.ms에 대해 WebSocket 통신이 허용되는지 확인합니다. WebSocket은 컴퓨팅 인스턴스의 Jupyter에서 사용됩니다.
  • 가상 네트워크의 기존 서브넷. 이 서브넷은 서버리스 컴퓨팅을 위한 컴퓨팅 인스턴스, 클러스터 및 노드를 만들 때 사용됩니다.

    • 서브넷이 다른 Azure 서비스에 위임되지 않았는지 확인합니다.
    • 서브넷에 사용 가능한 IP 주소가 충분한지 확인합니다. 각 컴퓨팅 인스턴스에는 하나의 IP 주소가 필요합니다. 컴퓨팅 클러스터 내의 각 노드와 각 서버리스 컴퓨팅 노드에는 하나의 IP 주소가 필요합니다.
  • 자체 DNS 서버가 있는 경우 DNS 전달을 사용하여 컴퓨팅 인스턴스 및 클러스터의 FQDN(정규화된 도메인 이름)을 확인하는 것이 좋습니다. 자세한 내용은 Azure Machine Learning에서 사용자 지정 DNS 사용을 참조하세요.

  • 가상 네트워크 또는 서브넷에 리소스를 배포하려면 사용자 계정에는 Azure RBAC(Azure 역할 기반 액세스 제어)에서 다음 작업에 대한 사용 권한이 있어야 합니다.

    • 가상 네트워크 리소스의 "Microsoft.Network/*/read"입니다. ARM(Azure Resource Manager) 템플릿 배포에는 이 권한이 필요하지 않습니다.
    • 가상 네트워크 리소스에 대한 “Microsoft.Network/virtualNetworks/join/action”
    • 서브넷 리소스에 대한 "Microsoft.Network/virtualNetworks/subnets/join/action"

    네트워킹과 Azure RBAC에 관한 자세한 내용은 네트워킹 기본 제공 역할을 참조하세요.

제한 사항

  • Azure Lighthouse에서는 가상 네트워크의 컴퓨팅 클러스터/인스턴스 및 서버리스 컴퓨팅 배포가 지원되지 않습니다.

  • 학습 중에 컴퓨팅 인스턴스와 기본 스토리지 계정 간의 프라이빗 네트워크 통신을 위해 포트 445가 열려 있어야 합니다. 예를 들어, 컴퓨팅이 한 VNet에 있고 스토리지 계정이 다른 VNet에 있는 경우 스토리지 계정 VNet에 대한 포트 445를 차단하지 마세요.

작업 영역과 다른 VNet/지역의 컴퓨팅 클러스터

Important

다른 지역/VNet에서는 컴퓨팅 인스턴스를 만들 수 없으며 컴퓨팅 클러스터만 만들 수 있습니다.

작업 영역 가상 네트워크와 다른 지역의 Azure Virtual Network에 컴퓨팅 클러스터를 만들려면 두 VNet 간의 통신을 사용하도록 설정하는 몇 가지 옵션이 있습니다.

  • VNet 피어링을 사용합니다.
  • 컴퓨팅 클러스터를 포함할 가상 네트워크에서 작업 영역에 대한 프라이빗 엔드포인트를 추가합니다.

Important

선택한 방법에 관계없이 컴퓨팅 클러스터에 대한 VNet도 만들어야 합니다. Azure Machine Learning에서는 자동으로 만들어지지 않습니다.

또한 기본 스토리지 계정, Azure Container Registry 및 Azure Key Vault가 컴퓨팅 클러스터의 VNet에 액세스하도록 허용해야 합니다. 세 가지 방법으로 이 작업을 수행할 수 있습니다. 예를 들어, 컴퓨팅 클러스터용 VNet의 각 리소스에 대한 프라이빗 엔드포인트를 만들거나 VNet 피어링을 사용하여 작업 영역 VNet이 컴퓨팅 클러스터 VNet에 액세스하도록 허용할 수 있습니다.

시나리오: VNet 피어링

  1. Azure Virtual Network를 사용하도록 작업 영역을 구성합니다. 자세한 내용은 작업 영역 리소스 보안을 참조하세요.

  2. 컴퓨팅 클러스터에 사용될 두 번째 Azure Virtual Network를 만듭니다. 작업 영역에 사용되는 것과 다른 Azure 지역에 있을 수 있습니다.

  3. 두 VNet 간에 VNet 피어링을 구성합니다.

    계속하기 전에 VNet 피어링 상태가 연결됨이 될 때까지 기다리세요.

  4. 컴퓨팅 클러스터의 VNet에 대한 링크를 추가하도록 privatelink.api.azureml.ms DNS 영역을 수정합니다. 이 영역은 프라이빗 엔드포인트를 사용하여 VNet에 참여할 때 Azure Machine Learning 작업 영역에서 만들어집니다.

    1. DNS 영역에 새로운 가상 네트워크 링크를 추가합니다. 이 작업은 여러 가지 방법으로 수행할 수 있습니다.

      • Azure Portal에서 DNS 영역으로 이동하여 가상 네트워크 링크를 선택합니다. 그런 다음 + 추가를 선택하고 컴퓨팅 클러스터용으로 만든 VNet을 선택합니다.
      • Azure CLI에서 az network private-dns link vnet create 명령을 사용합니다. 자세한 내용은 az network private-dns link vnet create를 참조하세요.
      • Azure PowerShell에서 New-AzPrivateDnsVirtualNetworkLink 명령을 사용합니다. 자세한 내용은 New-AzPrivateDnsVirtualNetworkLink를 참조하세요.
  5. privatelink.notebooks.azure.net DNS 영역에 대해 이전 단계와 하위 단계를 반복합니다.

  6. 두 VNet 모두에서 액세스를 허용하도록 다음 Azure 리소스를 구성합니다.

    • 작업 영역의 기본 스토리지 계정입니다.
    • 작업 영역에 대한 Azure Container Registry입니다.
    • 작업 영역에 대한 Azure Key Vault입니다.

    VNet에 대한 액세스를 허용하도록 이러한 서비스를 구성할 수 있는 방법은 여러 가지가 있습니다. 예를 들어, 두 VNet의 각 리소스에 대해 프라이빗 엔드포인트를 만들 수 있습니다. 또는 두 VNet 모두에서 액세스를 허용하도록 리소스를 구성할 수 있습니다.

  7. VNet을 사용할 때 평소와 같이 컴퓨팅 클러스터를 만들되, 컴퓨팅 클러스터용으로 만든 VNet을 선택합니다. VNet이 다른 지역에 있는 경우 컴퓨팅 클러스터를 만들 때 해당 지역을 선택합니다.

    Warning

    지역을 설정할 때 작업 영역이나 데이터 저장소와 다른 지역인 경우 네트워크 대기 시간과 데이터 전송 비용이 증가할 수 있습니다. 클러스터를 생성할 때와 클러스터에서 작업을 실행할 때 대기 시간과 비용이 발생할 수 있습니다.

시나리오: 프라이빗 엔드포인트

  1. Azure Virtual Network를 사용하도록 작업 영역을 구성합니다. 자세한 내용은 작업 영역 리소스 보안을 참조하세요.

  2. 컴퓨팅 클러스터에 사용될 두 번째 Azure Virtual Network를 만듭니다. 작업 영역에 사용되는 것과 다른 Azure 지역에 있을 수 있습니다.

  3. 컴퓨팅 클러스터를 포함할 VNet에서 작업 영역에 대한 새 프라이빗 엔드포인트를 만듭니다.

    • Azure Portal을 사용하여 새 프라이빗 엔드포인트를 추가하려면 작업 영역을 선택한 다음 네트워킹을 선택합니다. 프라이빗 엔드포인트 연결, + 프라이빗 엔드포인트를 선택하고 필드를 사용하여 새 프라이빗 엔드포인트를 만듭니다.

      • 지역을선택하는 경우 가상 네트워크와 동일한 지역을 선택합니다.
      • 리소스 종류를 선택하는 경우 Microsoft.MachineLearningServices/workspaces를 사용합니다.
      • 리소스를 작업 영역 이름으로 설정합니다.
      • 가상 네트워크서브넷을 컴퓨팅 클러스터용으로 만든 VNet 및 서브넷으로 설정합니다.

      마지막으로, 만들기를 선택하여 프라이빗 엔드포인트를 만듭니다.

    • Azure CLI를 사용하여 새 프라이빗 엔드포인트를 추가하려면 az network private-endpoint create를 사용합니다. 이 명령을 사용하는 예는 Azure Machine Learning 작업 영역에 대한 프라이빗 엔드포인트 구성을 참조하세요.

  4. VNet을 사용할 때 평소와 같이 컴퓨팅 클러스터를 만들되, 컴퓨팅 클러스터용으로 만든 VNet을 선택합니다. VNet이 다른 지역에 있는 경우 컴퓨팅 클러스터를 만들 때 해당 지역을 선택합니다.

    Warning

    지역을 설정할 때 작업 영역이나 데이터 저장소와 다른 지역인 경우 네트워크 대기 시간과 데이터 전송 비용이 증가할 수 있습니다. 클러스터를 생성할 때와 클러스터에서 작업을 실행할 때 대기 시간과 비용이 발생할 수 있습니다.

공용 IP가 없는 컴퓨팅 인스턴스/클러스터 또는 서버리스 컴퓨팅

Warning

이 정보는 Azure Virtual Network를 사용하는 경우에만 유효합니다. 관리되는 가상 네트워크를 사용하는 경우 관리되는 네트워크를 사용한 관리 컴퓨팅을 참조하세요.

Important

미리 보기에 옵트인하지 않고 공용 IP 없이 구성된 컴퓨팅 인스턴스 또는 컴퓨팅 클러스터를 사용하는 경우 2023년 1월 20일(기능이 일반 공급되는 시점) 이후에 삭제하고 다시 만들어야 합니다.

이전에 공용 IP가 없는 미리 보기를 사용했던 경우 일반 공급에 대한 요구 사항이 변경되었으므로 인바운드 및 아웃바운드를 허용하는 트래픽을 수정해야 할 수도 있습니다.

  • 아웃바운드 요구 사항 - 컴퓨팅 인스턴스 및 클러스터 관리에만 사용되는 두 개의 추가 아웃바운드입니다. 이러한 서비스 태그의 대상은 Microsoft에서 소유합니다.
    • UDP 포트 5831의 AzureMachineLearning 서비스 태그.
    • TCP 포트 443의 BatchNodeManagement 서비스 태그.

다음 구성은 필수 구성 요소 섹션에 나열된 구성 외에도 공용 IP 없이 구성된 컴퓨팅 인스턴스/클러스터를 만드는 것과 관련이 있습니다. 서버리스 컴퓨팅에도 적용됩니다.

  • VNet에서 Azure Machine Learning Service와 통신하려면 컴퓨팅 리소스에 작업 영역 프라이빗 엔드포인트를 사용해야 합니다. 자세한 내용은 Azure Machine Learning 작업 영역에 대한 프라이빗 엔드포인트 구성을 참조하세요.

  • VNet에서 다음 서비스 태그 또는 FQDN(정규화된 도메인 이름)에 대한 아웃바운드 트래픽을 허용합니다.

    서비스 태그 프로토콜 포트 주의
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Azure Machine Learning Service와의 통신.
    BatchNodeManagement.<region> ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신. Azure Batch 서비스를 사용하여 컴퓨팅 인스턴스 및 컴퓨팅 클러스터가 구현됩니다.
    Storage.<region> TCP 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch에서 사용하는 Azure Storage 계정과 통신하는 데 이 서비스 태그가 사용됩니다.

    Important

    Storage.<region>에 대한 아웃바운드 액세스는 잠재적으로 작업 영역에서 데이터를 유출하는 데 사용될 수 있습니다. 서비스 엔드포인트 정책을 사용하여 이 취약성을 완화할 수 있습니다. 자세한 내용은 Azure Machine Learning 데이터 반출 방지 문서를 참조하세요.

    FQDN 프로토콜 포트 주의
    <region>.tundra.azureml.ms UDP 5831 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다.
    graph.windows.net TCP 443 Microsoft Graph API와의 통신.
    *.instances.azureml.ms TCP 443/8787/18881 Azure Machine Learning과의 통신.
    *.<region>.batch.azure.com ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신.
    *.<region>.service.batch.azure.com ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신.
    *.blob.core.windows.net TCP 443 Azure Blob Storage와의 통신.
    *.queue.core.windows.net TCP 443 Azure Queue Storage와의 통신.
    *.table.core.windows.net TCP 443 Azure Table storage와의 통신.
  • 기본적으로 비공용 IP용으로 구성된 컴퓨팅 인스턴스/클러스터에는 인터넷에 대한 아웃바운드 액세스 권한이 없습니다. 인터넷에서 인터넷에 액세스할 수 있는 경우는 Azure 기본 아웃바운드 액세스 때문이며, 인터넷에 아웃바운드를 허용하는 NSG가 있기 때문입니다. 그러나 기본 아웃바운드 액세스는 사용하지 않는 것이 좋습니다. 인터넷에 대한 아웃바운드 액세스가 필요한 경우에는 방화벽 및 아웃바운드 규칙 또는 NAT 게이트웨이 및 네트워크 서비스 그룹을 사용하여 아웃바운드 트래픽을 허용하는 것이 좋습니다.

    Azure Machine Learning에서 사용하는 아웃바운드 트래픽에 대한 자세한 내용은 다음 문서를 참조하세요.

    Azure Firewall에서 사용할 수 있는 서비스 태그에 대한 자세한 내용은 가상 네트워크 서비스 태그 문서를 참조하세요.

다음 정보를 사용하여 공용 IP 주소가 없는 컴퓨팅 인스턴스 또는 클러스터를 만듭니다.

az ml compute create 명령에서 다음 값을 바꿉니다.

  • rg: 컴퓨팅을 만들 리소스 그룹입니다.
  • ws: Azure Machine Learning 작업 영역 이름입니다.
  • yourvnet: Azure Virtual Network.
  • yoursubnet: 컴퓨팅에 사용할 서브넷입니다.
  • AmlCompute 또는 ComputeInstance: AmlCompute을 지정하면 컴퓨팅 클러스터가 만들어집니다. ComputeInstance컴퓨팅 인스턴스를 만듭니다.
# create a compute cluster with no public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute --set enable_node_public_ip=False

# create a compute instance with no public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance --set enable_node_public_ip=False

다음 정보를 사용하여 지정된 작업 영역에 대한 VNet에 공용 IP 주소가 없는 서버리스 컴퓨팅 노드를 구성합니다.

작업 영역을 만듭니다.

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithnpip
location: eastus
public_network_access: Disabled
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

작업 영역을 업데이트합니다.

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

공용 IP를 사용한 컴퓨팅 인스턴스/클러스터 또는 서버리스 컴퓨팅

Important

이 정보는 Azure Virtual Network를 사용하는 경우에만 유효합니다. 관리되는 가상 네트워크를 사용하는 경우 관리되는 네트워크를 사용한 관리 컴퓨팅을 참조하세요.

다음 구성은 필수 구성 요소 섹션에 나열된 구성 외에도 공용 IP가 있는 컴퓨팅 인스턴스/클러스터를 만드는 것과 관련이 있습니다. 서버리스 컴퓨팅에도 적용됩니다.

  • 가상 네트워크 하나에 여러 컴퓨팅 인스턴스/클러스터를 배치하는 경우 리소스 하나 이상에 할당량 증가를 요청해야 할 수 있습니다. Machine Learning 컴퓨팅 인스턴스나 클러스터는 가상 네트워크를 포함하는 리소스 그룹에 네트워킹 리소스를 자동으로 할당합니다. 각 컴퓨팅 인스턴스 또는 클러스터에 대해 서비스는 다음 리소스를 할당합니다.

    • NSG(네트워크 보안 그룹)가 자동으로 생성됩니다. 이 NSG는 AzureMachineLearning 서비스 태그에서 포트 44224의 인바운드 TCP 트래픽을 허용합니다.

      Important

      컴퓨팅 인스턴스 및 컴퓨팅 클러스터는 필요한 규칙을 사용하여 NSG를 자동으로 만듭니다.

      서브넷 수준에 다른 NSG가 있는 경우 서브넷 수준 NSG의 규칙이 자동으로 생성된 NSG의 규칙과 충돌해서는 안 됩니다.

      NSG가 네트워크 트래픽을 필터링하는 방법을 알아보려면 네트워크 보안 그룹이 네트워크 트래픽을 필터링하는 방법을 참조하세요.

    • 부하 분산 장치 1개

    컴퓨팅 클러스터의 경우 이러한 리소스는 클러스터가 노드 0개로 스케일 다운될 때마다 삭제되어 스케일 업할 때 생성됩니다.

    컴퓨팅 인스턴스의 경우 이러한 리소스는 인스턴스가 삭제될 때까지 유지됩니다. 인스턴스를 중지해도 리소스는 제거되지 않습니다.

    Important

    이러한 리소스는 구독의 리소스 할당량으로 제한됩니다. 가상 네트워크 리소스 그룹이 잠겨 있으면 컴퓨팅 클러스터/인스턴스 삭제가 실패합니다. 컴퓨팅 클러스터/인스턴스를 삭제할 때까지 Load Balancer를 삭제할 수 없습니다. 또한 네트워크 보안 그룹 생성을 금지하는 Azure Policy 할당이 없는지 확인하세요.

  • VNet에서 AzureMachineLearning 서비스 태그의 포트 44224에서 인바운드 TCP 트래픽을 허용합니다.

    Important

    컴퓨팅 인스턴스/클러스터를 만들 때 IP 주소가 동적으로 할당됩니다. 주소는 만들기 전에 알 수 없으며 만들기 프로세스의 일부로 인바운드 액세스가 필요하므로 방화벽에 정적으로 할당할 수 없습니다. 대신 VNet에서 방화벽을 사용하는 경우 이 인바운드 트래픽을 허용하도록 사용자 정의 경로를 만들어야 합니다.

  • VNet에서 다음 서비스 태그에 대한 아웃바운드 트래픽을 허용합니다.

    서비스 태그 프로토콜 포트 주의
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Azure Machine Learning Service와의 통신.
    BatchNodeManagement.<region> ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신. Azure Batch 서비스를 사용하여 컴퓨팅 인스턴스 및 컴퓨팅 클러스터가 구현됩니다.
    Storage.<region> TCP 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch에서 사용하는 Azure Storage 계정과 통신하는 데 이 서비스 태그가 사용됩니다.

    Important

    Storage.<region>에 대한 아웃바운드 액세스는 잠재적으로 작업 영역에서 데이터를 유출하는 데 사용될 수 있습니다. 서비스 엔드포인트 정책을 사용하여 이 취약성을 완화할 수 있습니다. 자세한 내용은 Azure Machine Learning 데이터 반출 방지 문서를 참조하세요.

    FQDN 프로토콜 포트 주의
    <region>.tundra.azureml.ms UDP 5831 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다.
    graph.windows.net TCP 443 Microsoft Graph API와의 통신.
    *.instances.azureml.ms TCP 443/8787/18881 Azure Machine Learning과의 통신.
    *.<region>.batch.azure.com ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신.
    *.<region>.service.batch.azure.com ANY 443 <region>를 Azure Machine Learning 작업 영역이 포함된 Azure 지역으로 바꿉니다. Azure Batch와의 통신.
    *.blob.core.windows.net TCP 443 Azure Blob Storage와의 통신.
    *.queue.core.windows.net TCP 443 Azure Queue Storage와의 통신.
    *.table.core.windows.net TCP 443 Azure Table storage와의 통신.

다음 정보를 사용하여 VNet에서 공용 IP 주소가 있는 컴퓨팅 인스턴스 또는 클러스터를 만듭니다.

az ml compute create 명령에서 다음 값을 바꿉니다.

  • rg: 컴퓨팅을 만들 리소스 그룹입니다.
  • ws: Azure Machine Learning 작업 영역 이름입니다.
  • yourvnet: Azure Virtual Network.
  • yoursubnet: 컴퓨팅에 사용할 서브넷입니다.
  • AmlCompute 또는 ComputeInstance: AmlCompute을 지정하면 컴퓨팅 클러스터가 만들어집니다. ComputeInstance컴퓨팅 인스턴스를 만듭니다.
# create a compute cluster with a public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute

# create a compute instance with a public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance

다음 정보를 사용하여 지정된 작업 영역에 대한 VNet의 공용 IP 주소를 사용하여 서버리스 컴퓨팅 노드를 구성합니다.

작업 영역을 만듭니다.

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithvnet
location: eastus
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

작업 영역을 업데이트합니다.

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Azure Databricks

  • 가상 네트워크가 Azure Machine Learning 작업 영역과 동일한 구독 및 지역에 있어야 합니다.
  • 작업 영역의 Azure Storage 계정도 가상 네트워크에서 보호되는 경우, Azure Databricks 클러스터와 동일한 가상 네트워크에 있어야 합니다.
  • Azure Databricks에 사용되는 databricks-privatedatabricks-public 서브넷 외에 가상 네트워크에 대해 생성된 기본 서브넷도 필요합니다.
  • Azure Databricks는 가상 네트워크와 통신하는 데 프라이빗 엔드포인트를 사용하지 않습니다.

가상 네트워크에서 Azure Databricks를 사용하는 방법에 대한 자세한 내용은 Azure Virtual Network에서 Azure Databricks 배포를 참조하세요.

가상 머신 또는 HDInsight 클러스터

이 섹션에서는 작업 영역이 있는 가상 네트워크의 가상 머신 또는 Azure HDInsight 클러스터를 사용하는 방법에 관해 알아봅니다.

VM 또는 HDInsight 클러스터 만들기

Important

Azure Machine Learning은 Ubuntu를 실행하는 가상 머신만 지원합니다.

Azure Portal 또는 Azure CLI를 사용하여 VM 또는 HDInsight 클러스터를 만들고 이 클러스터를 Azure 가상 네트워크에 배치합니다. 자세한 내용은 다음 문서를 참조하세요.

네트워크 포트 구성

Azure Machine Learning이 VM 또는 클러스터에서 SSH 포트와 통신할 수 있도록 하려면 네트워크 보안 그룹의 원본 항목을 구성합니다. SSH 포트는 일반적으로 포트 22입니다. 이 원본의 트래픽을 허용하려면 다음 작업을 수행합니다.

  1. 원본 드롭다운 목록에서 서비스 태그를 선택합니다.

  2. 원본 서비스 태그 드롭다운 목록에서 AzureMachineLearning을 선택합니다.

    가상 네트워크 내의 VM 또는 HDInsight 클러스터에서 실험을 수행하기 위한 인바운드 규칙의 스크린샷.

  3. 원본 포트 범위 드롭다운 목록에서 *를 선택합니다.

  4. 대상 드롭다운 목록에서 임의를 선택합니다.

  5. 대상 포트 범위 드롭다운 목록에서 22를 선택합니다.

  6. 프로토콜에서 임의를 선택합니다.

  7. 동작에서 허용을 선택합니다.

네트워크 보안 그룹에 대해 기본 아웃바운드 규칙을 유지합니다. 자세한 내용은 보안 그룹의 기본 보안 규칙을 참조하세요.

기본 아웃바운드 규칙을 사용하지 않고 가상 네트워크의 아웃바운드 액세스를 제한하려면 필수 공용 인터넷 액세스 섹션을 참조하세요.

VM 또는 HDInsight 클러스터 연결

VM 또는 HDInsight 클러스터를 Azure Machine Learning 작업 영역에 연결합니다. 자세한 내용은 Studio에서 모델 학습 및 배포를 위한 컴퓨팅 리소스 관리를 참조하세요.

모델 학습에 필요한 공용 인터넷 액세스

Important

이 문서의 이전 섹션에서는 컴퓨팅 리소스를 만드는 데 필요한 구성에 대해 설명했지만 이 섹션의 구성 정보는 이러한 리소스를 사용하여 모델을 학습하는 데 필요합니다.

Azure Machine Learning을 사용하려면 공용 인터넷에 대한 인바운드 및 아웃바운드 액세스가 모두 필요합니다. 다음 표에서는 필요한 액세스 및 용도에 대한 개요를 제공합니다. .region으로 끝나는 서비스 태그의 경우 region을 작업 영역이 포함된 Azure 지역으로 바꿉니다. 예: Storage.westus

필수 탭에는 필요한 인바운드 및 아웃바운드 구성이 나열됩니다. 상황 탭에는 사용하도록 설정할 수 있는 특정 구성에 필요한 선택적 인바운드 및 아웃바운드 구성이 나열됩니다.

Direction 프로토콜 및
고서
서비스 태그 목적
아웃바운드 TCP: 80, 443 AzureActiveDirectory Microsoft Entra ID를 사용하여 인증
아웃바운드 TCP: 443, 18881
UDP: 5831
AzureMachineLearning Azure Machine Learning Services 사용하기.
Notebook의 Python intellisense는 포트 18881을 사용합니다.
Azure Machine Learning 컴퓨팅 인스턴스 만들기, 업데이트 및 삭제에는 포트 5831이 사용됩니다.
아웃바운드 ANY: 443 BatchNodeManagement.region Azure Machine Learning 컴퓨팅 인스턴스/클러스터에 대한 Azure Batch 백 엔드와의 통신.
아웃바운드 TCP: 443 AzureResourceManager Azure Machine Learning, Azure CLI 및 Azure Machine Learning SDK를 사용하는 Azure 리소스 만들기.
아웃바운드 TCP: 443 Storage.region 컴퓨팅 클러스터 및 컴퓨팅 인스턴스에 대한 Azure Storage 계정에 저장된 데이터에 액세스합니다. 이 아웃바운드에 대한 데이터 반출을 방지하는 방법에 대한 내용은 데이터 반출 보호를 참조하세요.
아웃바운드 TCP: 443 AzureFrontDoor.FrontEnd
* 21Vianet에서 운영하는 Microsoft Azure에는 필요하지 않습니다.
Azure Machine Learning 스튜디오 전역 진입 포인트. AutoML에 대한 이미지 및 환경을 저장합니다. 이 아웃바운드에 대한 데이터 반출을 방지하는 방법에 대한 내용은 데이터 반출 보호를 참조하세요.
아웃바운드 TCP: 443 MicrosoftContainerRegistry.region
참고: 이 태그는 AzureFrontDoor.FirstParty 태그에 종속됩니다.
Microsoft가 제공하는 Docker 이미지에 액세스하세요. Azure Kubernetes Service용 Azure Machine Learning 라우터 설치입니다.

서비스 태그 대신 IP 주소가 필요한 경우 다음 옵션 중 하나를 사용합니다.

IP 주소는 주기적으로 변경될 수 있습니다.

기계 학습 프로젝트에 필요한 패키지를 설치하기 위해 Visual Studio Code 및 타사 사이트에 대한 아웃바운드 트래픽을 허용해야 할 수도 있습니다. 다음 표에서는 기계 학습에 일반적으로 사용되는 리포지토리를 나열합니다.

호스트 이름 목적
anaconda.com
*.anaconda.com
기본 패키지를 설치하는 데 사용됩니다.
*.anaconda.org 리포지토리 데이터를 가져오는 데 사용됩니다.
pypi.org 기본 인덱스에서 종속성을 나열하는 데 사용되며 (있는 경우) 사용자 설정에서 인덱스를 덮어쓰지 않습니다. 인덱스를 덮어쓰는 경우 *.pythonhosted.org도 허용해야 합니다.
cloud.r-project.org R 개발용 CRAN 패키지를 설치할 때 사용됩니다.
*.pytorch.org PyTorch를 기반으로 하는 일부 예제에서 사용됩니다.
*.tensorflow.org Tensorflow를 기반으로 하는 일부 예제에서 사용됩니다.
code.visualstudio.com Visual Studio Code 데스크톱을 다운로드하고 설치하는 데 필요합니다. Visual Studio Code 웹에는 필요하지 않습니다.
update.code.visualstudio.com
*.vo.msecnd.net
설정 스크립트를 통해 컴퓨팅 인스턴스에 설치된 Visual Studio Code 서버 비트를 검색하는 데 사용됩니다.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Visual Studio Code 확장을 다운로드하고 설치하는 데 필요합니다. 이러한 호스트는 Visual Studio Code용 Azure ML 확장에서 제공하는 컴퓨팅 인스턴스에 대한 원격 연결을 사용하도록 설정합니다. 자세한 내용은 Visual Studio Code에서 Azure Machine Learning 컴퓨팅 인스턴스에 연결을 참조하세요.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* 컴퓨팅 인스턴스에 설치된 websocket 서버 비트를 검색하는 데 사용됩니다. WebSocket 서버는 Visual Studio Code 클라이언트(데스크톱 애플리케이션)의 요청을 컴퓨팅 인스턴스에서 실행 중인 Visual Studio Code 서버로 전송하는 데 사용됩니다.

참고 항목

Azure Machine Learning VS Code 확장을 사용하는 경우 원격 컴퓨팅 인스턴스는 확장에 필요한 패키지를 설치하기 위해 퍼블릭 리포지토리에 대한 액세스 권한이 필요합니다. 컴퓨팅 인스턴스에서 이러한 퍼블릭 리포지토리 또는 인터넷에 액세스하기 위해 프록시가 필요한 경우 컴퓨팅 인스턴스의 ~/.bashrc 파일에서 HTTP_PROXYHTTPS_PROXY 환경 변수를 설정하고 내보내야 합니다. 이 프로세스는 사용자 지정 스크립트를 사용하여 프로비전 시 자동화할 수 있습니다.

Azure Machine Learning에서 AKS(Azure Kubernetes Service)를 사용하는 경우 AKS VNet에 대한 다음 트래픽을 허용합니다.

방화벽 솔루션을 사용하는 방법에 대한 자세한 내용은 Azure Machine Learning에서 방화벽 사용을 참조하세요.

다음 단계

이 문서는 Azure Machine Learning 워크플로 보안에 대한 시리즈의 일부입니다. 이 시리즈의 다른 문서를 참조하세요.