![](/img/trans.png)
[英]Azure Storage Account firewall AnonymousIpAuthorizationError
[英]Azure storage account firewall rule prevents terraform deployment with azure devops
我想使用 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 处理存储帐户防火墙规则?
对于 Terraform,我建议运行自己的代理池。 生产环境的代理池应与非生产环境分开,并应位于不同的 vNet 中。 然后将网络规则添加到您的存储帐户以允许从代理池子网进行访问。 当您使用服务端点时,大多数服务也会发生同样的情况。
//编辑:
查看创建 Terraform 管道的一些新的最佳实践。
您可以利用数据源在申请时动态检查您的代理 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
或东西像这样
就像@a4c74356b41 所说的,您必须按照此处所述将我所在地区的代理的所有 ip 范围列入白名单。
不幸的是,大约有 160 个 ip 范围(您必须删除所有大于.../29
范围)+我自己的,但至少现在它可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.