다음을 통해 공유


SDK 및 CLI v1을 사용하여 Azure Machine Learning 작업 영역에 대한 프라이빗 엔드포인트 구성

적용 대상:Azure CLI ml 확장 v1Python SDK azureml v1

이 문서에서는 Azure Machine Learning 작업 영역용 프라이빗 엔드포인트를 구성하는 방법을 알아봅니다. Azure Machine Learning에 대한 가상 네트워크를 만드는 방법에 대한 자세한 내용은 가상 네트워크 격리 및 개인 정보 개요를 참조하세요.

Azure Private Link를 사용하면 프라이빗 엔드포인트를 사용하여 작업 영역에 연결할 수 있습니다. 프라이빗 엔드포인트는 가상 네트워크 내에 있는 일련의 개인 IP 주소입니다. 그런 다음, 작업 영역에 대한 액세스를 개인 IP 주소를 통해서만 발생하도록 제한할 수 있습니다. 프라이빗 엔드포인트를 사용하면 데이터 반출 위험을 줄이는 데 도움이 됩니다. 프라이빗 엔드포인트에 대한 자세한 내용은 Azure Private Link 문서를 참조하세요.

Warning

프라이빗 엔드포인트를 사용하여 작업 영역을 보호해도 완전한 보안이 보장되지는 않습니다. 솔루션의 개별 구성 요소를 모두 보호해야 합니다. 예를 들어 작업 영역에 프라이빗 엔드포인트를 사용하지만 Azure Storage 계정이 VNet 뒤에 있지 않은 경우 작업 영역과 스토리지 간 트래픽은 보안을 위해 VNet을 사용하지 않습니다.

Azure Machine Learning에서 사용하는 리소스를 보호하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

필수 조건

제한 사항

  • 프라이빗 엔드포인트를 사용하여 보호된 작업 영역에 대한 퍼블릭 액세스를 사용하도록 설정하고 퍼블릭 인터넷을 통해 Azure Machine Learning 스튜디오를 사용하는 경우 디자이너와 같은 일부 기능에서 데이터에 액세스하지 못할 수 있습니다. 이 문제는 VNet 뒤에서 보호되는 서비스에 데이터를 저장하는 경우에 발생합니다. 예를 들어 Azure Storage 계정이 있습니다.

  • Mozilla Firefox를 사용하는 경우 작업 영역의 프라이빗 엔드포인트에 액세스를 시도할 때 문제가 발생할 수 있습니다. 이 문제는 Mozilla Firefox의 HTTPS를 통한 DNS와 관련될 수 있습니다. 해결 방법으로 Microsoft Edge 또는 Google Chrome을 사용하는 것이 좋습니다.

  • 프라이빗 엔드포인트를 사용해도 작업 영역을 삭제하거나 컴퓨팅 리소스를 관리하는 것과 같은 Azure 컨트롤 플레인(관리 작업)에는 영향을 주지 않습니다. 예를 들어 컴퓨팅 대상 생성, 업데이트 또는 삭제가 있습니다. 이러한 작업은 항상 그렇듯 공용 인터넷을 통해 수행됩니다. Azure Machine Learning 스튜디오, API(게시된 파이프라인 포함) 또는 SDK를 사용하는 등의 데이터 평면 작업은 프라이빗 엔드포인트를 사용합니다.

  • 프라이빗 엔드포인트가 있는 작업 영역에서 컴퓨팅 인스턴스 또는 컴퓨팅 클러스터를 만들 때 컴퓨팅 인스턴스 및 컴퓨팅 클러스터는 작업 영역과 동일한 Azure 지역에 있어야 합니다.

  • 프라이빗 엔드포인트를 사용하여 Azure Kubernetes Service 클러스터를 만들거나 작업 영역에 연결하는 경우 클러스터는 작업 영역과 동일한 지역에 있어야 합니다.

  • 여러 프라이빗 엔드포인트에서 작업 영역을 사용하는 경우 프라이빗 엔드포인트 중 하나는 다음 종속성 서비스와 동일한 VNet에 있어야 합니다.

    • 작업 영역에 대한 기본 스토리지를 제공하는 Azure Storage 계정
    • 작업 영역에 대한 Azure Key Vault
    • 작업 영역에 대한 Azure Container Registry.

    예를 들어 하나의 VNet('services' VNet)은 종속성 서비스 및 작업 영역에 대한 프라이빗 엔드포인트를 포함합니다. 이 구성을 통해 작업 영역에서 서비스와 통신할 수 있습니다. 다른 VNet('clients')은 작업 영역에 대한 프라이빗 엔드포인트만 포함하고 클라이언트 개발 컴퓨터와 작업 영역 간의 통신에만 사용할 수 있습니다.

