다음을 통해 공유


전용 데이터 엔드포인트를 사용하여 데이터 반출을 완화하는 Azure Container Registry

Azure Container Registry에는 전용 데이터 엔드포인트가 도입되었습니다. 이 기능을 사용하면 특정 레지스트리에 대해 범위가 좁은 클라이언트 방화벽 규칙을 사용하도록 설정하여 데이터 반출 문제를 최소화할 수 있습니다.

전용 데이터 엔드포인트 기능은 프리미엄 서비스 계층에서 사용할 수 있습니다. 가격 책정 정보는 container-registry-pricing을 참조하세요.

레지스트리에서 콘텐츠를 끌어오는 데는 두 가지 엔드포인트가 필요합니다.

레지스트리 엔드포인트는 로그인 URL이라고도 하며 인증 및 콘텐츠 검색에 사용됩니다. docker pulls contoso.azurecr.io/hello-world와 같은 명령은 요청된 아티팩트를 나타내는 계층을 인증하고 협상하는 REST 요청을 생성합니다. 데이터 엔드포인트는 콘텐츠 계층을 나타내는 blob을 제공합니다.

엔드포인트를 보여 주는 다이어그램.

레지스트리 관리 스토리지 계정

Azure Container Registry는 다중 테넌트 서비스입니다. 레지스트리 서비스는 데이터 엔드포인트 스토리지 계정을 관리합니다. 관리 스토리지 계정의 이점에는 부하 분산, 경합이 많은 콘텐츠 분할, 더 높은 동시 콘텐츠 전송을 위한 다중 복사본, 지역 복제를 통한 다중 지역 지원 등이 있습니다.

Azure Private Link Virtual Network 지원을 통해 Azure Virtual Networks의 관리 레지스트리 서비스에 대한 프라이빗 엔드포인트를 사용할 수 있습니다. 이 경우 개인 IP를 사용하여 가상 네트워크 내에서 레지스트리와 데이터 엔드포인트에 모두 액세스할 수 있습니다.

관리 레지스트리 서비스와 스토리지 계정이 모두 가상 네트워크 내에서 액세스할 수 있도록 보호되면 공용 엔드포인트가 제거됩니다.

가상 네트워크 지원을 보여 주는 다이어그램.

불행히도 가상 네트워크 연결이 항상 옵션은 아닙니다.

Important

Azure Private Link는 개인 IP를 사용하여 네트워크 트래픽이 Azure Virtual Network로 제한되므로 클라이언트와 레지스트리 간의 네트워크 액세스를 제어하는 가장 안전한 방법입니다. Private Link가 옵션이 아닌 경우 전용 데이터 엔드포인트는 각 클라이언트에서 액세스할 수 있는 리소스에 대한 보안 정보를 제공할 수 있습니다.

클라이언트 방화벽 규칙 및 데이터 반출 위험

클라이언트 방화벽 규칙은 특정 리소스에 대한 액세스를 제한합니다. 온-프레미스 호스트, IoT 디바이스, 사용자 지정 빌드 에이전트에서 레지스트리에 연결하는 동안 방화벽 규칙이 적용됩니다. Private Link 지원이 옵션이 아닌 경우에도 규칙이 적용됩니다.

클라이언트 방화벽 규칙을 보여 주는 다이어그램.

고객이 클라이언트 방화벽 구성을 잠그면서 모든 스토리지 계정에 대해 와일드카드가 포함된 규칙을 만들어야 한다는 것을 깨달았고, 이는 데이터 반출에 대한 우려를 불러일으켰습니다. 악의적인 작업자는 자신의 스토리지 계정에 쓸 수 있는 코드를 배포할 수 있습니다.

클라이언트 데이터 반출 위험을 보여 주는 다이어그램.

따라서 데이터 반출 문제를 해결하기 위해 Azure Container Registry는 전용 데이터 엔드포인트를 제공하고 있습니다.

전용 데이터 엔드포인트

전용 데이터 엔드포인트는 레지스트리 도메인을 나타내는 정규화된 도메인 이름을 사용하여 Azure Container Registry 서비스에서 계층을 검색하는 데 도움이 됩니다.

모든 레지스트리가 지역적으로 복제될 수 있으므로 지역 패턴([registry].[region].data.azurecr.io)이 사용됩니다.

Contoso 예의 경우 근처 복제본이 있는 로컬 지역을 지원하는 여러 지역 데이터 엔드포인트가 추가됩니다.

전용 데이터 엔드포인트를 사용하면 악의적인 작업자가 다른 스토리지 계정에 쓸 수 없도록 차단됩니다.

전용 데이터 엔드포인트가 있는 contoso 예제를 보여 주는 다이어그램.

전용 데이터 엔드포인트 사용

참고 항목

전용 데이터 엔드포인트로 전환하면 기존 *.blob.core.windows.net 엔드포인트에 대한 방화벽 액세스를 구성한 클라이언트에 영향을 미쳐 끌어오기 오류가 발생합니다. 클라이언트가 일관되게 액세스할 수 있도록 하려면 클라이언트 방화벽 규칙에 새 데이터 엔드포인트를 추가합니다. 완료되면 기존 레지스트리는 az cli를 통해 전용 데이터 엔드포인트를 사용하도록 설정할 수 있습니다.

이 문서의 Azure CLI 단계를 사용하려면 Azure CLI 버전 2.4.0 이상이 필요합니다. 설치 또는 업그레이드가 필요한 경우 Azure CLI 설치를 참조하거나 Azure Cloud Shell에서 실행합니다.

  • 전용 데이터 엔드포인트를 사용하도록 설정하려면 az acr update 명령을 실행합니다.
az acr update --name contoso --data-endpoint-enabled
  • 지역 복제된 레지스트리의 지역 엔드포인트를 포함하여 데이터 엔드포인트를 보려면 az acr show 명령을 실행합니다.
az acr show-endpoints --name contoso

샘플 출력:

{
  "loginServer": "contoso.azurecr.io",
  "dataEndpoints": [
    {
      "region": "eastus",
      "endpoint": "contoso.eastus.data.azurecr.io",
    },
    {
     "region": "westus",
      "endpoint": "contoso.westus.data.azurecr.io",
    }
  ]
}
     

다음 단계