使用 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 您在 Terraformazurerm
提供程序中设置的订阅 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 图表