【问题标题】:Azure RBAC role 'ConfigureFactoryRepo' is required to be granted over the entire subscription to Terraform Service Principal to spin up Data FactoryAzure RBAC 角色“ConfigureFactoryRepo”需要被授予对 Terraform 服务主体的整个订阅才能启动数据工厂
【发布时间】:2021-10-15 06:00:06
【问题描述】:

我有一个 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' 没有授权在范围“/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”上执行操作“Microsoft.DataFactory/locations/configureFactoryRepo/action”或范围无效。如果最近授予访问权限,请刷新您的凭据。

我猜这里的关键是

对范围“/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”执行操作“Microsoft.DataFactory/locations/configureFactoryRepo/action”,否则范围无效

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

附:我正在使用 Terraform v0.14.7

【问题讨论】:

    标签: azure terraform azure-data-factory azure-rbac terraform-enterprise


    【解决方案1】:

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

    配置工厂仓库:

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

    工厂创建或升级:

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

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

    参考:GitHub Discussion

    【讨论】:

    • 感谢您的回答:)
    • 谢谢@vamsichivukula 是否可以将其标记为已回答。
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2021-07-15
    • 2020-03-07
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    相关资源
    最近更新 更多