관리 온라인 엔드포인트를 통한 네트워크 격리
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
기계 학습 모델을 관리 온라인 엔드포인트에 배포할 때 프라이빗 엔드포인트를 사용하여 온라인 엔드포인트와의 통신을 보호할 수 있습니다. 이 문서에서는 프라이빗 엔드포인트를 사용하여 관리되는 온라인 엔드포인트에 대한 인바운드 통신을 보호하는 방법을 알아봅니다. 또한 작업 영역 관리되는 가상 네트워크를 사용하여 배포와 리소스 간의 보안 통신을 제공하는 방법도 알아봅니다.
클라이언트에서 온라인 엔드포인트로의 인바운드 채점 요청을 보호하고 배포, 배포에 사용되는 Azure 리소스 및 프라이빗 리소스 간의 아웃바운드 통신을 보호할 수 있습니다. 인바운드 및 아웃바운드 통신에 대한 보안은 별도로 구성됩니다. 엔드포인트 및 배포에 대한 자세한 내용은 엔드포인트 및 배포란 무엇인가요를 참조하세요.
다음 아키텍처 다이어그램은 프라이빗 엔드포인트를 통해 관리되는 온라인 엔드포인트로 통신이 흐르는 방식을 보여 줍니다. 클라이언트의 가상 네트워크에서 들어오는 채점 요청은 작업 영역의 프라이빗 엔드포인트를 통해 관리되는 온라인 엔드포인트로 흐릅니다. 배포에서 서비스로의 아웃바운드 통신은 작업 영역의 관리되는 가상 네트워크에서 해당 서비스 인스턴스로의 프라이빗 엔드포인트를 통해 처리됩니다.
참고 항목
- 이 문서에서는 작업 영역의 관리되는 가상 네트워크를 사용한 네트워크 격리에 중점을 둡니다. Azure Machine Learning이 엔드포인트의 각 배포에 대해 관리되는 가상 네트워크를 만드는 레거시 네트워크 격리 방법에 대한 설명은 부록을 참조하세요.
- 각 배포는 이 문서에서 설명하는 인바운드 및 아웃바운드 통신에 관계없이 다른 배포와 격리됩니다. 즉, 인터넷 인바운드/아웃바운드를 허용하는 엔드포인트/배포가 있더라도 배포 간에 네트워크 격리가 있어 배포가 다른 배포에 직접 연결되지 않도록 차단합니다.
제한 사항
Azure Machine Learning 작업 영역에서
v1_legacy_mode
플래그를 사용하지 않도록 설정(false)해야 합니다. 이 플래그가 사용하도록 설정되어 있으면 관리되는 온라인 엔드포인트를 만들 수 없습니다. 자세한 내용은 v2 API에서 네트워크 격리를 참조하세요.Azure Machine Learning 작업 영역에 2022년 5월 24일 이전에 만들어진 프라이빗 엔드포인트가 있는 경우 프라이빗 엔드포인트를 사용하도록 온라인 엔드포인트를 구성하기 전에 작업 영역의 프라이빗 엔드포인트를 다시 만들어야 합니다. 작업 영역에 대한 프라이빗 엔드포인트를 만드는 방법에 대한 자세한 내용은 Azure Machine Learning 작업 영역에 대한 프라이빗 엔드포인트를 구성하는 방법을 참조하세요.
팁
작업 영역이 언제 만들어졌는지 확인하려면 작업 영역 속성을 확인합니다.
스튜디오에서
Directory + Subscription + Workspace
섹션(스튜디오 오른쪽 상단)으로 이동하여View all properties in Azure Portal
을 선택합니다. "개요" 페이지 오른쪽 상단에서 JSON 보기를 선택한 다음 최신 API 버전을 선택합니다. 이 페이지에서properties.creationTime
의 값을 확인할 수 있습니다.또는 CLI와 함께
az ml workspace show
, SDK와 함께my_ml_client.workspace.get("my-workspace-name")
을 사용하거나 REST API가 있는 작업 영역에서curl
을 사용합니다.온라인 엔드포인트와 함께 네트워크 격리를 사용하면 작업 영역과 다른 리소스 그룹의 작업 영역 관련 리소스(ACR(Azure Container Registry), Storage 계정, Key Vault 및 Application Insights)를 사용할 수 있습니다. 그러나 이러한 리소스는 작업 영역과 동일한 구독 및 테넌트에 속해야 합니다.
참고 항목
이 문서에 설명된 네트워크 격리는 데이터 평면 작업, 즉 요청 채점(또는 모델 서비스 제공)로 인해 발생하는 작업에 적용됩니다. 컨트롤 플레인 작업(예: 인증 키 만들기, 업데이트, 삭제 또는 검색 요청)은 공용 네트워크를 통해 Azure Resource Manager로 전송됩니다.
보안 인바운드 채점 요청
Azure Machine Learning 작업 영역용 프라이빗 엔드포인트를 사용하면 클라이언트에서 관리되는 온라인 엔드포인트로의 안전한 인바운드 통신이 가능합니다. 클라이언트 가상 네트워크의 이 프라이빗 엔드포인트는 관리되는 온라인 엔드포인트의 작업 영역과 통신하며, 관리되는 온라인 엔드포인트가 클라이언트로부터 들어오는 채점 요청을 받을 수 있는 수단입니다.
클라이언트가 작업 영역의 프라이빗 엔드포인트를 통해서만 액세스할 수 있도록 온라인 엔드포인트에 대한 채점 요청을 보호하려면 엔드포인트의 public_network_access
플래그를 disabled
로 설정합니다. 엔드포인트를 만든 후 원하는 경우 이 설정을 업데이트하여 공용 네트워크 액세스를 사용하도록 설정할 수 있습니다.
엔드포인트의 public_network_access
플래그를 disabled
로 설정합니다.
az ml online-endpoint create -f endpoint.yml --set public_network_access=disabled
public_network_access
가 disabled
인 경우 인바운드 채점 요청은 작업 영역의 프라이빗 엔드포인트를 사용하여 수신되며 공용 네트워크에서 엔드포인트에 도달할 수 없습니다.
또는 public_network_access
를 enabled
로 설정하면 엔드포인트가 인터넷에서 인바운드 채점 요청을 수신할 수 있습니다.
특정 IP 주소에서 공용 네트워크 액세스를 사용하여 인바운드 점수 매기기 보호
Azure Machine Learning 작업 영역은 특정 IP 주소 또는 주소 범위에서 공용 네트워크 액세스를 사용하도록 설정할 수 있도록 지원합니다. 이 기능에는 관리형 온라인 엔드포인트와 함께 사용할 때 알아야 하는 관리형 온라인 엔드포인트의 public_network_access
플래그와 몇 가지 상호 작용이 있습니다. 자세한 내용은 시나리오: 특정 IP 주소에서 액세스할 수 있는 관리되는 온라인 엔드포인트를 참조하세요.
작업 영역 관리되는 가상 네트워크로 아웃바운드 액세스 보안
배포에서 서비스로의 아웃바운드 통신을 보호하려면 Azure Machine Learning이 작업 영역에 대한 관리되는 가상 네트워크를 만들 수 있도록 Azure Machine Learning 작업 영역에 대해 관리되는 가상 네트워크 격리를 사용하도록 설정해야 합니다. 작업 영역의 모든 관리되는 온라인 엔드포인트(및 컴퓨팅 클러스터 및 컴퓨팅 인스턴스와 같은 작업 영역에 대한 관리되는 컴퓨팅 리소스)는 이 작업 영역 관리되는 가상 네트워크를 자동으로 사용하며, 엔드포인트 아래의 배포는 작업 영역의 리소스와 통신하기 위해 관리되는 가상 네트워크의 프라이빗 엔드포인트를 공유합니다.
관리되는 가상 네트워크로 작업 영역을 보호하면 관리되는 온라인 배포에 대한 egress_public_access
플래그가 더 이상 적용되지 않습니다. 관리되는 온라인 배포를 만들 때 이 플래그를 설정하지 마세요.
작업 영역 관리되는 가상 네트워크와의 아웃바운드 통신을 위해 Azure Machine Learning은 다음을 수행합니다.
- Azure Storage, Azure Key Vault, Azure Container Registry 등 작업 영역에서 사용하는 Azure 리소스와의 통신에 사용할 관리되는 가상 네트워크에 대한 프라이빗 엔드포인트를 만듭니다.
- 배포 시 MCR(Microsoft Container Registry)에 액세스할 수 있습니다. 이는 큐레이팅된 환경이나 MLflow 코드 없는 배포를 사용하려는 경우 유용할 수 있습니다.
- 사용자가 프라이빗 리소스에 대한 프라이빗 엔드포인트 아웃바운드 규칙을 구성하고 공용 리소스에 대한 아웃바운드 규칙(서비스 태그 또는 FQDN)을 구성할 수 있습니다. 아웃바운드 규칙 관리 방법에 대한 자세한 내용은 아웃바운드 규칙 관리를 참조하세요.
또한 작업 영역 관리되는 가상 네트워크의 아웃바운드 트래픽에 대해 두 가지 격리 모드를 구성할 수 있습니다.
- 인터넷 아웃바운드 허용: 관리되는 가상 네트워크에서 모든 인터넷 아웃바운드 트래픽을 허용합니다.
- 승인된 아웃바운드만 허용: 프라이빗 엔드포인트, FQDN 아웃바운드 규칙 및 서비스 태그 아웃바운드 규칙을 사용하여 아웃바운드 트래픽을 제어합니다.
예를 들어, 작업 영역의 관리되는 가상 네트워크에 관리되는 온라인 엔드포인트 아래에 두 개의 배포가 포함되어 있다고 가정하면 두 배포 모두 작업 영역의 프라이빗 엔드포인트를 사용하여 다음과 통신할 수 있습니다.
- Azure Machine Learning 작업 영역
- 작업 영역과 연결된 Azure Storage Blob
- 작업 영역에 대한 Azure Container Registry
- Azure Key Vault
- (선택 사항) 프라이빗 엔드포인트를 지원하는 추가 프라이빗 리소스입니다.
작업 영역 관리되는 가상 네트워크 구성에 대해 자세히 알아보려면 관리되는 가상 네트워크 아키텍처를 참조하세요.
네트워크 격리 구성 시나리오
Azure Machine Learning 작업 영역과 관리되는 온라인 엔드포인트에는 각각 인바운드 통신을 구성하는 데 사용할 수 있는 public_network_access
플래그가 있습니다. 반면에 배포의 아웃바운드 통신은 작업 영역의 관리되는 가상 네트워크에 따라 달라집니다.
관리되는 온라인 엔드포인트와의 통신
관리되는 온라인 엔드포인트에 AI 모델을 사용하는 배포가 있고 앱을 사용하여 엔드포인트에 점수 요청을 보내려고 한다고 가정해 보겠습니다. 다음과 같이 관리되는 온라인 엔드포인트에 사용할 네트워크 격리 구성을 결정할 수 있습니다.
수신 통신의 경우:
앱이 인터넷에서 공개적으로 사용 가능한 경우 앱에서 인바운드 점수 요청을 받을 수 있도록 엔드포인트를 public_network_access
을(를) 사용하도록 설정해야 합니다.
그러나 조직 내 내부 앱과 같이 앱이 프라이빗이라고 가정해 보겠습니다. 이 시나리오에서는 AI 모델을 인터넷에 노출하지 않고 조직 내에서만 사용하기를 원합니다. 따라서 작업 영역의 프라이빗 엔드포인트를 통해서만 인바운드 점수 요청을 수신할 수 있도록 엔드포인트의 public_network_access
를 사용하지 않도록 설정해야 합니다.
아웃바운드 통신(배포)의 경우:
배포에서 프라이빗 Azure 리소스(예: Azure Storage Blob, ACR 및 Azure Key Vault)에 액세스해야 하거나 배포에서 인터넷에 액세스할 수 없다고 가정합니다. 이 경우 승인된 아웃바운드만 허용 격리 모드를 사용하여 작업 영역의 관리되는 가상 네트워크를 사용하도록 설정해야 합니다. 이 격리 모드는 배포에서 승인된 대상으로만 아웃바운드 통신을 허용하므로 데이터 반출을 방지할 수 있습니다. 또한 작업 영역에 대한 아웃바운드 규칙을 추가하여 더 많은 프라이빗 또는 공용 리소스에 대한 액세스를 허용할 수 있습니다. 자세한 내용은 승인된 아웃바운드만 허용하도록 관리되는 가상 네트워크 구성을 참조하세요.
그러나 배포에서 인터넷에 액세스하려면 인터넷 아웃바운드 허용 격리 모드로 작업 영역의 관리되는 가상 네트워크를 사용할 수 있습니다. 인터넷에 액세스할 수 있는 것 외에도 관리되는 가상 네트워크의 프라이빗 엔드포인트를 사용하여 필요한 프라이빗 Azure 리소스에 액세스할 수 있습니다.
마지막으로 배포에서 프라이빗 Azure 리소스에 액세스할 필요가 없고 인터넷에 대한 액세스를 제어할 필요가 없으면 작업 영역 관리되는 가상 네트워크를 사용할 필요가 없습니다.
Azure Machine Learning 작업 영역에 대한 인바운드 통신
Azure Machine Learning 작업 영역의 public_network_access
플래그를 사용하여 인바운드 작업 영역 액세스를 사용하거나 사용하지 않도록 설정할 수 있습니다.
일반적으로 작업 영역의 public_network_access
플래그를 사용하지 않도록 설정하여 작업 영역에 대한 인바운드 통신을 보호하는 경우 관리되는 온라인 엔드포인트에 대한 인바운드 통신도 보호하려고 합니다.
다음 차트에서는 Azure Machine Learning 작업 영역 및 관리되는 온라인 엔드포인트에 대한 인바운드 통신을 보호하기 위한 일반적인 워크플로를 보여 줍니다. 최상의 보안을 위해 작업 영역 및 관리되는 온라인 엔드포인트에 대한 public_network_access
플래그를 사용하지 않도록 설정하여 공용 인터넷을 통해 둘 다 액세스할 수 없도록 하는 것이 좋습니다. 작업 영역에 프라이빗 엔드포인트가 없는 경우 적절한 DNS 확인을 포함하도록 만들 수 있습니다. 그런 다음, 작업 영역의 프라이빗 엔드포인트를 사용하여 관리되는 온라인 엔드포인트에 액세스할 수 있습니다.
참고 항목
관리되는 온라인 엔드포인트는 작업 영역의 프라이빗 엔드포인트를 공유합니다. 프라이빗 DNS 영역 privatelink.api.azureml.ms
에 DNS 레코드를 수동으로 추가하는 경우 와일드카드 *.<per-workspace globally-unique identifier>.inference.<region>.privatelink.api.azureml.ms
(이)가 있는 레코드를 추가하여 작업 영역 아래의 모든 엔드포인트를 프라이빗 엔드포인트로 라우팅해야 합니다.
작업 영역 및 프라이빗 엔드포인트에 대한 DNS 확인에 대한 자세한 내용은 사용자 지정 DNS 서버 작업 영역을 사용하는 방법을 참조하세요.
부록
레거시 네트워크 격리 방법으로 아웃바운드 액세스 보안
관리되는 온라인 엔드포인트의 경우 엔드포인트의 각 배포에 대해 Azure Machine Learning 관리되는 가상 네트워크를 사용하여 배포와 리소스 간의 아웃바운드 통신을 보호할 수도 있습니다. 보안 아웃바운드 통신도 해당 서비스 인스턴스에 대한 프라이빗 엔드포인트를 사용하여 처리됩니다.
참고 항목
이 레거시 방법 대신 작업 영역 관리되는 가상 네트워크를 통한 안전한 아웃바운드 액세스에 설명된 방식을 사용하는 것이 좋습니다.
사용하는 Azure 리소스를 포함하여 배포와 외부 리소스 간의 통신을 제한하려면 다음을 확인해야 합니다.
배포의
egress_public_network_access
플래그는disabled
입니다. 이 플래그는 배포에 필요한 모델, 코드 및 이미지 다운로드가 프라이빗 엔드포인트로 보호되도록 보장합니다. 배포를 만든 후에는egress_public_network_access
플래그를 업데이트(사용 또는 사용 안 함)할 수 없습니다. 배포를 업데이트하는 동안 플래그를 변경하려고 하면 오류가 발생하여 실패합니다.작업 영역에는 프라이빗 엔드포인트를 통해 Azure 리소스에 액세스할 수 있는 프라이빗 링크가 있습니다.
작업 영역에는 사용하거나 사용하지 않도록 설정할 수 있는
public_network_access
플래그가 있습니다. 공용 아웃바운드를 사용하는 관리되는 온라인 배포를 사용하려는 경우 공용 액세스를 허용하도록 작업 영역을 구성해야 합니다. 이는 온라인 배포에서 아웃바운드 통신이 작업 영역 API로 이루어지기 때문입니다. 배포가 공용 아웃바운드를 사용하도록 구성된 경우 작업 영역은 해당 공용 통신을 수락할 수 있어야 합니다(공용 액세스 허용).
여러 배포가 있고 관리되는 온라인 엔드포인트의 각 배포에 대해 egress_public_network_access
를 disabled
로 구성하는 경우 각 배포에는 자체적인 독립적인 Azure Machine Learning 관리되는 가상 네트워크가 있습니다. 각 가상 네트워크에 대해 Azure Machine Learning은 다음 서비스와 통신하기 위한 세 개의 프라이빗 엔드포인트를 만듭니다.
- Azure Machine Learning 작업 영역
- 작업 영역과 연결된 Azure Storage Blob
- 작업 영역에 대한 Azure Container Registry
예를 들어, 관리되는 온라인 엔드포인트의 두 배포에 대해 egress_public_network_access
플래그를 disabled
로 설정하면 총 6개의 프라이빗 엔드포인트가 만들어집니다. 각 배포에는 작업 영역, Blob 및 컨테이너 레지스트리와 통신하는 세 개의 프라이빗 엔드포인트가 있습니다.
Important
Azure Machine Learning은 배포의 관리되는 가상 네트워크와 클라이언트의 가상 네트워크 간의 피어링을 지원하지 않습니다. 배포에 필요한 리소스에 대한 보안 액세스를 위해 프라이빗 엔드포인트를 사용하여 리소스와 통신합니다.
다음 다이어그램은 작업 영역의 프라이빗 엔드포인트를 통해 관리되는 온라인 엔드포인트로 흐르는 클라이언트의 가상 네트워크에서 들어오는 채점 요청을 보여 줍니다. 또한 이 다이어그램은 각각 자체 Azure Machine Learning 관리되는 가상 네트워크에 있는 두 개의 온라인 배포를 보여 줍니다. 각 배포의 가상 네트워크에는 Azure Machine Learning 작업 영역, 작업 영역과 연결된 Azure Storage Blob 및 작업 영역용 Azure Container Registry와의 아웃바운드 통신을 위한 세 개의 프라이빗 엔드포인트가 있습니다.
egress_public_network_access
를 사용하지 않도록 설정하고 프라이빗 엔드포인트를 만들려면 다음 안내를 따릅니다.
az ml online-deployment create -f deployment.yml --set egress_public_network_access=disabled
프라이빗 엔드포인트 만들기를 확인하려면 먼저 작업 영역과 연결된 스토리지 계정과 컨테이너 레지스트리를 확인(구성 파일 다운로드 참조)하고, Azure Portal에서 각 리소스를 찾은 다음, Networking
메뉴에서 Private endpoint connections
탭을 확인합니다.
Important
- 앞서 언급한 것처럼 관리되는 온라인 엔드포인트 배포에서 작업 영역 API로의 아웃바운드 통신이 이루어집니다. 엔드포인트가 퍼블릭 아웃바운드를 사용하도록 구성된 경우(즉, 엔드포인트의
public_network_access
플래그가enabled
로 설정됨) 작업 영역은 해당 공용 통신(작업 영역의public_network_access
플래그가enabled
로 설정됨)을 수락할 수 있어야 합니다. egress_public_network_access
플래그가disabled
로 설정된 온라인 배포가 만들어지면 보안 리소스(작업 영역, Blob 및 컨테이너 레지스트리)에만 액세스할 수 있습니다. 예를 들어 배포 시 다른 스토리지 계정에 업로드된 모델 자산을 사용하는 경우 모델 다운로드에 실패합니다. 모델 자산이 작업 영역과 연결된 스토리지 계정에 있는지 확인합니다.egress_public_network_access
가disabled
로 설정되면 배포는 가상 네트워크에서 보호되는 작업 영역 관련 리소스에만 액세스할 수 있습니다. 반대로egress_public_network_access
가enabled
로 설정된 경우 배포는 공용 액세스 권한이 있는 리소스에만 액세스할 수 있습니다. 즉, 가상 네트워크에서 보호되는 리소스에는 액세스할 수 없습니다.
다음 표에는 온라인 엔드포인트에 대한 인바운드 및 아웃바운드 통신을 구성할 때 지원되는 구성이 나열되어 있습니다.
구성 | 인바운드 (엔드포인트 속성) |
아웃바운드 (배포 속성) |
지원 여부 |
---|---|---|---|
보안 아웃바운드를 사용하여 보안 인바운드 | public_network_access 사용 안 함 |
egress_public_network_access 사용 안 함 |
예 |
공용 아웃바운드를 사용하여 보안 인바운드 | public_network_access 사용 안 함 |
egress_public_network_access 가 사용하도록 설정되었습니다.배포 아웃바운드가 작업 영역 API에 대한 것이기 때문에 작업 영역은 공용 액세스도 허용해야 합니다. |
예 |
보안 아웃바운드를 사용하여 공용 인바운드 | public_network_access 사용 |
egress_public_network_access 사용 안 함 |
예 |
공용 아웃바운드를 사용하여 공용 인바운드 | public_network_access 사용 |
egress_public_network_access 가 사용하도록 설정되었습니다.배포 아웃바운드가 작업 영역 API에 대한 것이기 때문에 작업 영역은 공용 액세스도 허용해야 합니다. |
예 |