공용 IP 네트워크 규칙 구성

기본적으로 Azure Container Registry는 모든 네트워크에 있는 호스트로부터의 인터넷 연결을 수락합니다. 이 문서에서는 특정 공용 IP 주소 또는 주소 범위로부터만 액세스를 허용하도록 컨테이너 레지스트리를 구성하는 방법을 살펴봅니다. Azure CLI 및 Azure Portal 사용에 해당하는 단계가 제공됩니다.

IP 네트워크 규칙은 공용 레지스트리 엔드포인트에 구성됩니다. IP 네트워크 규칙은 프라이빗 링크로 구성된 프라이빗 엔드포인트에는 적용되지 않음

IP 액세스 규칙 구성은 프리미엄 컨테이너 레지스트리 서비스 계층에서 사용할 수 있습니다. 레지스트리 서비스 계층 및 제한에 대한 자세한 내용은 Azure Container Registry 계층을 참조하세요.

각 레지스트리는 최대 100개의 IP 액세스 규칙을 지원합니다.

Important

일부 기능을 사용할 수 없거나 컨테이너 레지스트리에서 개인 엔드포인트, 선택한 서브넷 또는 IP 주소로 액세스를 제한하는 추가 구성이 필요합니다.

  • 레지스트리에 대한 퍼블릭 네트워크 액세스를 사용하지 않도록 설정한 경우 Azure Security Center를 포함하는 신뢰할 수 있는 특정 서비스의 레지스트리 액세스 권한에 따라 네트워크 규칙을 무시하도록 네트워크 설정을 지정해야 합니다.
  • 공용 네트워크 액세스를 사용하지 않으면, 현재 Azure DevOps Services를 비롯한 특정 Azure 서비스의 인스턴스에서 컨테이너 레지스트리에 액세스할 수 없습니다.
  • 프라이빗 엔드포인트는 현재 Azure DevOps 관리 에이전트에서 지원되지 않습니다. 프라이빗 엔드포인트에 대한 네트워크 가시적인 연결이 있는 자체 호스팅 에이전트를 사용해야 합니다.
  • 레지스트리에 승인된 프라이빗 엔드포인트가 있고 퍼블릭 네트워크 액세스를 사용하지 않도록 설정한 경우 Azure Portal, Azure CLI 또는 기타 도구를 사용하여 가상 네트워크 외부의 리포지토리 및 태그를 나열할 수 없습니다.

선택한 공용 네트워크에서 액세스 - CLI

레지스트리에 대한 기본 네트워크 액세스 변경

선택한 공용 네트워크에 대한 액세스를 제한하려면 먼저 액세스를 거부하도록 기본 작업을 변경합니다. 다음 az acr update 명령에서 레지스트리 이름을 바꿉니다.

az acr update --name myContainerRegistry --default-action Deny

레지스트리에 네트워크 규칙 추가

공용 IP 주소나 범위에서의 액세스를 허용하는 네트워크 규칙을 az acr network-rule add 명령을 사용하여 레지스트리에 추가합니다. 예를 들어 가상 네트워크에서 컨테이너 레지스트리의 이름과 VM의 공용 IP 주소를 대체합니다.

az acr network-rule add \
  --name mycontainerregistry \
  --ip-address <public-IP-address>

참고 항목

규칙을 추가한 후 규칙이 적용되는 데 몇 분 정도 걸립니다.

선택한 공용 네트워크에서 액세스-포털

  1. 포털에서 컨테이너 레지스트리로 이동합니다.
  2. 설정에서 네트워킹을 선택합니다.
  3. 공용 액세스 탭에서 선택된 네트워크에서 공용 액세스를 허용하도록 선택합니다.
  4. 방화벽에서 가상 네트워크에 있는 VM의 공용 IP 주소와 같은 공용 IP 주소를 입력합니다. 또는 VM의 IP 주소를 포함하는 CIDR 표기법으로 주소 범위를 입력합니다.
  5. 저장을 선택합니다.

Configure firewall rule for container registry

참고 항목

규칙을 추가한 후 규칙이 적용되는 데 몇 분 정도 걸립니다.

선택적으로 로컬 클라이언트 컴퓨터나 IP 주소 범위에서 레지스트리 액세스를 사용합니다. 이 액세스를 허용하려면 컴퓨터의 공용 IPv4 주소가 필요합니다. 인터넷 브라우저에서 "내 IP 주소"를 검색하여 이 주소를 찾을 수 있습니다. 포털의 네트워킹 페이지에서 방화벽 설정을 구성할 때 현재 클라이언트 IPv4 주소도 자동으로 표시됩니다.

공용 네트워크 액세스 사용 안 함

필요에 따라 레지스트리에서 퍼블릭 엔드포인트를 사용하지 않게 설정합니다. 퍼블릭 엔드포인트를 사용하지 않게 설정하면 모든 방화벽 구성이 재정의됩니다. 예를 들어 프라이빗 링크를 사용하여 가상 네트워크에서 보호되는 레지스트리에 대한 공용 액세스를 사용하지 않게 설정할 수 있습니다.

