Как исправить ошибку «требуется проверка подлинности» при попытке удалить тег изображения из реестра Azure?

Хорошо, мне нужно удалить изображение с определенным тегом из реестра Azure (ACR) с помощью Azure CLI и пройти аутентификацию с субъектами служб.

Я уже пробовал использовать сценарий bash, чтобы сначала получить субъектов-служб, затем войти в Azure CLI (и я вижу ответ, что я успешно вошел в систему с правильным идентификатором подписки), а затем, когда я пытаюсь выполнить команду удаления, Меня спрашивают

This operation will delete the manifest 'sha256:531d60fe70137820c7f9e589' and all the following images: 'sampleImage:1.0.0'.
Are you sure you want to continue? (y/n): y

и когда я нажимаю y, я получаю: Ошибка: требуется аутентификация. ID корреляции: ****

Вот код:

CLIENT_ID = ****
CLIENT_SECRET = ****
TENANT_ID = ****

az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET -t $TENANT_ID

REGISTRY_NAME="acrregistryname"

az acr login --name $REGISTRY_NAME

# Delete image from ACR
az acr repository delete --name $REGISTRY_NAME --image sampleImage:1.0.0

Что мне здесь не хватает?

ожидается: удалить изображение успешно

актуально: требуется аутентификация


person Aleksandar    schedule 26.08.2019    source источник


Ответы (2)


Для вашего требования, на самом деле, есть три условия, на которые нужно обратить внимание.

  1. Удалите репозиторий. Для выполнения этого требования вам просто нужна AcrDelete роль ACR.

  2. Удалите изображение по тегу. Для этого требования вам необходимо иметь как минимум два разрешения ACR: Access Resource Manager (аналогично роли чтения) и AcrDelete. Таким образом, подходящей ролью с наименьшими разрешениями является роль Contributor, с более высокими привилегиями - Владелец. Но роль безопасности - Contributor, и это тоже рекомендуется.

  3. Удалите изображение по дайджесту манифеста. Для этого требования это та же ситуация, что и для 2.

Итак, наконец, если вы хотите удалить весь репозиторий, вам понадобится AcrDelete роль ACR. Если вы хотите удалить некоторые данные из репозитория, вам понадобится Contributor роль ACR.

Когда с ролью все в порядке. Все шаги приведены ниже:

CLIENT_ID = ****
CLIENT_SECRET = ****
TENANT_ID = ****
REGISTRY_NAME="acrregistryname"

az login --service-principal -u $CLIENT_ID -p $CLIENT_SECRET --tenant $TENANT_ID
az acr login -n $REGISTRY_NAME

Вы можете выбрать нужный шаг ниже.

# delete the whole repository
az acr repository delete -n $REGISTRY_NAME --repository repository_name
# delete the image by the tag
az acr repository delete -n $REGISTRY_NAME --image imageName:tag
# delete the image by manifest digest
az acr repository delete -n $REGISTRY_NAME --image imageName@xxxxxxxx
person Charles Xu    schedule 27.08.2019
comment
Спасибо, проблема с ролью. У него не было роли AcrDelete. Пометить этот ответ как решение. - person Aleksandar; 27.08.2019

Какие разрешения есть у вашего субъекта-службы? Обратите внимание, что для этого потребуется владелец, участник или AcrDelete.

https://docs.microsoft.com/en-us/azure/container-registry/container-registry-roles

person Nathan Anderson    schedule 26.08.2019