프라이빗 엔드포인트를 사용하는 작업 영역 만들기

다음 방법 중 하나를 사용하여 프라이빗 엔드포인트를 사용하는 작업 영역을 만듭니다. 이러한 각 방법을 사용하려면 기존 가상 네트워크가 필요합니다.

작업 영역, 프라이빗 엔드포인트 및 가상 네트워크를 동시에 만들려면 Azure Resource Manager 템플릿을 사용하여 Azure Machine Learning의 작업 영역 만들기를 참조하세요.

Azure Machine Learning Python SDK는 프라이빗 엔드포인트를 사용하는 작업 영역을 만들 때 Workspace.create()와 함께 사용할 수 있는 PrivateEndpointConfig 클래스를 제공합니다. 이 클래스를 사용하려면 기존 가상 네트워크가 필요합니다.

적용 대상: Python SDK azureml v1

from azureml.core import Workspace
from azureml.core import PrivateEndPointConfig

pe = PrivateEndPointConfig(name='myprivateendpoint', vnet_name='myvnet', vnet_subnet_name='default')
ws = Workspace.create(name='myworkspace',
    subscription_id='<my-subscription-id>',
    resource_group='myresourcegroup',
    location='eastus2',
    private_endpoint_config=pe,
    private_endpoint_auto_approval=True,
    show_output=True)

작업 영역에 프라이빗 엔드포인트 추가

다음 방법 중 하나를 사용하여 기존 작업 영역에 프라이빗 엔드포인트를 추가합니다.

Warning

이 작업 영역에 연결된 기존 컴퓨팅 대상이 있는 경우, 해당 컴퓨팅 대상은 프라이빗 엔드포인트가 생성된 가상 네트워크 뒤에 있어야만 작동합니다.

적용 대상: Python SDK azureml v1

from azureml.core import Workspace
from azureml.core import PrivateEndPointConfig

pe = PrivateEndPointConfig(name='myprivateendpoint', vnet_name='myvnet', vnet_subnet_name='default')
ws = Workspace.from_config()
ws.add_private_endpoint(private_endpoint_config=pe, private_endpoint_auto_approval=True, show_output=True)

이 예제에 사용된 클래스 및 메서드에 대한 자세한 내용은 PrivateEndpointConfigWorkspace.add_private_endpoint를 참조하세요.

프라이빗 엔드포인트 제거

작업 영역에 대한 하나 또는 모든 프라이빗 엔드포인트를 제거할 수 있습니다. 프라이빗 엔드포인트를 제거하면 엔드포인트가 연결된 VNet에서 작업 영역이 제거됩니다. 프라이빗 엔드포인트를 제거하면 작업 영역이 해당 VNet의 리소스에 액세스하지 못하거나 VNet의 리소스가 작업 영역에 액세스하지 못할 수 있습니다. 예를 들어 VNet이 공용 인터넷에 대한 액세스를 허용하지 않는 경우입니다.

Warning

작업 영역에 대한 프라이빗 엔드포인트를 제거해도 공개적으로 액세스할 수 없습니다. 작업 영역을 공개적으로 액세스할 수 있도록 하려면 공용 액세스 사용 섹션의 단계를 사용합니다.

프라이빗 엔드포인트를 제거하려면 다음 정보를 사용합니다.

프라이빗 엔드포인트를 제거하려면 Workspace.delete_private_endpoint_connection을 사용합니다. 다음 예제에서는 프라이빗 엔드포인트를 제거하는 방법을 보여 줍니다.

적용 대상: Python SDK azureml v1

from azureml.core import Workspace

ws = Workspace.from_config()
# get the connection name
_, _, connection_name = ws.get_details()['privateEndpointConnections'][0]['id'].rpartition('/')
ws.delete_private_endpoint_connection(private_endpoint_connection_name=connection_name)

공용 액세스 사용

경우에 따라 VNet을 통해서가 아니라 퍼블릭 엔드포인트를 통해 다른 사람이 보안 작업 영역에 연결하도록 허용할 수 있습니다. 또는 VNet에서 작업 영역을 제거하고 공용 액세스를 다시 사용하도록 설정할 수 있습니다.

Important

공용 액세스를 사용하도록 설정해도 존재하는 프라이빗 엔드포인트는 제거되지 않습니다. 프라이빗 엔드포인트가 연결되는 VNet 내부의 모든 구성 요소 간 통신은 여전히 ​​보호됩니다. 모든 프라이빗 엔드포인트를 통한 개인 액세스 외에도 작업 영역에 대한 공용 액세스만 사용할 수 있습니다.

