Azure devops Terraform后端无法连接到存储帐户

Azure devops Terraform后端无法连接到存储帐户,azure-devops,terraform,terraform-provider-azure,Azure Devops,Terraform,Terraform Provider Azure,这是我的terraform.tf terraform { backend "azurerm" { resource_group_name = "tstate" storage_account_name = "strorageaccount1" container_name = "terraform.tfstate" access_key = &q

这是我的terraform.tf

terraform {
    backend "azurerm" {
        resource_group_name = "tstate"
        storage_account_name = "strorageaccount1"
        container_name = "terraform.tfstate"
        access_key = "asdfg45454..."
    }
}
当我的存储帐户不在“所有网络”中时,此操作失败。我的存储帐户网络设置如下所示。Blob存储—私有或公共—它可以正常工作,因此没有问题。但必须启用“所有网络”才能使其工作。在禁用“所有网络”的情况下,如何使其工作?我得到的错误如下:

错误:无法获取现有工作区:存储:返回服务 错误:StatusCode=403,ErrorCode=AuthorizationFailure, ErrorMessage=此请求未被授权执行此操作

由于Azure默认代理正在运行devops管道,因此不需要IP或Vnet。SPN在订阅时具有所有者访问权限。我错过了什么


嗯,您明确禁止几乎任何服务(或服务器)访问您的存储帐户。除“”外。但是,您的Azure DevOps构建代理不属于该类别

因此,您需要首先将构建代理列入白名单。有两种方法可以做到这一点:

  • 使用在VNET中运行的自托管代理。然后在存储帐户的防火墙规则中允许从该VNET访问
  • 如果您想继续使用托管生成代理:首先运行AZ CLI或Azure Powershell脚本,这将获取生成代理的公共IP()和。terraform完成后,使用另一个脚本再次删除该IP异常

您明确禁止几乎任何服务(或服务器)访问您的存储帐户。除“”外。但是,您的Azure DevOps构建代理不属于该类别

因此,您需要首先将构建代理列入白名单。有两种方法可以做到这一点:

  • 使用在VNET中运行的自托管代理。然后在存储帐户的防火墙规则中允许从该VNET访问
  • 如果您想继续使用托管生成代理:首先运行AZ CLI或Azure Powershell脚本,这将获取生成代理的公共IP()和。terraform完成后,使用另一个脚本再次删除该IP异常