【问题标题】:az storage account network-rule not working for Microsoft Hosted agent(Azure DevOps)az storage account network-rule 不适用于 Microsoft 托管代理 (Azure DevOps)
【发布时间】:2021-02-14 14:37:51
【问题描述】:

我必须通过 azure 发布管道自动删除 azure blob 存储(特定容器)中的所有文件。所以我配置了一个任务来动态获取 Microsoft 代理的 IP 地址并将 IP 地址添加到 blob 防火墙中。下面的脚本有时会成功运行,但我无法在防火墙列表中看到 IP。

同样的脚本多次失败并抛出类似的错误

该请求可能被存储帐户的网络规则阻止。请 使用 'az storage account show -n accountname 检查网络规则集 --query networkRuleSet'。如果要更改在没有规则匹配时应用的默认操作,请使用 'az 存储帐户更新'。

IP=`curl -s http://ipinfo.io/json | jq -r  '.ip'`


echo "Opening firewall for the IP : $IP"

az storage account network-rule add -g custom-web --account-name   "customwebapp" --ip-address $IP

对此我不确定,任何人都可以建议我实现此目的的最佳方法或通过 Microsoft 托管代理连接 azure blob 的另一种安全方法?

参考文献 https://docs.microsoft.com/en-us/cli/azure/storage/account/network-rule?view=azure-cli-latest

【问题讨论】:

  • 可以参考这个ticket
  • @WalterQian-MSFT - 谢谢 - 我已经检查了该解决方案并在添加网络规则后添加了 sleep 60 秒。但不是运气
  • 我遇到了和你一样的问题,你可以尝试重新运行失败的作业。
  • 是的,我已经暂时这样打补丁了,但是根据持续部署,我们需要找到 RC 并修复。
  • 作为一种解决方法,您可以重新运行失败的作业。您还可以在发布管道的部署后条件中添加自动重新部署触发器。这是Developer community 中的同一张票。请投票并关注这张票。

标签: azure azure-devops firewall azure-blob-storage azure-cli


【解决方案1】:

Microsoft 托管代理和防火墙后的存储帐户之间的通信总是很麻烦,即使上述解决方法是为特定的 Microsoft 托管代理 IP 地址动态打开存储防火墙。这主要是由于存储帐户方面的限制。

1.每个存储帐户最多支持 200 个 IP 网络规则。

因此,我们无法添加从您的任何 ADO 组织地理区域启动的托管代理的整个 IP 范围。如果组织托管在西欧,则托管代理可以来自北欧和西欧。所以没有。应列入白名单的 IP 范围将超过 200 个。

因此,用户可以使用上述解决方法来允许特定的托管代理 IP 地址。但是,以下限制不会使上述解决方法万无一失。当托管代理与您的存储帐户在同一区域中启动时,解决方法不起作用。

2。与存储帐户部署在同一区域的服务使用私有 Azure IP 地址进行通信。
3. IP 网络规则对来自与存储帐户相同的 Azure 区域的请求没有影响

【讨论】:

  • 那么你建议在这种情况下做什么?
  • 在这些情况下推荐使用自托管代理。
【解决方案2】:

解决方法是临时启用公共访问:

az storage account update --resource-group "$ResourceGroupName" --name "$Name" --default-action Allow

完成操作后,您可以再次将其关闭。

【讨论】:

    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 2021-04-14
    • 2021-11-14
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多