Warning

작업 영역에서 프라이빗 엔드포인트를 사용하여 다른 리소스와 통신하는 동안 퍼블릭 엔드포인트를 통해 연결하는 경우 다음과 같습니다.

  • 스튜디오의 일부 기능은 데이터에 액세스할 수 없습니다. 이 문제는 VNet 뒤에서 보호되는 서비스에 데이터를 저장하는 경우에 발생합니다. 예를 들어 Azure Storage 계정이 있습니다.
  • Notebook 실행을 포함하여 컴퓨팅 인스턴스에서 Jupyter, JupyterLab, RStudio 또는 Posit Workbench(이전 RStudio Workbench)를 사용하는 것은 지원되지 않습니다.

공용 액세스를 사용하도록 설정하려면 다음 단계를 사용합니다.

구성할 수 있는 두 가지 속성이 있습니다.

  • allow_public_access_when_behind_vnet - Python SDK 및 CLI v2에서 사용
  • public_network_access - Python SDK 및 CLI v2에서 사용되는 각 속성은 다른 속성을 재정의합니다. 예를 들어 public_network_access를 설정하면 이전 설정을 allow_public_access_when_behind_vnet으로 재정의합니다.

Microsoft는 public_network_access를 사용하여 작업 영역에 대한 공용 액세스를 사용하거나 사용하지 않도록 설정할 것을 권장합니다.

공용 액세스를 사용하도록 설정하려면 Workspace.update를 사용하고 allow_public_access_when_behind_vnet=True를 설정합니다.

적용 대상: Python SDK azureml v1

from azureml.core import Workspace

ws = Workspace.from_config()
ws.update(allow_public_access_when_behind_vnet=True)

작업 영역에 안전하게 연결

VNet 내에서 보호된 작업 영역에 연결하려면 다음 방법 중 하나를 사용합니다.

  • Azure VPN Gateway - 프라이빗 연결을 통해 VNet에 온-프레미스 네트워크를 연결합니다. 공용 인터넷을 통해 연결됩니다. 사용할 수 있는 VPN 게이트웨이의 두 가지 유형은 다음과 같습니다.

    • 지점 및 사이트 간: 각 클라이언트 컴퓨터는 VPN 클라이언트를 사용하여 VNet에 연결합니다.
    • 사이트 간: VPN 디바이스는 VNet을 온-프레미스 네트워크에 연결합니다.
  • ExpressRoute - 프라이빗 연결을 통해 온-프레미스 네트워크를 클라우드에 연결합니다. 연결 공급자를 사용하여 연결합니다.

  • Azure Bastion - 이 시나리오에서는 VNet 내에 Azure 가상 머신(점프 상자라고도 함)을 만듭니다. 그런 다음, Azure Bastion을 사용하여 VM에 연결합니다. Bastion을 사용하면 로컬 웹 브라우저에서 RDP 또는 SSH 세션을 사용하여 VM에 연결할 수 있습니다. 그런 다음, 점프 상자를 개발 환경으로 사용합니다. VNet 내부에 있기 때문에 작업 영역에 직접 액세스할 수 있습니다. 점프 상자를 사용하는 예제는 자습서: 보안 작업 영역 만들기를 참조하세요.

Important

VPN Gateway 또는 ExpressRoute를 사용하는 경우 온-프레미스 리소스와 VNet 간에 이름 확인이 작동하는 방식을 계획해야 합니다. 자세한 내용은 사용자 지정 DNS 서버 사용을 참조하세요.

작업 영역에 연결하는 데 문제가 있는 경우 보안 작업 영역 연결 문제 해결을 참조하세요.

여러 프라이빗 엔드포인트

Azure Machine Learning은 작업 영역에 대해 여러 프라이빗 엔드포인트를 지원합니다. 서로 다른 환경을 별도로 유지하려는 경우 여러 프라이빗 엔드포인트가 사용되는 경우가 많습니다. 여러 프라이빗 엔드포인트를 사용하여 사용하도록 설정되는 몇 가지 시나리오는 다음과 같습니다.

  • 별도의 VNet에 있는 클라이언트 개발 환경

  • 별도의 VNet에 있는 AKS(Azure Kubernetes Service) 클러스터

  • 별도의 VNet에 있는 다른 Azure 서비스. 예를 들어 Azure Synapse 및 Azure Data Factory는 Microsoft 관리형 가상 네트워크를 사용할 수 있습니다. 두 경우 모두에서 작업 영역에 대한 프라이빗 엔드포인트를 해당 서비스에서 사용하는 관리형 VNet에 추가할 수 있습니다. 이러한 서비스에서 관리형 가상 네트워크를 사용하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

    Important

    Synapse의 데이터 반출 방지는 Azure Machine Learning에서 지원되지 않습니다.

