Azure Machine Learning 레지스트리를 사용한 네트워크 격리

이 문서에서는 Azure Virtual Network프라이빗 엔드포인트를 사용하여 Azure Machine Learning 레지스트리를 보호하는 방법을 알아봅니다.

Azure의 프라이빗 엔드포인트는 VNet(가상 네트워크) 내의 개인 IP 주소를 통해 Azure 서비스에 액세스할 수 있도록 하여 네트워크 격리를 제공합니다. VNet은 Azure 리소스 간의 연결을 보호하고 중요한 데이터가 공용 인터넷에 노출되는 것을 방지합니다.

프라이빗 엔드포인트와 함께 네트워크 격리를 사용하면 네트워크 트래픽이 공용 인터넷을 통과하는 것을 방지하고 Azure Machine Learning 레지스트리 서비스를 가상 네트워크로 가져옵니다. 프라이빗 엔드포인트가 사용될 때 모든 네트워크 트래픽은 Azure Private Link를 통해 발생합니다.

필수 조건

Azure Machine Learning 레지스트리 보안

참고 항목

단순화를 위해 작업 영역, 관련 리소스 및 해당 리소스가 속한 가상 네트워크를 안전한 작업 영역 구성으로 지칭할 예정입니다. 기존 구성의 일부로 Azure Machine Learning 레지스트리를 추가하는 방법을 살펴보겠습니다.

다음 다이어그램은 기본 네트워크 구성과 Azure Machine Learning 레지스트리가 적합한 방식을 보여 줍니다. 이미 Azure Machine Learning 작업 영역을 사용하고 있고 모든 리소스가 가상 네트워크의 일부인 보안 작업 영역 구성이 있는 경우 기존 가상 네트워크에서 Azure Machine Learning 레지스트리 및 관련 리소스(스토리지 및 ACR)까지 프라이빗 엔드포인트를 만들 수 있습니다.

보안 작업 영역 구성이 없으면 Azure Portal에서 보안 작업 영역 만들기 또는 템플릿을 사용하여 보안 작업 영역 만들기 문서를 사용하여 만들 수 있습니다.

프라이빗 엔드포인트를 사용하여 작업 영역 및 관련 리소스가 포함된 가상 네트워크에 연결된 레지스트리 다이어그램.

제한 사항

네트워크 격리와 함께 Azure Machine Learning 레지스트리를 사용하는 경우 Azure Machine Learning 스튜디오에서 모델 자산을 볼 수 있습니다. 다른 형식의 자산은 볼 수 없습니다. Studio를 사용하여 Azure Machine Learning 레지스트리 또는 그 아래에 있는 자산에 대한 작업을 수행할 수 없습니다. 대신 Azure Machine Learning CLI 또는 SDK를 사용하세요.

시나리오: 작업 영역 구성은 안전하고 Azure Machine Learning 레지스트리는 공용입니다.

이 섹션에서는 보안 작업 영역 구성이 있지만 공용 레지스트리를 사용하는 경우 시나리오와 필요한 네트워크 구성에 대해 설명합니다.

로컬 파일에서 레지스트리에 자산 만들기

레지스트리에서 자산을 만드는 데 사용되는 ID(예: 데이터 과학자의 Microsoft Entra 사용자 ID)에는 Azure 역할 기반 액세스 제어에서 AzureML 레지스트리 사용자, 소유자 또는 기여자 역할이 할당되어야 합니다. 자세한 내용은 Azure Machine Learning에 대한 액세스 관리 문서를 참조하세요.

작업 영역에서 레지스트리로 자산 공유

참고 항목

Azure Machine Learning 작업 영역에서 Azure Machine Learning 레지스트리로 구성 요소를 공유하는 것은 현재 지원되지 않습니다.

