Azure存储帐户防火墙规则阻止使用Azure DevOps进行Terraform部署

pvcm50d1  于 2023-06-24  发布在  其他
关注(0)|答案(3)|浏览(199)

我想使用Azure DevOps管道部署我的terraform基础设施,但我遇到了存储帐户防火墙的问题。下面是一个存储帐户的示例:

resource "azurerm_storage_account" "storage_account" {
  name                              = "mystorageaccount"
  resource_group_name               = "myresourcegroup"
...
  network_rules {
      default_action             = "Deny"
      bypass                     = ["AzureServices", "Logging"]
      ip_rules                   = ["192.1.1.1"]
  }
}

存储帐户的初始创建是成功的,但由于防火墙规则的原因,所有进一步的操作(例如添加容器)都会失败,并出现未授权的异常。
不幸的是,为“AzureServices”添加绕过规则并不起作用。
我必须添加防火墙规则的原因是因为公司的安全准则,所以我不能直接删除它。
是否有一种方法可以使用Azure Devops处理存储帐户防火墙规则?

lxkprmvk

lxkprmvk1#

对于Terraform,我建议运行自己的代理池。生产环境的代理池应与非生产环境分开,并应位于单独的vNet中。然后向存储帐户添加网络规则,以允许从代理池子网进行访问。当您使用服务终结点时,大多数服务也会发生同样的情况。
//编辑:
检查some fresh best practices以创建Terraform管道。

o2rvlv0m

o2rvlv0m2#

您可以利用数据源在应用时动态检查代理IP。其结果如下所示:

data "http" "myip" {
  url = "https://ipv4.icanhazip.com"
}

resource "azurerm_storage_account_network_rules" "sample" {
  resource_group_name  = azurerm_resource_group.rg.name
  storage_account_name = zurerm_storage_account.storage.name

  default_action             = "Deny"
  virtual_network_subnet_ids = [azurerm_subnet.subnet.id]
  bypass                     = ["AzureServices", "Logging", "Metrics"]
  ip_rules = [chomp(data.http.myip.body)]
}

然后,您需要确保您已经删除了IP,为此,我通常使用Remove-AzStorageAccountNetworkRule或类似于以下内容

qvsjd97n

qvsjd97n3#

就像@a4c74356b41说,你必须将我所在地区代理商的所有IP范围列入白名单,如此处所述。
不幸的是大约有160个ip范围(你必须删除所有大于.../29的范围)+我自己的,但至少它现在工作。

相关问题