이 문서는 Azure Container Registry에 로그인, 인증 또는 권한을 부여할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.
증상
다음 중 하나 이상을 포함할 수 있습니다.
- 또는 둘 다를 사용하여
docker login
az acr login
레지스트리에 로그인할 수 없음 - 레지스트리에 로그인할 수 없고 오류 메시지를 받습니다
unauthorized: authentication required
또는unauthorized: Application not registered with AAD
- 레지스트리에 로그인할 수 없으며 Azure CLI 오류가 발생합니다.
Could not connect to the registry login server
- 이미지를 푸시하거나 끌어올 수 없으며 Docker 오류
unauthorized: authentication required
가 표시됩니다. -
az acr login
을 사용하여 레지스트리에 액세스할 수 없으며CONNECTIVITY_REFRESH_TOKEN_ERROR. Access to registry was denied. Response code: 403. Unable to get admin user credentials with message: Admin user is disabled. Unable to authenticate using AAD or admin login credentials.
오류가 발생합니다. - Azure Kubernetes Service, Azure DevOps 또는 다른 Azure 서비스에서 레지스트리에 액세스할 수 없습니다.
- 레지스트리에 액세스할 수 없고 오류가
Error response from daemon: login attempt failed with status: 403 Forbidden
발생합니다. 레지스트리와 관련된 네트워크 문제 해결 참조 - Azure Portal에서 레지스트리 설정에 액세스하거나 보거나 Azure CLI를 사용하여 레지스트리를 관리할 수 없습니다.
원인
- Docker가 사용자 환경에서 제대로 구성되지 않음 - 솔루션
- 레지스트리가 없거나 이름이 올바르지 않음 - 솔루션
- 레지스트리 자격 증명이 잘못되었습니다. - 솔루션
- 레지스트리 공용 액세스가 사용하지 않도록 설정되었습니다. 레지스트리의 공용 네트워크 액세스 규칙 액세스 방지 - 솔루션
- 자격 증명은 푸시, 끌어오기 또는 Azure Resource Manager 작업에 대한 권한이 없습니다. - 솔루션
- 자격 증명이 만료됨 - 솔루션
- Microsoft Entra ID(사용자, 관리 ID 또는 서비스 주체)에 대한 레지스트리 권한을 관리하는 데 Microsoft Entra RBAC(역할 기반 액세스 제어)를 사용하는 경우 ID에는 레지스트리 권한이 있지만 리포지토리 권한은 없을 수 있습니다. 솔루션
추가 진단
az acr check-health 명령을 실행하여 레지스트리 환경의 상태에 대한 자세한 정보를 얻고 필요에 따라 대상 레지스트리에 액세스합니다. 예를 들어, Docker 구성 오류 또는 Microsoft Entra 로그인 문제를 진단합니다.
Azure 컨테이너 레지스트리의 상태 확인 명령 예제를 참조하세요. 오류가 보고되면 오류 참조 및 권장 솔루션에 대한 다음 섹션을 검토합니다.
ACR에서 AKS 클러스터로 이미지를 끌어오지 못하는 경우 AKS 지원 문서의 지침을 따릅니다.
비고
일부 인증 또는 권한 부여 오류는 레지스트리 액세스를 방해하는 방화벽 또는 네트워크 구성이 있는 경우에도 발생할 수 있습니다. 레지스트리와 관련된 네트워크 문제 해결을 참조하세요.
잠재적 해결 방법
Docker 구성 확인
대부분의 Azure Container Registry 인증 흐름에는 로컬 Docker 설치가 필요하므로 이미지 푸시 및 끌어오기 등의 작업을 위해 레지스트리를 사용하여 인증할 수 있습니다. 사용자 환경에서 Docker CLI 클라이언트 및 디먼(Docker 엔진)이 실행 중인지 확인합니다. Docker 클라이언트 버전 18.03 이상이 필요합니다.
관련 링크:
올바른 레지스트리 이름 지정
사용하는 docker login
경우 레지스트리의 전체 로그인 서버 이름(예: myregistry.azurecr.io)을 제공합니다. 소문자만 사용해야 합니다. 예제:
docker login myregistry.azurecr.io
Microsoft Entra ID와 함께 az acr 로그인 을 사용하는 경우 먼저 Azure CLI에 로그인한 다음 레지스트리의 Azure 리소스 이름을 지정합니다. 리소스 이름은 도메인 접미사가 없는 myregistry 와 같이 레지스트리를 만들 때 제공되는 이름입니다. 예제:
az acr login --name myregistry
관련 링크:
레지스트리에 액세스할 자격 증명 확인
시나리오에 사용하는 자격 증명의 유효성을 검사하거나 레지스트리 소유자가 제공한 자격 증명의 유효성을 검사합니다. 가능한 문제는 다음과 같습니다.
- Active Directory 서비스 주체를 사용하는 경우 Active Directory 테넌트에서 올바른 자격 증명을 사용해야 합니다.
- 사용자 이름 - 서비스 주체 애플리케이션 ID( 클라이언트 ID라고도 함)
- 암호 - 서비스 주체 암호( 클라이언트 암호라고도 함)
- Azure Kubernetes Service 또는 Azure DevOps와 같은 Azure 서비스를 사용하여 레지스트리에 액세스하는 경우 서비스에 대한 레지스트리 구성을 확인합니다.
- Docker 디먼을 사용하지 않고 레지스트리 로그인을 사용하도록 설정하는
az acr login
옵션과 함께--expose-token
을 실행한 경우 사용자 이름00000000-0000-0000-0000-000000000000
으로 인증해야 합니다. - 레지스트리가 익명 끌어오기 액세스를 위해 구성된 경우 이전 Docker 로그인에서 저장된 기존 Docker 자격 증명은 익명 액세스를 방지할 수 있습니다. 레지스트리에서 익명 끌어오기 작업을 시도하기 전에
docker logout
을 실행합니다.
관련 링크:
- 인증 개요
- 레지스트리 권한에 대한 Microsoft Entra RBAC(역할 기반 액세스 제어)를 관리합니다.
- Microsoft Entra 기반 리포지토리 권한에 대한 ABAC(Microsoft Entra 특성 기반 액세스 제어)를 관리합니다.
- Microsoft Entra ID를 사용한 개별 로그인
- 서비스 주체를 사용하여 로그인
- 관리 ID를 사용하여 로그인
- Microsoft Entra를 제외한 토큰 기반 리포지토리 권한으로 로그인
- 관리자 계정으로 로그인
- Microsoft Entra 인증 및 권한 부여 오류 코드
- az acr login 참고 자료
레지스트리에 액세스할 수 있도록 자격 증명에 권한이 있는지 확인
- 포털을 통해 레지스트리 액세스를 허용하도록 사용 권한이 최근에 변경된 경우 오래된 브라우저 캐시 또는 쿠키를 방지하려면 브라우저에서 incognito 또는 프라이빗 세션을 시도해야 할 수 있습니다.
- 사용자 또는 레지스트리 소유자는 구독에서 Microsoft Entra 역할 할당을 추가, 수정 또는 제거할 수 있는 충분한 권한이 있어야 합니다. Microsoft Entra 역할 할당을 관리하는 권한은
Role Based Access Control Administrator
역할에 의해 부여됩니다. - Azure CLI를 사용하여 포털 또는 레지스트리 관리에서 레지스트리에 액세스하려면 Azure Resource Manager 작업을 수행할 최소한
Container Registry Contributor and Data Access Configuration Administrator
역할 또는 이와 동등한 권한이 필요합니다.
ID 권한 및 역할 할당 유효성 검사
- 레지스트리 권한을 관리하는 데 Microsoft Entra RBAC(역할 기반 액세스 제어)를 사용하는 경우 ID(사용자, 관리 ID 또는 서비스 주체)에 올바른 역할 할당 및 권한이 있는지 확인합니다.
- Azure Portal "속성" 블레이드에서 "레지스트리 역할 할당 권한 모드"가 새 "RBAC 레지스트리 + ABAC 리포지토리 권한" 옵션으로 설정되어 있고 ID가 이미지를 푸시, 끌어오기 또는 삭제할 수 없는 경우 ID에 이미지가 있는 특정 리포지토리에 액세스할 수 있는 권한이 없을 수 있습니다.
- 기존 역할 할당 및 역할 할당 ABAC 조건을 확인하여 ID에 리포지토리에 액세스할 수 있는 올바른 권한이 있는지 확인합니다.
-
"RBAC 레지스트리 + ABAC 리포지토리 권한" 모드가 있는 레지스트리는 기존
AcrPull
또는AcrPush
AcrDelete
역할을 적용하지 않습니다. - 대신 이러한 레지스트리는 레지스트리의
Container Registry Repository Reader
Container Registry Repository Writer
Container Registry Repository Contributor
리포지토리 내에서 이미지를 읽거나 쓰거나 삭제하는 역할만 적용합니다. 이러한 역할에는 특정 리포지토리에 부여된 권한을 제한하는 선택적 ABAC 조건이 있을 수 있습니다. - 이러한 역할은 레지스트리의 리포지토리를 나열하는 카탈로그 목록에 대한 권한을 부여하지 않습니다. 리포지토리를 나열하려면(리포지토리 내에서 콘텐츠를 읽지 않음) ID에
Container Registry Repository Catalog Lister
역할을 별도로 할당해야 합니다. 이 역할은 ABAC 조건을 지원하지 않으므로 레지스트리의 모든 리포지토리를 나열할 수 있는 권한을 부여합니다. - 자세한 내용은 Microsoft Entra 기반 리포지토리 권한에 대한 MICROSOFT Entra ABAC(특성 기반 액세스 제어)를 참조하세요.
- "레지스트리 역할 할당 권한 모드"가 이전 "RBAC 레지스트리 사용 권한" 옵션으로 설정된 경우 ID에 레지스트리 및 해당 리포지토리에 액세스할 수 있는 권한이 없을 수 있습니다.
- 기존 역할 할당을 확인하여 ID에 레지스트리 및 해당 리포지토리에 액세스할 수 있는 올바른 권한이 있는지 확인합니다.
-
"RBAC 레지스트리 사용 권한" 모드가 있는 레지스트리는 레지스트리의
AcrPull
AcrPush
AcrDelete
리포지토리 내에서 이미지를 읽거나 쓰거나 삭제하는 역할만 적용합니다. - 자세한 내용은 Azure Container Registry Microsoft Entra 권한 및 역할 개요를 참조하세요.
- Azure Portal "속성" 블레이드에서 "레지스트리 역할 할당 권한 모드"가 새 "RBAC 레지스트리 + ABAC 리포지토리 권한" 옵션으로 설정되어 있고 ID가 이미지를 푸시, 끌어오기 또는 삭제할 수 없는 경우 ID에 이미지가 있는 특정 리포지토리에 액세스할 수 있는 권한이 없을 수 있습니다.
관련 링크:
- Azure Container Registry Microsoft Entra 권한 및 역할 개요
- 레지스트리 권한에 대한 Microsoft Entra RBAC(역할 기반 액세스 제어)를 관리합니다.
- Microsoft Entra 기반 리포지토리 권한에 대한 ABAC(Microsoft Entra 특성 기반 액세스 제어)를 관리합니다.
- Azure Portal을 사용하여 Azure 역할 할당 추가 또는 제거
- 포털을 사용하여 리소스에 액세스할 수 있는 Microsoft Entra 애플리케이션 및 서비스 주체 만들기
- 새 애플리케이션 비밀 만들기
- Microsoft Entra 인증 및 권한 부여 코드
- Microsoft가 아닌 Entra 토큰 기반 리포지토리 권한으로 로그인
자격 증명이 만료되지 않았는지 확인
토큰 및 Active Directory 자격 증명은 정의된 기간 후에 만료되어 레지스트리 액세스를 방지합니다. 액세스를 사용하도록 설정하려면 자격 증명을 다시 설정하거나 다시 생성해야 할 수 있습니다.
- 레지스트리 로그인을 위해 개인 AD ID, 관리 ID 또는 서비스 주체를 사용하는 경우 AD 토큰은 3시간 후에 만료됩니다. 레지스트리에 다시 로그인합니다.
- 만료된 클라이언트 암호로 AD 서비스 주체를 사용하는 경우 구독 소유자 또는 계정 관리자는 자격 증명을 다시 설정하거나 새 서비스 주체를 생성해야 합니다.
- Microsoft Entra가 아닌 토큰 기반 리포지토리 권한을 사용하는 경우 레지스트리 소유자는 암호를 재설정하거나 새 토큰을 생성해야 할 수 있습니다.
관련 링크:
고급 문제 해결
레지스트리에서 리소스 로그 수집을 사용하는 경우 ContainerRegistryLoginEvents 로그를 검토합니다. 이 로그는 들어오는 ID와 IP 주소를 포함하여 인증 이벤트와 상태를 저장합니다. 레지스트리 인증 실패에 대한 로그를 쿼리합니다.
관련 링크:
다음 단계
여기에서 문제를 해결하지 않으면 다음 옵션을 참조하세요.
- 기타 레지스트리 문제 해결 항목은 다음과 같습니다.
- 커뮤니티 지원 옵션
- Microsoft Q&A
- 지원 티켓 열기 - 제공한 정보에 따라 레지스트리의 인증 실패에 대해 빠른 진단이 실행될 수 있습니다.