0

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

这是我的想法:

  • 创建服务主体(应用注册)。
  • 在 azure 容器实例中部署 terraform 脚本
  • 将“贡献者”角色分配给我的订阅服务主体 (x)
  • 当我想在此订阅中创建资源时,使用环境变量配置 terraform 脚本以选择正确的凭据。
$ export ARM_SUBSCRIPTION_ID=159f2485-xxxx-xxxx-xxxx-xxxxxxxxxxxx     # Client subscription
$ export ARM_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx           # client_id of the service principal
$ export ARM_CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
$ export ARM_TENANT_ID=72f988bf-xxxx-xxxx-xxxx-xxxxxxxxxxxx           # the same tenant for all clients

这个对吗?

使用 terraform cloud 时,您是否有更安全的方式对多个订阅进行身份验证?(理想情况下没有client_secret)

4

1 回答 1

1

如果容器实例可以运行 Terraform 脚本,那么步骤没有问题。您授予服务主体权限并更改ARM_SUBSCRIPTION_ID不同订阅的环境变量,然后 Terraform 脚本适用于不同的订阅。

一种更安全的方法是使用Azure CLI 进行身份验证。如果您使用 CLI 命令设置不同的订阅:

az account set --subscription="SUBSCRIPTION_ID"

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

于 2021-04-16T06:27:19.087 回答