使用 Azure 提供程序的 Terraform “AuthorizationFailed”

Posted

技术标签:

【中文标题】使用 Azure 提供程序的 Terraform “AuthorizationFailed”【英文标题】:Terraform "AuthorizationFailed" with Azure provider 【发布时间】:2020-08-31 02:24:14 【问题描述】:

我是 Azure 资源组的所有者,但没有订阅或管理组的权限。 在我的 .tf 文件中配置“azurerm”提供程序时,我添加了订阅 ID 和租户 ID(我不是该订阅的所有者)。

--------- 更新 ---------

我正在尝试使用 Terraform 应用 Linux 虚拟机,但在规划 .tf 文件时遇到了授权问题。

我已经使用 Azure CLI 列出了我的所有帐户(希望在下面的输出中连接第二个订阅):

我已经成功地使用 Azure CLI 和命令对订阅进行身份验证(它有效):

az account set --subscription="SUBSCRIPTION_ID"

这是我的默认和当前订阅:

此外,我还能够使用 Azure CLI 在该订阅的资源组中创建和管理资源。 但是,我在 .tf 文件中添加了准确的租户 ID 和准确的订阅 ID,但在“terraform 计划”期间仍然出现相同的凭据错误。

使用 Azure CLI 或 Azure 门户,我能够在资源组范围内创建和管理资源,尽管使用 terraform 我遇到了问题。

谢谢你:)

【问题讨论】:

确保您登录到正确的订阅:az login --subscription %Subscription_ID% 【参考方案1】:

根据你的故事,你只是在 azure provider 中设置了租户 id 和订阅 id,所以看起来你 authenticate via Azure CLI。无论您有用户帐户还是服务主体,资源组的所有者角色都足以在资源组中创建虚拟机。这样,您需要先登录到 Azure CLI。正如我提供的链接所示。

【讨论】:

我已经点击链接并使用 Azure CLI 对订阅进行了身份验证(有效)。之后,我在 .tf 文件中添加了租户 ID 和订阅 ID,但在“terraform plan”期间仍然出现凭据错误。我已经更新了我打开的问题。 @YuvalPodoksik 您在 Terraform azurerm 提供程序中设置的订阅 ID 应该与您使用 CLI 登录的相同。您可以使用 CLI 命令 az account show 查看正确的订阅 ID。 当然,我明白这一点。 terraform 中的订阅 ID 和租户 ID 与 Azure CLI 中列出的内容匹配。 @YuvalPodoksik 你确定是同一个你有权限吗? 很遗憾,我敢肯定,再次更新了问题。

以上是关于使用 Azure 提供程序的 Terraform “AuthorizationFailed”的主要内容,如果未能解决你的问题,请参考以下文章

Terraform:无法删除已弃用的 hashcorp/azure 提供程序

在 Azure Pipeline 中运行的 Terraform 尝试安装 azcli 提供程序

Azure API 无法识别来自 Terraform 的服务主体

通过 Terraform Helm 提供程序和 Azure DevOps 部署 helm 图表,同时从 ACR 获取 helm 图表

Terraform - 部署到多个 Azure 订阅

在 Terraform 中将 SSL 证书附加到 Azure 应用程序网关