Important

작업 영역에 대한 프라이빗 엔드포인트가 포함된 각 VNet은 작업 영역에서 사용하는 Azure Storage 계정, Azure Key Vault 및 Azure Container Registry에도 액세스할 수 있어야 합니다. 예를 들어 각 VNet의 서비스에 대한 프라이빗 엔드포인트를 만들 수 있습니다.

여러 프라이빗 엔드포인트를 추가하려면 작업 영역에 프라이빗 엔드포인트 추가 섹션에서 설명한 것과 동일한 단계를 사용합니다.

시나리오: 격리된 클라이언트

개발 클라이언트를 격리하여 Azure Machine Learning에서 사용하는 컴퓨팅 리소스에 직접 액세스할 수 없도록 하려면 다음 단계를 사용합니다.

참고 항목

이러한 단계에서는 기존 작업 영역, Azure Storage 계정, Azure Key Vault 및 Azure Container Registry가 있다고 가정합니다. 이러한 각 서비스에는 프라이빗 엔드포인트가 기존 VNet에 있습니다.

  1. 클라이언트에 대해 다른 VNet을 만듭니다. 이 VNet은 클라이언트 역할을 하는 Azure Virtual Machines를 포함하거나, 온-프레미스 클라이언트에서 VNet에 연결하는 데 사용하는 VPN Gateway를 포함할 수 있습니다.
  2. 작업 영역에서 사용하는 Azure Storage 계정, Azure Key Vault 및 Azure Container Registry에 대한 새 프라이빗 엔드포인트를 추가합니다. 이러한 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 합니다.
  3. 작업 영역에서 사용하는 다른 스토리지가 있는 경우 해당 스토리지에 대한 새 프라이빗 엔드포인트를 추가합니다. 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 하며, 프라이빗 DNS 영역 통합을 사용하도록 설정해야 합니다.
  4. 새 프라이빗 엔드포인트를 작업 영역에 추가합니다. 이 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 하며, 프라이빗 DNS 영역 통합을 사용하도록 설정해야 합니다.
  5. 가상 네트워크에서 스튜디오 사용 문서의 단계를 사용하여 스튜디오에서 스토리지 계정에 액세스할 수 있도록 설정합니다.

다음 다이어그램에서는 이 구성을 보여 줍니다. Workload VNet에는 학습 및 배포를 위해 작업 영역에서 만든 컴퓨팅이 포함되어 있습니다. Client VNet에는 클라이언트 또는 클라이언트 ExpressRoute/VPN 연결이 포함되어 있습니다. 두 VNet은 모두 작업 영역, Azure Storage 계정, Azure Key Vault 및 Azure Container Registry에 대한 프라이빗 엔드포인트를 포함합니다.

격리된 클라이언트 VNet의 다이어그램

시나리오: 격리된 Azure Kubernetes Service

작업 영역에서 사용하는 격리된 Azure Kubernetes Service를 만들려면 다음 단계를 사용합니다.

참고 항목

이러한 단계에서는 기존 작업 영역, Azure Storage 계정, Azure Key Vault 및 Azure Container Registry가 있다고 가정합니다. 이러한 각 서비스에는 프라이빗 엔드포인트가 기존 VNet에 있습니다.

  1. Azure Kubernetes Service 인스턴스를 만듭니다. 만드는 동안 AKS에서 AKS 클러스터가 포함된 VNet을 만듭니다.
  2. 작업 영역에서 사용하는 Azure Storage 계정, Azure Key Vault 및 Azure Container Registry에 대한 새 프라이빗 엔드포인트를 추가합니다. 이러한 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 합니다.
  3. 작업 영역에서 사용하는 다른 스토리지가 있는 경우 해당 스토리지에 대한 새 프라이빗 엔드포인트를 추가합니다. 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 하며, 프라이빗 DNS 영역 통합을 사용하도록 설정해야 합니다.
  4. 새 프라이빗 엔드포인트를 작업 영역에 추가합니다. 이 프라이빗 엔드포인트는 클라이언트 VNet에 있어야 하며, 프라이빗 DNS 영역 통합을 사용하도록 설정해야 합니다.
  5. AKS 클러스터를 Azure Machine Learning 작업 영역에 연결합니다. 자세한 내용은 Azure Kubernetes Service 클러스터 만들기 및 연결을 참조하세요.

격리된 AKS VNet의 다이어그램

다음 단계