Роль Azure RBAC ConfigureFactoryRepo должна быть предоставлена в течение всей подписки субъекту службы Terraform для развертывания фабрики данных.
У меня есть субъект-служба Terraform Enterprise, которому в моей группе ресурсов назначены следующие роли:
- Автор
- Участник фабрики данных
- ConfigureFactoryRepoAction
- Присоединяющийся к сети
- Сетевой интерфейс для присоединения к подсети
- Читатель (назначается по Подписке)
Однако, когда я пытаюсь развернуть экземпляр фабрики данных Azure, я получаю следующую ошибку
«Ошибка: настройка репозитория для фабрики данных: (Заводское имя« test-vc-1 »/ ResourceGroup« $NAME_OF_RESOURCE_GROUP »): datafactory.FactoriesClient#ConfigureFactoryRepo: Ошибка ответа на запрос: StatusCode =403 - Исходная ошибка: autorest / azure: Служба вернула ошибку. Status =403 Code="AuthorizationFailed" Message="У клиента 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' с идентификатором объекта 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' нет авторизации для выполнения действия. 'Microsoft.DataFactory / locations / configureFactoryRepo / action' over scope '/subscriptions / xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' или область недопустима. Если доступ был предоставлен недавно, обновите свои учетные данные.
Я думаю, ключевая линия здесь
выполнить действие 'Microsoft.DataFactory / locations / configureFactoryRepo / action' over scope '/subscriptions / xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' или область недопустима
Роль ConfigureFactoryActionRepo требуется на уровне подписки, а не на уровне группы ресурсов. Есть ли способ подготовить фабрику данных без необходимости назначать эту роль в подписке? Зачем нужен такой широкий размах?
PS Я использую Terraform v0.14.7
2 ответа
API Azure и исходный код Terraform. Чтобы добавить репозиторий git, Terraform использует следующий вызов rest:
Настройте заводской репозиторий:
Этот запрос требует от читателей большего, чем просто права подписки. При использовании следующего вызова отдыха требуются только разрешения для группы ресурсов. Это также вызов, который использует портал фабрики данных: Фабрики - Настроить репозиторий фабрики - API REST (фабрика данных Azure) | Документы Microsoft
Создание или обновление фабрики:
Если у вас есть соответствующие права в группе ресурсов, вам не потребуется доступ участника к подписке для добавления конфигурации git. Фабрики - создание или обновление - REST API (фабрика данных Azure) | Документы Microsoft
Альтернативой является добавление настраиваемой роли: для действия «Microsoft.DataFactory / locations / configureFactoryRepo / action» необходимо было создать настраиваемую роль и передать ее субъекту-службе. Роли участника было недостаточно для создания репозитория кода фабрики данных Azure с помощью Terraform azurerm.
Ссылка: Обсуждение GitHub
Пользовательская роль, по моему опыту, не работает, потому что это действие можно применить только к подписке. Я пробовал в RG, самой фабрике данных, но безрезультатно. Мне всегда приходилось применять роль к service_principal в подписке, чтобы заставить ее применяться.