(AuthorizationFailed) Ошибка при попытке обновить образ containerApp из Azure Devops

Я использую конвейер devops для обновления containerApp. Конвейер devops использует собственный пул агентов, который использует агент VMSS. в задаче конвейера cli я создаю назначенное системой управляемое удостоверение для containerApp с помощью команд az cli, а на следующем шаге я пытаюсь назначить роль извлечения ACR реестра для containerApp в частном ACR, используя команду ниже

az role assignment create \
          --assignee-object-id $PRINCIPALID \
          --assignee-principal-type ServicePrincipal \  
          --role AcrPull \
          --scope /subscriptions/$(SUBSCRIPTION)/resourceGroups/$(RG_NAME)/providers/Microsoft.ContainerRegistry/registries/$(acrContainerName)

получение этой ошибки в консоли devops:

(AuthorizationFailed) The client '3447a78f-2d20-4a27-abcd-4050272e5946' with object id '3447a78f-2d20-4a27-abcd-4050272e5946' does not have authorization or an ABAC condition not fulfilled to perform action 'Microsoft.Authorization/roleAssignments/write' over scope '/subscriptions/12d3e9402-cddbf-4272-83b5-c479199032d6/resourceGroups/my-infra-rg/providers/Microsoft.ContainerRegistry/registries/abccacrxqkglrt4qana4/providers/Microsoft.Authorization/roleAssignments/7722b8ef0-9418-4093-z230-152e422cc29d' or the scope is invalid

Я могу выполнить эту задачу через свою локальную командную строку, а также у меня есть права администратора доступа пользователя к подписке. Задача файла yaml выглядит следующим образом:

 - task: AzureCLI@2
      inputs:
        azureSubscription: $(armDeploymentServiceConnection)
        scriptType: 'bash'
        scriptLocation: 'inlineScript'

AzureSubscription содержит сервисное соединение ARM, которое я создал в DevOps для подключения к ARM.

Если я ищу идентификатор клиента, показанный в ошибке консоли devops, на портале Azure он не существует, это результат Кто-нибудь может здесь помочь? Спасибо

Имеет ли личность, указанная в armDeploymentServiceConnection, соответствующие разрешения?

Daniel Mann 19.07.2023 18:38

@Daniel Mann, который является субъектом-службой, определенным там, я не могу найти субъект-службу с clientId на портале Azure, поэтому не могу проверить разрешения, но другая команда az containerapp Identity назначается успешно

Coder 19.07.2023 18:59
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка обычно возникает, если у субъекта-службы нет необходимых ролей или разрешений для выполнения действия. Я полагаю, что вы ищете идентификатор в регистрации приложений, а не в корпоративных приложениях.

Чтобы найти этот субъект-службу на портале Azure, скопируйте сообщение об ошибке clientID from и найдите его в корпоративных приложениях.

Перейдите на Портал Azure -> Azure Active Directory -> Корпоративные приложения -> Установите фильтр для всех приложений -> Вставьте скопированный идентификатор в строку поиска:

В вашем случае вам необходимо назначить роль администратора доступа пользователей субъекту-службе в требуемой области (подписка или группа ресурсов).

Обратите внимание, что вы можете искать только Name, чтобы найти субъект-службу для назначения роли.

Если у вас есть несколько субъектов-служб для одного отображаемого имени, вы можете либо переименовать этот субъект-службу, изменив свойства, либо проверить идентификатор при назначении роли.

Переименование субъекта-службы из свойств:

Проверка ID при назначении роли:

Спасибо за ваши подробные шаги. Поскольку в devops для docker и arm создано несколько сервисных подключений, и они имеют одно и то же имя на портале, как я могу узнать, какому субъекту службы дать разрешение на портале, прежде чем получить эту ошибку, которая дает идентификатор объекта?

Coder 20.07.2023 09:26

Другие вопросы по теме