데이터 반출 방지로 인해 자산이 포함된 스토리지 계정에 공용 액세스가 사용하지 않도록 설정된 경우 보안 작업 영역에서 공용 레지스트리로 자산을 공유할 수 없습니다. 작업 영역에서 레지스트리로 자산 공유를 사용하도록 설정하려면 다음을 수행합니다.

  • 작업 영역에 연결된 스토리지 계정의 네트워킹 섹션으로 이동합니다(자산을 레지스트리에 공유하도록 허용하려는 곳에서).
  • 공용 네트워크 액세스선택한 가상 네트워크 및 IP 주소에서 사용으로 설정합니다.
  • 아래로 스크롤하여 리소스 인스턴스 섹션으로 이동합니다. 리소스 유형Microsoft.MachineLearningServices/registries로 선택하고 인스턴스 이름을 작업 영역과의 공유를 사용하도록 설정하려는 Azure Machine Learning 레지스트리 리소스의 이름으로 설정합니다.
  • 네트워크 구성에 따라 나머지 설정을 확인해야 합니다.

작업 영역에서 레지스트리의 자산 사용

예 작업:

  • 레지스트리의 자산을 사용하는 작업을 제출합니다.
  • 파이프라인에서 레지스트리의 구성 요소를 사용합니다.
  • 구성 요소의 레지스트리에서 환경을 사용합니다.

레지스트리의 자산을 보안 작업 영역으로 사용하려면 레지스트리에 대한 아웃바운드 액세스를 구성해야 합니다.

레지스트리에서 작업 영역으로 모델 배포

레지스트리에서 보안 관리되는 온라인 엔드포인트로 모델을 배포하려면 배포에 egress_public_network_access=disabled가 설정되어 있어야 합니다. Azure Machine Learning은 엔드포인트 배포 중에 레지스트리에 필요한 프라이빗 엔드포인트를 만듭니다. 자세한 내용은 안전하게 관리되는 온라인 엔드포인트 만들기을 참조하세요.

Azure Machine Learning 레지스트리에 액세스하기 위한 아웃바운드 네트워크 구성

서비스 태그 프로토콜 및 포트 목적
AzureMachineLearning TCP: 443, 877, 18881
UDP: 5831
Azure Machine Learning Services 사용하기.
Storage.<region> TCP: 443 컴퓨팅 클러스터 및 컴퓨팅 인스턴스에 대해 Azure Storage 계정에 저장된 데이터에 액세스합니다. 이 아웃바운드는 데이터를 추출하는 데 사용할 수 있습니다. 자세한 내용은 데이터 반출 방지를 참조하세요.
MicrosoftContainerRegistry.<region> TCP: 443 Microsoft에서 제공하는 Docker 이미지에 액세스합니다.
AzureContainerRegistry.<region> TCP: 443 환경에 대한 Docker 이미지에 액세스합니다.

시나리오: 작업 영역 구성은 안전하고 Azure Machine Learning 레지스트리는 프라이빗 엔드포인트를 사용하여 가상 네트워크에 연결됩니다.

이 섹션에서는 프라이빗 엔드포인트를 사용하여 가상 네트워크에 연결된 Azure Machine Learning 레지스트리가 포함된 보안 작업 영역 구성이 있는 경우 시나리오와 필요한 네트워크 구성에 대해 설명합니다.

Azure Machine Learning 레지스트리에는 연결된 스토리지/ACR 서비스 인스턴스가 있습니다. 이러한 서비스 인스턴스는 프라이빗 엔드포인트를 사용하여 VNet에 연결하여 구성을 보호할 수도 있습니다. 자세한 내용은 프라이빗 엔드포인트를 만드는 방법 섹션을 참조하세요.

레지스트리에서 사용하는 Azure Storage 계정 및 Azure Container Registry를 찾는 방법

