簡體   English   中英

Azure 存儲帳戶防火牆規則阻止使用 azure devops 進行 terraform 部署

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM