Роль Azure RBAC ConfigureFactoryRepo должна быть предоставлена ​​в течение всей подписки субъекту службы Terraform для развертывания фабрики данных.

У меня есть субъект-служба Terraform Enterprise, которому в моей группе ресурсов назначены следующие роли:

  1. Автор
  2. Участник фабрики данных
  3. ConfigureFactoryRepoAction
  4. Присоединяющийся к сети
  5. Сетевой интерфейс для присоединения к подсети
  6. Читатель (назначается по Подписке)

Однако, когда я пытаюсь развернуть экземпляр фабрики данных 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 в подписке, чтобы заставить ее применяться.

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