prosource

AAD에 Azure 응용 프로그램이 등록되지 않았습니다.

probook 2023. 4. 28. 21:07
반응형

AAD에 Azure 응용 프로그램이 등록되지 않았습니다.

컨테이너 레지스트리에 로깅하는 동안 다음 오류가 발생했습니다.

명령:

docker login <MY_REGISTRY_NAME>.azurecr.io

오류 메시지:

Error response from daemon: Get https://<MY_REGISTRY_NAME>.azurecr.io/v2/: unauthorized: Application not registered with AAD

컨테이너 레지스트리의 액세스 키로 이동하여 관리자 사용을 활성화한 다음 자동 생성된 자격 증명을 사용하여 도커를 통해 로그인합니다.

저에게 있어서, 모든 것을 진행하는 가장 쉬운 방법은 도커의 문서(https://docs.docker.com/cloud/aci-integration/ )를 읽는 것이었습니다.정말로, 여러분이 해야 할 일은 Azure에서 컨테이너를 만들고, PowerShell을 열고(만약 그렇지 않다면, Azure 모듈을 설치/가져오기) "docker login azure" 명령을 실행하는 것입니다.그러면 브라우저 창이 열리고 거기서 컨테이너에 직접 서명할 수 있습니다.아직 여러 개의 용기가 있어서 시도해 본 적이 없는데, 지금까지는 한 개만 있으면 되는데 어려울 것 같아요.

TL;DR

인증 옵션 및 로그인 문제 해결 문서에 대한 세부 정보를 확인합니다.아래에 언급된 솔루션은 도커 및 헬름용 Azure AD를 사용한 개별 로그인에 사용할 수 있습니다.


@Anudeepa에서 수락한 답변으로 문제가 해결되지만 관리자 계정의 원하는 목적은 아닙니다(문서 참조).

admin 계정은 주로 테스트 목적으로 단일 사용자가 레지스트리에 액세스할 수 있도록 설계되었습니다.여러 사용자 간에 관리자 계정 인증 정보를 공유하지 않는 것이 좋습니다.admin 계정으로 인증하는 모든 사용자는 레지스트리에 대한 푸시 앤 풀 액세스 권한을 가진 단일 사용자로 나타납니다.이 계정을 변경하거나 사용하지 않도록 설정하면 자격 증명을 사용하는 모든 사용자의 레지스트리 액세스가 비활성화됩니다.헤드리스 시나리오의 경우 사용자 및 서비스 주체에게 개별 ID를 권장합니다.

따라서 이 문제를 해결하기 위한 첫 번째 주소는 로그인 문제 해결을 위한 문서여야 합니다.언급된 오류 메시지Error response from daemon: Get https://<MY_REGISTRY_NAME>.azurecr.io/v2/: unauthorized: Application not registered with AAD여러 가지 원인이 있을 수 있습니다.

ACR 인증에는 여러 가지 옵션이 있습니다.

질문은 1) Azure AD를 사용한 개별 로그인 또는 2) Service Principal에 대한 것으로 가정합니다.

gotcha가 있어서 개인 로그인에 문제가 있었습니다.사용자 이름은 사용자 ID에 대한 자리 표시자가 아닙니다.다음과 같이 오류를 해결했습니다.

USER_NAME="00000000-0000-0000-0000-000000000000"
PASSWORD=$(az acr login --name <MY_REGISTRY_NAME> \
--expose-token \
--output tsv \
--query accessToken)

echo "$PASSWORD" | docker login <MY_REGISTRY_NAME>.azurecr.io \
--username "$USER_NAME" \
--password-stdin

echo "$PASSWORD" | helm registry login tacto.azurecr.io \
--username "$USER_NAME" \
--password-stdin

컨테이너 레지스트리의 "액세스 키" 섹션을 통해 관리 사용자를 활성화하지 않으려는 사용자는 이 링크(https://learn.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal 에 따라 서비스 주체를 만들 수 있습니다.앞서 언급한 링크에 제공된 스크립트를 실행하면 도커 로그인 명령과 함께 사용할 수 있는 ID 비밀번호 조합이 생성됩니다(도커 로그인 명령에서 ID를 사용자 이름으로 지정).이렇게 하면 작성한 일부 스크립트를 통해 도커 명령을 실행하려는 경우 이러한 인증 정보를 사용할 수 있습니다.

이 명령은 생성 중인 서비스 주체에 고정 역할을 할당하는 기능을 제공합니다.풀 또는 푸시(풀 포함)에만 해당하는 역할을 할당할 수 있습니다.

제가 잘 모르는 것은 왜 Azure AD를 통해 추가된 사용자들은 도커 로그인 명령에 사용할 수 없지만 서비스 주체를 사용하는 것이 가능한지에 대한 것입니다. (그것에 대해 알고 있는 사람이 있다면 언제든지 공유하십시오.)

전체 레지스트리 이름을 사용하는 경우(예: registryname.azurecr.io단순한 사용자 이름이 아닌 사용자 이름으로registryname

오류 메시지가 짜증나게 부정확합니다!

이 오류가 있었습니다.unauthorized: Application not registered with AAD중에docker login서비스 교장 선생님 것을 사용했습니다.DisplayName대신에ApplicationId의 가치로서--username.

Get-AzADServicePrincipal -DisplayName <DisplayName> | Select ApplicationId

이 방법을 통해 서비스 담당자의 정보를 확인할 수 있습니다.ApplicationId타고DisplayName애저 파워셸에서.Azure Portal에서도 확인할 수 있습니다.

다른 사용자가 언급한 것처럼, 원할 경우 admin 사용자를 사용할 수 있습니다.

그러나 이는 대규모 조직에 이상적인 솔루션이 아닐 수 있습니다.대신 RBAC 및 Azure AD 로그인을 사용하여 액세스를 관리할 수 있습니다.다음은 제가 수행한 단계입니다.

  1. 사용자와 사용자에게 필요한 RBAC 역할이 있는지 확인합니다.자세한 내용은 다음 링크를 참조하십시오. https://learn.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli
  2. 아직 다운로드하지 않은 경우 Azure CLI를 다운로드하십시오. https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli
  3. 다음 명령을 사용하여 Azure CLI에 로그인합니다.az login
    브라우저를 통해 로그인할 수 있는 팝업이 나타납니다.
  4. Azure Container Repository와 동일한 구독에 로그인했는지 확인합니다.
  5. 다음을 사용하여합니다.
    az acr login --name <your-repo-name-here>.azurecr.io

바로 그거야!저는 협업을 훨씬 쉽게 만드는 이 솔루션을 찾았습니다.도움이 되기를 바랍니다!

  1. 다음을 사용하여 자격 증명 가져오기az acr credential show --name testcontainerregistry
  2. 다음자증에서 이러한 자격 합니다.docker login testcontainerregistry.azurecr.io

언급URL : https://stackoverflow.com/questions/65316558/azure-application-not-registered-with-aad

반응형