使用多个服务主体的Terraform身份验证多订阅

使用多个服务主体的Terraform身份验证多订阅,terraform,terraform-provider-azure,azure-managed-identity,terraform-cloud,Terraform,Terraform Provider Azure,Azure Managed Identity,Terraform Cloud,我希望我的terraform脚本能够使用多个服务主体对多个azure订阅进行身份验证 以下是我的想法: 创建服务主体(应用程序注册) 在azure容器实例中部署terraform脚本 在订阅中将“参与者”角色赋予我的服务主体(x) 使用环境变量配置terraform脚本,以便在我希望在此订阅中创建资源时选择正确的凭据 这是正确的吗 在使用terraform cloud时,是否有更安全的方法对多个订阅进行身份验证?(理想情况下没有客户机机密)如果容器实例可以运行Terraform脚本,那么步骤

我希望我的terraform脚本能够使用多个服务主体对多个azure订阅进行身份验证

以下是我的想法:

  • 创建服务主体(应用程序注册)
  • 在azure容器实例中部署terraform脚本
  • 在订阅中将“参与者”角色赋予我的服务主体(x)
  • 使用环境变量配置terraform脚本,以便在我希望在此订阅中创建资源时选择正确的凭据
这是正确的吗


在使用terraform cloud时,是否有更安全的方法对多个订阅进行身份验证?(理想情况下没有客户机机密)

如果容器实例可以运行Terraform脚本,那么步骤就没有问题。您向服务主体授予权限,并为不同的订阅更改环境变量
ARM\u SUBSCRIPTION\u ID
,然后Terraform脚本为不同的订阅工作

一个更安全的方法是使用。如果使用CLI命令设置不同的订阅:

az account set --subscription="SUBSCRIPTION_ID"

然后,Terraform脚本也将适用于不同的订阅。这样,您就不需要将secret设置为环境变量。

这个问题有什么更新吗?它解决了你的问题吗?这个命令将在terraform容器中执行(在我的Azure订阅中),但TF脚本将在terraform云上执行,因此,我认为运行TF的服务器必然会要求客户机_secret在不同的服务器上进行身份验证subscriptions@admin你看到我在答案中提供的变量了吗?您可以使用多个具有不同订阅id的提供程序。请尝试使用。@管理员有关于此问题的更新吗?它解决了您的问题吗?抱歉,我正在等待创建第二个订阅来测试它。我会尽快让你知道的。
az account set --subscription="SUBSCRIPTION_ID"