방화벽 뒤에서 Azure 컨테이너 레지스트리에 액세스하기 위한 규칙 구성

이 문서에서는 Azure 컨테이너 레지스트리에 대한 액세스를 허용하도록 방화벽 규칙을 구성하는 방법을 설명합니다. 예를 들어 방화벽 또는 프록시 서버 뒤에 있는 Azure IoT Edge 디바이스가 컨테이너 레지스트리에 액세스하여 컨테이너 이미지를 풀해야 할 수 있습니다. 또는 온-프레미스 네트워크의 잠긴 서버에서 이미지를 푸시하기 위한 액세스 권한이 필요할 수 있습니다.

Azure 가상 네트워크 내에서만 컨테이너 레지스트리에 대한 인바운드 네트워크 액세스를 구성하려는 경우 Azure 컨테이너 레지스트리에 대한 Azure Private Link 구성을 참조하세요.

레지스트리 엔드포인트 정보

이미지 또는 기타 아티팩트를 Azure 컨테이너 레지스트리로 풀하거나 푸시하려면 Docker 디먼 같은 클라이언트는 HTTPS를 통해 두 개의 고유한 엔드포인트와 상호 작용해야 합니다. 방화벽 뒤에서 레지스트리에 액세스하는 클라이언트의 경우 두 엔드포인트에 대한 액세스 규칙을 구성해야 합니다. 두 엔드포인트 모두 포트 443을 통해 연결됩니다.

  • 레지스트리 REST API 엔드포인트 - 인증 및 레지스트리 관리 작업은 레지스트리의 공용 REST API 엔드포인트를 통해 처리됩니다. 이 엔드포인트는 레지스트리의 로그인 서버 이름입니다. 예: myregistry.azurecr.io

    • 인증서에 대한 레지스트리 REST API 엔드포인트 - Azure Container Registry는 모든 하위 도메인에 와일드카드 SSL 인증서를 사용합니다. SSL을 사용하여 Azure 컨테이너 레지스트리에 연결할 때 클라이언트는 TLS 핸드셰이크에 대한 인증서를 다운로드할 수 있어야 합니다. 이러한 경우 azurecr.io에도 액세스할 수 있어야 합니다.
  • 스토리지(데이터) 엔드포인트 - Azure는 컨테이너 이미지 및 다른 아티팩트의 데이터를 관리하기 위해 각 레지스트리를 대신하여 Azure Storage 계정에 Blob Storage를 할당합니다. 클라이언트는 Azure 컨테이너 레지스트리의 이미지 계층에 액세스할 때 레지스트리에서 제공하는 스토리지 계정 엔드포인트를 사용하여 요청을 수행합니다.

레지스트리가 지역에서 복제된 경우 클라이언트는 특정 지역 또는 여러 복제된 지역에서 데이터 엔드포인트와 상호 작용해야 할 수 있습니다.

REST 및 데이터 엔드포인트에 대한 액세스 허용

  • REST 엔드포인트 - 정규화된 레지스트리 로그인 서버 이름 <registry-name>.azurecr.io 또는 연결된 IP 주소 범위에 대한 액세스를 허용합니다.
  • 스토리지(데이터) 엔드포인트 - 와일드카드 *.blob.core.windows.net 또는 연결된 IP 주소 범위를 사용하여 모든 Azure Blob Storage 계정에 대한 액세스를 허용합니다.

참고 항목

Azure Container Registry는 전용 데이터 엔드포인트를 도입하여 레지스트리 스토리지에 대한 클라이언트 방화벽 규칙의 범위를 확고하게 지정할 수 있습니다. 필요에 따라 <registry-name>.<region>.data.azurecr.io 폼을 사용하여 레지스트리가 위치하거나 복제된 모든 지역에서 데이터 엔드포인트를 사용하도록 설정합니다.

레지스트리 FQDN 정보

레지스트리에는 로그인 URL데이터 엔드포인트의 두 가지 FQDN이 있습니다.

  • 프라이빗 링크를 사용하도록 설정하여 개인 IP를 통해 가상 네트워크 내에서 로그인 URL데이터 엔드포인트 둘 다에 액세스할 수 있습니다.
  • 데이터 엔드포인트를 사용하지 않는 레지스트리는 양식 *.blob.core.windows.net의 엔드포인트에서 데이터에 액세스해야 하며 방화벽 규칙을 구성할 때 필요한 격리를 제공하지 않습니다.
  • 프라이빗 링크가 활성화된 레지스트리는 전용 데이터 엔드포인트를 자동으로 가져옵니다.
  • 레지스트리에 대해 지역별로 전용 데이터 엔드포인트가 만들어집니다.
  • 로그인 URL은 데이터 엔드포인트의 사용 여부에 관계없이 동일하게 유지됩니다.

IP 주소 범위를 기준으로 액세스 허용

조직에 특정 IP 주소 또는 주소 범위에 대한 액세스만 허용하는 정책이 있는 경우 Azure IP 범위 및 서비스 태그 – 퍼블릭 클라우드를 다운로드합니다.

액세스를 허용해야 하는 ACR REST 엔드포인트 IP 범위를 찾으려면 JSON 파일에서 AzureContainerRegistry를 검색합니다.

Important

Azure 서비스에 대한 IP 주소 범위가 변경될 수 있으며, 매주 업데이트가 게시됩니다. JSON 파일을 정기적으로 다운로드하고 액세스 규칙에 필요한 업데이트를 수행합니다. Azure 가상 네트워크에서 네트워크 보안 그룹 규칙을 구성하는 것이 시나리오에 포함되거나 Azure Firewall을 사용하는 경우 AzureContainerRegistry 서비스 태그를 대신 사용합니다.

