You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已设use_msi=true,Terraform Azurerm后端仍尝试密钥认证访问Blob存储

问题诊断与解决方案

核心原因

Terraform 0.12内置的azurerm后端存在设计局限:即便启用了MSI认证,它仍会默认尝试调用storageAccounts/listKeys接口获取存储账户密钥,再通过密钥访问Blob存储。而你的存储账户已禁用密钥认证,因此触发403权限错误。

解决方案

方案1:升级Terraform版本(推荐)

Terraform 0.13及以上版本的azurerm后端新增了use_azuread_auth参数,启用后会直接通过Azure AD身份(包括MSI)访问Blob存储,不再依赖存储账户密钥。

修改后端配置示例:

terraform {
  backend "azurerm" {
    resource_group_name  = "your-resource-group"
    storage_account_name = "your-storage-account"
    container_name       = "tfstate"
    key                  = "terraform.tfstate"
    use_msi              = true
    use_azuread_auth     = true # 新增此参数
  }
}

完成配置修改后重新执行terraform init即可。

方案2:临时授权MSI访问密钥(不推荐)

若无法升级Terraform版本,需为MSI分配存储账户密钥操作员服务角色,使其有权限调用storageAccounts/listKeys接口。此方法会绕开你设置的"阻止共享密钥授权"策略,仅作为临时过渡方案。


内容的提问来源于stack exchange,提问作者Saketh Kollu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:05:00