Azure Machine Learning 레지스트리에서 사용하는 스토리지 계정 및 ACR은 Azure 구독의 관리되는 리소스 그룹 아래에 만들어집니다. 관리되는 리소스 그룹의 이름은 azureml-rg-<name-of-your-registry>_<GUID> 패턴을 따릅니다. GUID는 임의로 생성된 문자열입니다. 예를 들어, 레지스트리 이름이 "contosoreg"인 경우 관리되는 리소스 그룹의 이름은 azureml-rg-contosoreg_<GUID>입니다.

Azure Portal에서 azureml_rg-<name-of-your-registry>를 검색하여 이 리소스 그룹을 찾을 수 있습니다. 레지스트리에 대한 모든 스토리지 및 ACR 리소스는 이 리소스 그룹에서 사용할 수 있습니다.

로컬 파일에서 레지스트리에 자산 만들기

참고 항목

연결된 ACR에 공용 액세스가 사용하지 않도록 설정된 프라이빗 레지스트리에서는 환경 자산 만들기가 지원되지 않습니다. 해결 방법으로 Azure Machine Learning 작업 영역에서 환경을 만들고 이를 Azure Machine Learning 레지스트리에 공유할 수 있습니다.

클라이언트는 프라이빗 엔드포인트를 사용하여 레지스트리가 연결된 VNet에 연결되어야 합니다.

레지스트리에 안전하게 연결

VNet 뒤에 보호되는 레지스트리에 연결하려면 다음 방법 중 하나를 사용합니다.

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

    • 지점 및 사이트 간: 각 클라이언트 컴퓨터는 VPN 클라이언트를 사용하여 VNet에 연결합니다.

    • 사이트 간: VPN 디바이스는 VNet을 온-프레미스 네트워크에 연결합니다.

  • ExpressRoute - 프라이빗 연결을 통해 온-프레미스 네트워크를 클라우드에 연결합니다. 연결 공급자를 사용하여 연결합니다.

  • Azure Bastion - 이 시나리오에서는 VNet 내에 Azure 가상 머신(점프 상자라고도 함)을 만듭니다. 그런 다음, Azure Bastion을 사용하여 VM에 연결합니다. Bastion을 사용하면 로컬 웹 브라우저에서 RDP 또는 SSH 세션을 사용하여 VM에 연결할 수 있습니다. 그런 다음, 점프 상자를 개발 환경으로 사용합니다. VNet 내부에 있으므로 레지스트리에 직접 액세스할 수 있습니다.

작업 영역에서 레지스트리로 자산 공유

참고 항목

Azure Machine Learning 작업 영역에서 Azure Machine Learning 레지스트리로 구성 요소를 공유하는 것은 현재 지원되지 않습니다.

데이터 반출 방지로 인해 자산이 포함된 스토리지 계정에 공용 액세스가 사용하지 않도록 설정된 경우 보안 작업 영역에서 프라이빗 레지스트리로 자산을 공유할 수 없습니다. 작업 영역에서 레지스트리로 자산 공유를 사용하도록 설정하려면 다음을 수행합니다.

  • 작업 영역에 연결된 스토리지 계정의 네트워킹 섹션으로 이동합니다(자산을 레지스트리에 공유하도록 허용하려는 곳에서).
  • 공용 네트워크 액세스선택한 가상 네트워크 및 IP 주소에서 사용으로 설정합니다.
  • 아래로 스크롤하여 리소스 인스턴스 섹션으로 이동합니다. 리소스 유형Microsoft.MachineLearningServices/registries로 선택하고 인스턴스 이름을 작업 영역과의 공유를 사용하도록 설정하려는 Azure Machine Learning 레지스트리 리소스의 이름으로 설정합니다.
  • 네트워크 구성에 따라 나머지 설정을 확인해야 합니다.

작업 영역에서 레지스트리의 자산 사용

예 작업:

  • 레지스트리의 자산을 사용하는 작업을 제출합니다.
  • 파이프라인에서 레지스트리의 구성 요소를 사용합니다.
  • 구성 요소의 레지스트리에서 환경을 사용합니다.

