0

我有一个 Terraform Enterprise 服务主体,它通过我的资源组分配了以下角色:

  1. 贡献者
  2. 数据工厂贡献者
  3. ConfigureFactoryRepoAction
  4. 网络连接器
  5. 子网连接器的网络接口
  6. 读者(通过订阅分配)

但是,当我尝试启动 Azure Datafactory 的实例时,我收到以下错误

“错误:为数据工厂配置存储库:(工厂名称“test-vc-1”/资源组“$NAME_OF_RESOURCE_GROUP”):datafactory.FactoriesClient#ConfigureFactoryRepo:未能响应请求:StatusCode=403 - 原始错误:autorest/azure:服务返回错误。Status=403 Code="AuthorizationFailed" Message="The client 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' with object id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' 没有权限执行操作'Microsoft.DataFactory/locations/configureFactoryRepo/action' 超出范围 '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' 或范围无效。如果最近授予访问权限,请刷新您的凭据。

我想这里的关键是

在范围“/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”上执行操作“Microsoft.DataFactory/locations/configureFactoryRepo/action”或范围无效

订阅级别而不是资源组级别需要角色 ConfigureFactoryActionRepo。无论如何都可以配置数据工厂而无需在订阅中分配此角色?为什么需要如此广泛的范围?

PS 我正在使用 Terraform v0.14.7

4

1 回答 1

1

Azure API 和 Terraform 源代码。要添加 git 存储库,Terraform 使用以下 rest 调用:

配置工厂仓库:

此请求需要的不仅仅是读者的订阅权。使用以下 rest 调用时,只需要对资源组的权限。这也是数据工厂门户使用的调用:工厂 -配置工厂仓库 - REST API (Azure 数据工厂) | 微软文档

工厂创建或升级:

当您对资源组拥有足够的权限时,您不需要订阅者的访问权限来添加 git 配置。工厂 -创建或更新- REST API(Azure 数据工厂)| 微软文档

替代方法是添加自定义角色:对于操作“Microsoft.DataFactory/locations/configureFactoryRepo/action”,必须创建自定义角色并将其提供给服务主体。参与者角色不足以使用 Terraform azurerm 构建 Azure 数据工厂代码存储库。

参考:GitHub 讨论

于 2021-08-18T08:00:04.087 回答