【问题标题】:Azure App Service Deploy returns (403) Forbidden with IP restrictionAzure App Service Deploy 返回 (403) Forbidden with IP 限制
【发布时间】:2019-04-02 14:34:09
【问题描述】:

在 Azure 中,我打开了 IP 限制:

  • Web 应用程序(网络 > 访问限制)
  • SQL 服务器(防火墙和虚拟网络 > 添加客户端 IP)
  • SQL 数据库(设置服务器设置)

该解决方案仍然在本地和 DevOps(又名 Team Foundation Server)中构建。

但是,Azure App Service Deploy 现在失败了:

##[error]Failed to deploy App Service.
##[error]Error Code: ERROR_COULD_NOT_CONNECT_TO_REMOTESVC
More Information: Could not connect to the remote computer 
("MYSITENAME.scm.azurewebsites.net") using the specified process ("Web Management Service") because the server did not respond. Make sure that the process ("Web Management Service") is started on the remote computer.
Error: The remote server returned an error: (403) Forbidden.
Error count: 1.

如何通过防火墙进行部署?

我是否需要虚拟网络来将 Azure 资源隐藏在我的白名单 IP 后面?

【问题讨论】:

  • 您是尝试直接部署(从本地)还是从 DevOps 部署?我假设您的本地 IP 地址包含在您的 IP 白名单中?
  • 首先,检查 DevOps。然后,从 DevOps 自动部署。我的本地 IP 已添加到所有白名单 - 通过 VPN 尝试不同的 IP 确认 IP 限制生效。
  • 对不起,进一步澄清。在这种情况下,DevOps 是您自己的 TFS 服务器(本地)还是 Azure DevOps?
  • 我们使用 Azure DevOps。
  • 我刚刚意识到 SQL Server 设置了 SQL Server 身份验证 - 这是否意味着 SQL Server 实际上不需要防火墙,只需要 Web App?

标签: azure


【解决方案1】:

REST 站点scm.azurewebsites.net 必须有Allow All,即没有限制。另外,Same restrictions as ***.azurewebsites.net 应该是unchecked

它不需要额外的限制,因为 url 访问已经需要 Microsoft 凭据。如果添加限制,部署将使防火墙失效,因此我遇到了许多复杂情况。

【讨论】:

  • +1 - 谢谢 - 我从 Azure 门户的用户界面中无法理解此设置的用途,所以我认为我在检查它时做得对。事实证明,这就是阻止我让我的流程正常工作的原因。
【解决方案2】:

我认为答案不正确,因为您可能会面临数据过滤,这就是 Microsoft 提供锁定 SCM 门户(Kudu 控制台)功能的原因 Kudu 门户还有一个安全问题,因为它可以显示您的密钥库的秘密(如果您使用密钥库),并且您不希望组织中的某个人访问 Kudu 门户。

您必须点击此链接 https://docs.microsoft.com/en-us/azure/devops/organizations/security/allow-list-ip-url?view=azure-devops

它将为您提供您需要在 SCM 访问限制上允许的 Azure DevOPS IP 范围。

更新:要使其按预期工作并使用应用服务访问限制(与 Azure 函数相同),您需要使用服务标签“AzureCloud”而不是 Azure DevOPS IP 范围,因为这还不够。在 Azure Pipeline 日志中,您可以看到 IP 被阻止,因此您可以看到它位于服务标记 JSON 文件中的 ServiceTags“AzureCloud”中 MS Doc 上并不清楚,但原因是他们努力为 Azure DevOPS Pipeline 定义适当的 IP 范围,因此他们使用来自 AzureCloud Service Tag 的 IP。 https://www.microsoft.com/en-us/download/details.aspx?id=56519

【讨论】:

  • 使用 AzureCloud 标签创建单一访问限制的好处是,当 Azure IP 地址发生变化时,您不需要不断更新它,坏处是您允许所有数据中心公共 IP 地址,来自所有地区。根据包含docs.microsoft.com/en-us/azure/devops/organizations/security/… 的链接,理想情况下,您应该为您的 Azure DevOps 组织所在的地理区域中的 AzureCloud IP 创建访问限制。这样会限制您的曝光,但需要不时刷新它。
  • @RobertShattock,我的想法和你一样,但很遗憾你的评论不正确。您提到的链接与他们的 Azure DevOPS 服务服务器(=在 Microsoft 托管)有关,但与 Azure DevOPS Pipeline 本身使用的 VM 无关。正如 Microsoft 文档或论坛中提到的(我忘了在哪里),他们提到 VM 可以从任何 Azure 区域“使用”(只有 VM,而不是 DevOPS Services 服务器本身。这实际上是两种不同的东西)。跨度>
  • 其他想法:如果您想更接近零信任行为,您应该使用 Azure CLI 在管道上添加 2 个任务以临时允许 AzureCloud 然后将其删除(需要检查 Azure CLI 是否支持应用服务的这些 ServiceTags 参数,但我想现在是可能的)
【解决方案3】:

尝试将值为 false 的应用程序设置 WEBSITE_WEBDEPLOY_USE_SCM 添加到您的 Azure 应用服务。这能够解决我部署到私有端点的问题。

【讨论】:

  • 嗯,这个解决方案对我不起作用。我正在将 DevOps 部署到具有专用终结点的应用服务插槽。还有其他想法吗?
【解决方案4】:

在我的情况下,我使用 Azure DevOps 进行部署并收到错误。事实证明,我的 API 被部署到的应用服务,在访问限制或 IP 限制下选中了“与 xxxx.azurewebsites.net 相同的限制”框。您需要允许 scm.azurewebsites.net。

【讨论】:

    【解决方案5】:

    就我而言,这是因为超出了每日配额。

    因此,这种情况下的解决方案是等待或支付更多费用(扩大)应用服务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-21
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2013-07-23
      • 2017-02-14
      • 2012-01-22
      相关资源
      最近更新 更多