참고 항목

레지스트리가 서비스 엔드포인트가 있는 가상 네트워크에 설정된 경우 레지스트리의 공용 엔드포인트에 대한 액세스를 사용하지 않도록 설정하면 가상 네트워크 내의 레지스트리에 대한 액세스도 사용하지 않도록 설정됩니다.

공용 액세스를 사용하지 않음 - CLI

Azure CLI를 통해 공용 액세스를 사용하지 않으려면 az acr update를 실행하고 --public-network-enabledfalse로 설정합니다. public-network-enabled 인수에는 Azure CLI 2.6.0 이상이 필요합니다.

az acr update --name myContainerRegistry --public-network-enabled false

공용 액세스 사용 안 함 - 포털

  1. 포털에서 컨테이너 레지스트리로 이동하고 설정 > 네트워킹을 선택합니다.
  2. 공용 액세스 탭의 공용 네트워크 액세스 허용에서 사용 안 함을 선택합니다. 그런 다음 저장을 선택합니다.

Disable public access

공용 네트워크 액세스 복원

퍼블릭 엔드포인트를 다시 사용하려면 네트워크 설정을 업데이트하여 공용 액세스를 허용합니다. 퍼블릭 엔드포인트를 사용하도록 설정하면 모든 방화벽 구성이 재정의됩니다.

공용 액세스 복원 - CLI

az acr update를 실행하고 --public-network-enabledtrue로 설정합니다.

참고 항목

public-network-enabled 인수에는 Azure CLI 2.6.0 이상이 필요합니다.

az acr update --name myContainerRegistry --public-network-enabled true

공용 액세스 복원 - 포털

  1. 포털에서 컨테이너 레지스트리로 이동하고 설정 > 네트워킹을 선택합니다.
  2. 공용 액세스 탭의 공용 네트워크 액세스 허용에서 모든 네트워크를 선택합니다. 그런 다음 저장을 선택합니다.

Public access from all networks

문제 해결

HTTPS 프록시를 사용하여 액세스

공용 네트워크 규칙이 설정되거나 레지스트리에 대한 공용 액세스가 거부된 경우 허용되지 않은 공용 네트워크에서 레지스트리에 로그인하려는 시도가 실패합니다. 프록시에 대한 액세스 규칙이 설정되지 않은 경우 HTTPS 프록시 뒤에서의 클라이언트 액세스도 실패합니다. Error response from daemon: login attempt failed with status: 403 Forbidden 또는 Looks like you don't have access to registry와 유사한 오류 메시지가 표시됩니다.

이러한 오류는 네트워크 액세스 규칙에서 허용하는 HTTPS 프록시를 사용하지만 프록시가 클라이언트 환경에서 제대로 구성되지 않은 경우에도 발생할 수 있습니다. Docker 클라이언트와 Docker 데몬이 모두 프록시 동작에 대해 구성되어 있는지 확인합니다. 자세한 내용은 Docker 문서의 HTTP/HTTPS 프록시를 참조하세요.

Azure Pipelines에서 액세스

특정 IP 주소에 대한 액세스를 제한하는 Azure 컨테이너 레지스트리에서 Azure Pipelines를 사용하는 경우 파이프라인의 아웃바운드 IP 주소가 고정되지 않았으므로 파이프라인이 레지스트리에 액세스하지 못할 수 있습니다. 기본적으로 파이프라인은 변경되는 IP 주소 세트가 있는 가상 머신 풀에서 Microsoft 호스팅 에이전트를 사용하여 작업을 실행합니다.

한 가지 해결 방법은 파이프라인을 실행하는 데 사용되는 에이전트를 Microsoft 호스팅 에이전트에서 자체 호스팅 에이전트로 변경하는 것입니다. 관리하는 Windows 또는 Linux 머신에서 실행되는 자체 호스팅 에이전트를 사용하면 파이프라인의 아웃바운드 IP 주소를 제어하고 이 주소를 레지스트리 IP 액세스 규칙에 추가할 수 있습니다.

AKS에서 액세스

특정 IP 주소에 대한 액세스를 제한하는 Azure 컨테이너 레지스트리에서 AKS(Azure Kubernetes Service)를 사용하는 경우 기본적으로 고정 AKS IP 주소를 구성할 수 없습니다. AKS 클러스터의 송신 IP 주소가 임의로 할당됩니다.

AKS 클러스터가 레지스트리에 액세스하도록 허용하려면 다음 옵션을 사용할 수 있습니다.

  • Azure 기본 Load Balancer를 사용하는 경우 AKS 클러스터의 고정 IP 주소를 설정합니다.
  • Azure 표준 Load Balancer를 사용하는 경우 클러스터에서 송신 트래픽을 제어하는 방법에 대한 지침을 참조하세요.

다음 단계