모든 지역의 REST IP 주소

{
  "name": "AzureContainerRegistry",
  "id": "AzureContainerRegistry",
  "properties": {
    "changeNumber": 10,
    "region": "",
    "platform": "Azure",
    "systemService": "AzureContainerRegistry",
    "addressPrefixes": [
      "13.66.140.72/29",
    [...]

특정 지역의 REST IP 주소

AzureContainerRegistry.AustraliaEast와 같은 특정 지역을 검색합니다.

{
  "name": "AzureContainerRegistry.AustraliaEast",
  "id": "AzureContainerRegistry.AustraliaEast",
  "properties": {
    "changeNumber": 1,
    "region": "australiaeast",
    "platform": "Azure",
    "systemService": "AzureContainerRegistry",
    "addressPrefixes": [
      "13.70.72.136/29",
    [...]

모든 지역의 스토리지 IP 주소

{
  "name": "Storage",
  "id": "Storage",
  "properties": {
    "changeNumber": 19,
    "region": "",
    "platform": "Azure",
    "systemService": "AzureStorage",
    "addressPrefixes": [
      "13.65.107.32/28",
    [...]

특정 지역의 스토리지 IP 주소

Storage.AustraliaCentral과 같은 특정 지역을 검색합니다.

{
  "name": "Storage.AustraliaCentral",
  "id": "Storage.AustraliaCentral",
  "properties": {
    "changeNumber": 1,
    "region": "australiacentral",
    "platform": "Azure",
    "systemService": "AzureStorage",
    "addressPrefixes": [
      "52.239.216.0/23"
    [...]

서비스 태그를 기준으로 액세스 허용

Azure 가상 네트워크에서 네트워크 보안 규칙을 사용하여 가상 머신과 같은 리소스에서 컨테이너 레지스트리로의 트래픽을 필터링합니다. Azure 네트워크 규칙 만들기를 간소화하려면 AzureContainerRegistry 서비스 태그를 사용합니다. 서비스 태그는 전역으로 또는 Azure 지역별로 Azure 서비스에 액세스하기 위한 IP 주소 접두사 그룹을 나타냅니다. 주소가 변경되면 태그가 자동으로 업데이트됩니다.

예를 들어 대상 AzureContainerRegistry를 사용하여 Azure 컨테이너 레지스트리로의 트래픽을 허용하는 아웃바운드 네트워크 보안 그룹 규칙을 만듭니다. 특정 지역에서만 서비스 태그에 대한 액세스를 허용하려면 AzureContainerRegistry.[지역 이름] 형식으로 지역을 지정합니다.

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

Warning

이전에 기존 *.blob.core.windows.net 엔드포인트에 대한 클라이언트 방화벽 액세스를 구성한 경우에는 전용 데이터 엔드포인트로 전환하면 클라이언트 연결에 영향을 주어 풀 오류가 발생합니다. 클라이언트에 일관된 액세스 권한이 있는지 확인하려면 클라이언트 방화벽 규칙에 새 데이터 엔드포인트 규칙을 추가합니다. 추가를 완료하면 Azure CLI 또는 다른 도구를 사용하여 레지스트리에 대한 전용 데이터 엔드포인트를 사용하도록 설정합니다.

전용 데이터 엔드포인트는 프리미엄 컨테이너 레지스트리 서비스 계층의 선택적 기능입니다. 레지스트리 서비스 계층 및 제한에 대한 내용은 Azure Container Registry 서비스 계층을 참조하세요.

Azure Portal 또는 Azure CLI를 사용하여 전용 데이터 엔드포인트를 사용하도록 설정할 수 있습니다. 데이터 엔드포인트는 <registry-name>.<region>.data.azurecr.io 지역 패턴을 따릅니다. 지역에서 복제된 레지스트리에서 데이터 엔드포인트를 사용하도록 설정하면 모든 복제본 지역에서 엔드포인트를 사용할 수 있습니다.

포털

포털을 사용하여 데이터 엔드포인트를 사용하도록 설정하려면 다음을 수행합니다.

  1. 컨테이너 레지스트리로 이동합니다.
  2. 네트워킹>공용 액세스를 선택합니다.
  3. 전용 데이터 엔드포인트 사용 확인란을 선택합니다.
  4. 저장을 선택합니다.

데이터 엔드포인트 또는 엔드포인트가 포털에 표시됩니다.

Dedicated data endpoints in portal

Azure CLI

Azure CLI를 사용하여 데이터 엔드포인트를 사용하도록 설정하려면 Azure CLI 버전 2.4.0 이상을 사용합니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

다음 az acr update 명령은 레지스트리 myregistry에서 전용 데이터 엔드포인트를 사용하도록 설정합니다.

az acr update --name myregistry --data-endpoint-enabled

데이터 엔드포인트를 보려면 az acr show-endpoints 명령을 사용합니다.

az acr show-endpoints --name myregistry

데모용 출력에서는 두 개의 지역 엔드포인트가 표시됩니다.

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

레지스트리에 대한 전용 데이터 엔드포인트를 설정한 후 데이터 엔드포인트에 대한 클라이언트 방화벽 액세스 규칙을 사용하도록 설정할 수 있습니다. 모든 필수 레지스트리 지역에 대해 데이터 엔드포인트 액세스 규칙을 사용하도록 설정합니다.

MCR에 대한 클라이언트 방화벽 규칙 구성

방화벽 뒤에서 MCR(Microsoft Container Registry)에 액세스해야 하는 경우 MCR 클라이언트 방화벽 규칙을 구성하는 방법에 대한 지침을 참조하세요. MCR은 Windows Server 이미지와 같은 Microsoft에 게시된 모든 Docker 이미지의 기본 레지스트리입니다.

다음 단계