#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
разрешения по подписке решает проблему, но это также означает, что все эти пользователи могут видеть имена всех других служб приложений, не входящих в их компетенцию, например, посетив страницу «Все ресурсы». Применение разрешения явно поверх роли Участника, но только для группы ресурсов, не помогает.
Итак, вопросы:
- Почему Azure необходимо прочитать все службы приложений вашей подписки, чтобы развернуть существующую именованную службу?
- Есть ли какой-либо способ обойти это и разрешить этим пользователям развертываться
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>
это работает, поэтому он может создавать новое приложение, просто не обновляя существующее