Субъект службы Azure извлекает образы из реестра контейнеров.

Я создал такого субъекта-службы Azure

az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME --scopes $ACR_REGISTRY_ID --role reader

после входа в систему (az login --service-principal -u $SERVICE_PRINCIPAL_NAME -p $SERVICE_PRINCIPAL_ID --tenant $TENANT_ID) я могу видеть все изображения (az acr repository list --name $ACR_REGISTRY_NAME), которые есть в моем реестре, но я не могу нажимать или извлекать изображения (docker pull myregistry.azurecr.io/myimage:latest).

Есть ли какие-то разрешения, о которых я не знаю? Я пробовал сделать то же самое с другими ролями, такими как owner или contributor, но также SP получают ту же ошибку, которая заключается в следующем:

Ответ демона об ошибке: получите https://myregistry.azurecr.io/v2/myimage/latest/manifests/latest: unauthorized: требуется аутентификация


Обновление 14 августа:

Я также не могу войти в докер с помощью SP

Ответ от демона об ошибке: получить myregistry.azurecr.io/v2: unauthorized: требуется аутентификация


person zara    schedule 13.08.2018    source источник
comment
При поиске ошибки кажется, что сначала нужно docker login.   -  person jesugmz    schedule 14.08.2018


Ответы (2)


Вам необходимо войти в реестр, используя логин docker

docker login myregistry.azurecr.io -u xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p myPassword

См .: https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication#service-principal.

person melsaqqa    schedule 13.08.2018
comment
К сожалению, это тоже не работает: ›Ответ от демона об ошибке: получите myregistry.azurecr.io/v2 : unauthorized: требуется аутентификация - person zara; 14.08.2018
comment
вам необходимо заменить ‹myregistry.azurecr.io› на ваш логин-сервер - person Hanu; 29.11.2018

Для реестра контейнеров Azure есть два способа войти в систему.

Во-первых, войдите в систему с помощью команды az acr login -n azureacrServer -u username -p password, после входа у вас будет разрешение владельца.

Другой - войти в систему с субъектом службы с помощью команды docker login azureacrServer -u servicePrincipalId -p sppassword. Таким образом, у вас просто есть разрешение субъекта-службы после входа в систему. Я пытаюсь, и результат, как на снимке экрана ниже, показан ниже:

введите здесь описание изображения

Этот субъект-служба просто настроен как Читатель. Поэтому мы не можем протолкнуть изображение.

введите здесь описание изображения

Вы можете получить подробную информацию о субъекте службы реестра контейнеров Azure с помощью команды az role assignment list --scope acrId, команда покажет все субъекты службы реестра. Команда az acr show --resource-group groupName --name acrName --query id --output tsv покажет вам идентификатор реестра.

person Charles Xu    schedule 14.08.2018
comment
Спасибо за подробный ответ, на самом деле проблема была совсем в другом направлении, для справки: github.com/docker/for-mac/issues/2295 - person zara; 14.08.2018
comment
@zara Итак, я предлагаю вам получить информацию о принципале службы в конце ответа .:-) - person Charles Xu; 15.08.2018