Azure devops 如何将内容部署到启用了IP限制的Azure存储中的静态网站?

Azure devops 如何将内容部署到启用了IP限制的Azure存储中的静态网站?,azure-devops,azure-storage,Azure Devops,Azure Storage,当我将内容部署到启用了IP限制的Azure存储中的静态网站时,我的发布管道(Azure DevOps)中出现错误 Error parsing destination location "https://MYSITE.blob.core.windows.net/$web": Failed to validate destination. The remote server returned an error: (403) Forbidden. 在我将IP限制添加到存储帐户以保持内容的私密性之前,

当我将内容部署到启用了IP限制的Azure存储中的静态网站时,我的发布管道(Azure DevOps)中出现错误

Error parsing destination location "https://MYSITE.blob.core.windows.net/$web": Failed to validate destination. The remote server returned an error: (403) Forbidden.
在我将IP限制添加到存储帐户以保持内容的私密性之前,该版本运行良好。今天,我们使用IP限制来控制访问。很快,我们将取消有利于vpn和VNET的IP限制。然而,我的期望是,我会有同样的问题

我的假设是Azure DevOps无法访问存储帐户,因为它未在IP地址列表中列出。我的发布管道使用AzureBlob文件复制任务

steps:
- task: AzureFileCopy@2
  displayName: 'AzureBlob File Copy'
  inputs:
    SourcePath: '$(System.DefaultWorkingDirectory)/_XXXXX/_site'
    azureSubscription: 'XXXX'
    Destination: AzureBlob
    storage: XXXX
    ContainerName: '$web'
  • 我已经启用了“受信任的Microsoft服务”,但还没有启用 救命啊
  • 将Azure DevOps的IP地址列入白名单并不是一个好的选择,因为有很多IP地址,而且它们会定期更改
  • 我看到了一些建议,建议删除IP限制,并在发布步骤后重新启用它们。这是有风险的,因为如果在删除IP限制后出现故障,我的站点将可以公开访问

我希望有人有其他想法!谢谢。

您可以添加一个步骤将代理IP地址列入白名单,然后在部署结束时将其从白名单中删除。您可以通过对以下内容进行REST调用来获取IP地址


我已经在类似的场景中这样做了,而且效果很好。

我建议使用不同的方法:使用静态IP和/或在专用VNet内运行Azure DevOps代理

为什么我认为这是一个更好的选择:

  • 审核日志将填充规则的添加和删除,以便在发生攻击时更难进行分析
  • Azure连接必须比需要的更强大,特别是要更改安全组、防火墙、应用程序网关或其他方面的规则,而它只需要部署权限
  • 它暂时从外部打开流量,而私有代理始终需要从内部启动

  • 没有完美的解决方案,因此为您的特定场景选择最佳解决方案非常重要。

    谢谢。这是一个有趣的想法。我可以通过一个管道步骤来获取代理的IP地址(我们目前使用的是托管代理),然后通过一个步骤将IP列入白名单,然后执行其他正常的管道操作。然后在最后,清除新的白名单条目。对于应该内置的东西来说,这似乎需要做很多工作。但我认为它可以工作,谢谢。但仍在寻找更多想法。@Schwammy这是我找到的最好的方法。托管代理不是受信任的服务,因此没有内置选项可以神奇地使其工作。不需要,也就是说,在专用网络中使用DevOps代理,您只需管理来自上述VNET的流量异常,这也与您对静态网站存储的受控访问密切相关。我们目前使用的是托管代理,而不是运行专用VNET,因此这在今天是不可能的。然而,我们现在正在建立VNET,因此我们可能会转向这种方法。我还需要设置一个代理,因为我们目前正在使用托管代理。我不希望这样做,这是另一件长期管理的事情,但在这种情况下,它可能会非常有帮助。谢谢你的建议!