작업 영역의 VNet에서 레지스트리, 스토리지 및 ACR에 대한 프라이빗 엔드포인트를 만듭니다. 여러 레지스트리에 연결하려는 경우 각 레지스트리와 연결된 스토리지 및 ACR에 대한 프라이빗 엔드포인트를 만듭니다. 자세한 내용은 프라이빗 엔드포인트를 만드는 방법 섹션을 참조하세요.

레지스트리에서 작업 영역으로 모델 배포

레지스트리에서 보안 관리되는 온라인 엔드포인트로 모델을 배포하려면 배포에 egress_public_network_access=disabled가 설정되어 있어야 합니다. Azure Machine Learning은 엔드포인트 배포 중에 레지스트리에 필요한 프라이빗 엔드포인트를 만듭니다. 자세한 내용은 안전하게 관리되는 온라인 엔드포인트 만들기을 참조하세요.

프라이빗 엔드포인트를 만드는 방법

탭을 사용하여 기존 레지스트리에 프라이빗 엔드포인트를 추가하거나 프라이빗 엔드포인트가 있는 새 레지스트리를 만드는 방법에 대한 지침을 확인합니다.

  1. Azure Portal에서 프라이빗 엔드포인트를 검색하고 프라이빗 엔드포인트 항목을 선택하여 프라이빗 링크 센터로 이동합니다.

  2. 프라이빗 링크 센터 개요 페이지에서 + 만들기를 선택합니다.

  3. 요청된 정보를 제공합니다. 지역 필드에서 Azure Virtual Network와 동일한 지역을 선택합니다. 다음을 선택합니다.

  4. 리소스 탭에서 리소스 종류를 선택할 때 Microsoft.MachineLearningServices/registries를 선택합니다. 리소스 필드를 Azure Machine Learning 레지스트리 이름으로 설정하고 다음을 선택합니다.

  5. 가상 네트워크 탭에서 Azure Machine Learning 리소스에 대한 가상 네트워크와 서브넷을 선택합니다. 다음을 선택하여 작업을 계속할 수 있습니다.

  6. 특정 프라이빗 DNS 통합 요구 사항이 없으면 DNS 탭에서 기본값을 그대로 둡니다. 다음을 선택하여 작업을 계속할 수 있습니다.

  7. 검토 + 만들기 탭에서 만들기를 선택하여 프라이빗 엔드포인트를 만듭니다.

  8. 공용 네트워크 액세스를 사용 안 함으로 설정하려면 다음 명령을 사용합니다. 스토리지와 ACR의 공용 네트워크 액세스도 사용하지 않도록 설정되어 있는지 확인합니다.

    az ml registry update --set publicNetworkAccess=Disabled --name <name-of-registry>
    

레지스트리에서 사용하는 Azure Storage 계정 및 Azure Container Registry를 찾는 방법

Azure Machine Learning 레지스트리에서 사용하는 스토리지 계정 및 ACR은 Azure 구독의 관리되는 리소스 그룹 아래에 만들어집니다. 관리되는 리소스 그룹의 이름은 azureml-rg-<name-of-your-registry>_<GUID> 패턴을 따릅니다. GUID는 임의로 생성된 문자열입니다. 예를 들어, 레지스트리 이름이 "contosoreg"인 경우 관리되는 리소스 그룹의 이름은 azureml-rg-contosoreg_<GUID>입니다.

Azure Portal에서 azureml_rg-<name-of-your-registry>를 검색하여 이 리소스 그룹을 찾을 수 있습니다. 레지스트리에 대한 모든 스토리지 및 ACR 리소스는 이 리소스 그룹에서 사용할 수 있습니다.

Azure Storage 계정에 대한 프라이빗 엔드포인트를 만드는 방법

