Почему «az webapp up» нуждается в доступе для чтения ко всем службам приложений в подписке?

#azure #permissions #azure-web-app-service #azure-cli

Вопрос:

У нас есть ряд служб приложений, каждая из которых развернута в отдельных группах ресурсов, специфичных для пользователей. Каждый пользователь не имеет широких разрешений, но является полноправным участником этой отдельной группы ресурсов и может просматривать и изменять эти ресурсы через портал. Однако, когда пользователь обновляет приложение и пытается его развернуть az webapp up , мы видим сообщение об ошибке:

 Webapp '<name>' already exists. The command will deploy contents to the 
existing app.
(BadGateway) Response from service 'Microsoft.Web' does not contain sufficient information to enforce access control policy.
 

Выполнение команды с --debug показывает, что конечная точка, возвращающая 502 с этим сообщением, является:
GET /subscriptions/<subscription_id>/providers/Microsoft.Web/sites?api-version=2020-09-01

Я попытался запустить команду с различными комбинациями параметров --name , --ids , --plan amp; --resource-group в надежде, что указание всех деталей позволит Azure пропустить проверку того, какие другие службы существуют, но безуспешно.

Как следует из ошибки, предоставление каждому пользователю Microsoft.Web/sites/read разрешения по подписке решает проблему, но это также означает, что все эти пользователи могут видеть имена всех других служб приложений, не входящих в их компетенцию, например, посетив страницу «Все ресурсы». Применение разрешения явно поверх роли Участника, но только для группы ресурсов, не помогает.

Итак, вопросы:

  1. Почему Azure необходимо прочитать все службы приложений вашей подписки, чтобы развернуть существующую именованную службу?
  2. Есть ли какой-либо способ обойти это и разрешить этим пользователям развертываться az webapp up без видимости служб приложений других пользователей?

Ответ №1:

(BadGateway) Response from service 'Microsoft.Web' does not contain sufficient information to enforce access control policy.

Из приведенного выше сообщения об ошибке Microsoft.Web ресурсы означает «Служба приложений» или «Функциональное приложение».

Итак, проверьте, доступен ли ваш сервис приложений через портал или нет.

az webapp up Команда должна выполняться из папки, в которой присутствует код, который вы хотите развернуть.

az webapp up команде не требуется доступ для чтения ко всем службам приложений в подписке, и роли участника достаточно для управления ресурсами.

Комментарии:

1. Соответствующий сервис приложений доступен напрямую через портал и через az resource list , но az webapp up (или, например az webapp list ) оба не работают из-за отсутствия разрешений. Я могу запустить az webapp list --resource-group <my_resource_group> так, чтобы это успешно ограничивалось моим RG, но az webapp up --resource-group <rg> --name <name> все равно вижу эту ошибку, несмотря на признание того, что служба приложений уже существует

2. Только что обнаружил, что az webapp up --resource-group <rg> --sku <sku> это работает, поэтому он может создавать новое приложение, просто не обновляя существующее