[英]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.