레지스트리에서 사용하는 스토리지 계정에 대한 프라이빗 엔드포인트를 만들려면 다음 단계를 사용합니다.

  1. Azure Portal에서 프라이빗 엔드포인트를 검색하고 프라이빗 엔드포인트 항목을 선택하여 프라이빗 링크 센터로 이동합니다.
  2. 프라이빗 링크 센터 개요 페이지에서 + 만들기를 선택합니다.
  3. 요청된 정보를 제공합니다. 지역 필드에서 Azure Virtual Network와 동일한 지역을 선택합니다. 다음을 선택합니다.
  4. 리소스 탭에서 리소스 종류를 선택할 때 Microsoft.Storage/storageAccounts를 선택합니다. 리소스 필드를 스토리지 계정 이름으로 설정합니다. 하위 리소스Blob으로 설정하고 다음을 선택합니다.
  5. 가상 네트워크 탭에서 Azure Machine Learning 리소스에 대한 가상 네트워크와 서브넷을 선택합니다. 다음을 선택하여 작업을 계속할 수 있습니다.
  6. 특정 프라이빗 DNS 통합 요구 사항이 없으면 DNS 탭에서 기본값을 그대로 둡니다. 다음을 선택하여 작업을 계속할 수 있습니다.
  7. 검토 + 만들기 탭에서 만들기를 선택하여 프라이빗 엔드포인트를 만듭니다.

데이터 반출 방지

사용자가 만든 Azure Machine Learning 레지스트리의 경우 레지스트리, 관리 스토리지 계정 및 관리 ACR에 대한 프라이빗 엔드포인트를 사용하는 것이 좋습니다.

시스템 레지스트리의 경우 /services/Azure/MachineLearning 별칭을 사용하여 스토리지 계정에 대한 서비스 엔드포인트 정책을 만드는 것이 좋습니다. 자세한 내용은 데이터 반출 방지 구성을 참조하세요.

레지스트리의 정규화된 도메인 이름을 찾는 방법

다음 예에서는 검색 URL을 사용하여 레지스트리의 FQDN(정규화된 도메인 이름)을 가져오는 방법을 보여 줍니다. 검색 URL을 호출할 때 요청 헤더에 Azure 액세스 토큰을 제공해야 합니다. 다음 예에서는 액세스 토큰을 가져오고 검색 URL을 호출하는 방법을 보여 줍니다.

검색 URL의 형식은 https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery입니다. 여기서 <region>은 레지스트리가 있는 지역이고 <registry_name>은 레지스트리 이름입니다. URL을 호출하려면 GET 요청을 수행합니다.

   GET https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery 
$region = "<region>"
$registryName = "<registry_name>"
$accessToken = (az account get-access-token | ConvertFrom-Json).accessToken 
(Invoke-RestMethod -Method Get `
                   -Uri "https://$region.api.azureml.ms/registrymanagement/v1.0/registries/$registryName/discovery" `
                   -Headers @{ Authorization="Bearer $accessToken" }).registryFqdns
  • REST API

참고 항목

Azure REST API 사용에 대한 자세한 내용은 Azure REST API 참조를 확인합니다.

  1. Azure 액세스 토큰을 가져옵니다. 다음 Azure CLI 명령을 사용하여 토큰을 가져올 수 있습니다.

    az account get-access-token --query accessToken
    
  2. Postman 또는 Curl과 같은 REST 클라이언트를 사용하여 검색 URL에 대한 GET 요청을 만듭니다. 권한 부여를 위해 이전 단계에서 검색한 액세스 토큰을 사용합니다. 다음 예에서 <region>을 레지스트리가 있는 지역으로 바꾸고, <registry_name>을 레지스트리 이름으로 바꿉니다. <token>을 이전 단계에서 검색한 액세스 토큰으로 바꿉니다.

    curl -X GET "https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery" -H "Authorization: Bearer <token>" -H "Content-Type: application/json"
    

다음 단계

레지스트리를 사용하여 작업 영역 간에 모델, 구성 요소 및 환경을 공유하는 방법 알아보기