【问题标题】:Azure WebJob vNet integrationAzure WebJob vNet 集成
【发布时间】:2018-12-21 12:39:22
【问题描述】:

我无法在 Azure 应用服务/WebJob 与其连接的存储帐户之间进行 vNet 集成以正常工作。我已将应用服务和存储帐户添加到同一个 vNet 并为 Microsoft.Storage 启用服务终结点绑定。从我在文档中看到的内容来看,这是使服务之间的通信正常工作所需要的。不幸的是,当我尝试运行它时,我在 WebJob 日志中收到此错误:

“未处理的异常:Microsoft.WindowsAzure.Storage.StorageException: 远程服务器返回错误:(403) Forbidden。 ---> System.Net.WebException:远程服务器返回错误:(403) 禁止。”

如果我禁用存储帐户上的防火墙,一切正常。

所有服务都放在同一个资源组和区域(西欧)中。

我在应用服务上尝试了“普通”(带网关)和新的(预览版)vNet 集成版本,但都以同样的方式失败。

我没有使用 ASE(应用服务环境)。

我还在存储防火墙上​​添加了以下例外:

Storage firewall exceptions

【问题讨论】:

  • 您是否在使用 ASE 并且是否已将您的应用服务 IP 列入存储防火墙的白名单?
  • 我没有使用 ASE。
  • 而且我还没有将存储防火墙中的任何 IP 列入白名单。这两个服务都在同一个 vNet 中,并且 Microsoft.Storage 端点已启用。根据文档应该足够了。

标签: azure azure-webjobs


【解决方案1】:

首先,当您允许trusted Microsoft services 的集合绕过网络规则时。然后,这些服务将使用强身份验证来访问存储帐户。 在这种情况下,您可能认为 Microsoft.Networking 服务将在防火墙规则中被允许。但基本上,VNet Integration 并不意味着应用服务位于 VNet 中。 VNet 集成使您的 Web 应用程序可以访问虚拟网络中的资源,但不会授予您从虚拟网络对 Web 应用程序的专用访问权限。我们通常用于安全访问 VNet 中的资源。

如果您想将应用服务放入 VNet,则需要将其部署在 App Service Environment 中,然后它已经在 VNet 中。

或者,您可以在存储帐户的防火墙规则中将outbound web app service IP address 列入白名单。

希望对您有所帮助,如果您有任何疑问,请随时告诉我。

【讨论】:

  • 好的,感谢您的支持。但将出站地址列入白名单无济于事。因为当应用服务和存储帐户在同一个数据中心时,应用服务使用无法列入白名单的私有 IP 与存储帐户通信。愚蠢但真实:-(
  • 为什么是the app service is communication with the storage account using a private IP?同一 VNet 中的资源将使用专用 IP 地址,但 Web 应用服务和存储帐户不使用。您是否尝试将存储帐户防火墙中的 IP 列入白名单?
【解决方案2】:

我一直在这个话题上苦苦挣扎。

首先,如果您使用防火墙限制对存储的访问,则需要将 VNET 添加到存储防火墙。添加 VNET 时使用您的委托子网。

当您在存储和 VNET 之间添加专用链接时,Azure 会创建一个专用 DNS 区域,但您的应用不会自动使用它,即使集成到 VNET 时也是如此。

你可以在这里找到更多https://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet 但具体来说,这段话适用:

在您的应用与您的 VNet 集成后,它使用与您的 VNet 配置相同的 DNS 服务器。默认情况下,你的应用无法使用 Azure DNS 专用区域。若要使用 Azure DNS 专用区域,需要添加以下应用设置: WEBSITE_DNS_SERVER,值为 168.63.129.16 WEBSITE_VNET_ROUTE_ALL 值为 1 这些设置将您的所有出站呼叫从您的应用程序发送到您的 VNet,并使您的应用程序能够访问 Azure DNS 专用区域。通过这些设置,您的应用可以通过在工作人员级别查询 DNS 专用区域来使用 Azure DNS。

您可以通过打开调试控制台并使用 NameResolver 命令来测试您的应用正在使用的 DNS 解析 NameResolver mystorageaccount.blob.core.windows.net 或 NameResolver mystorageaccount.queue.core.windows.net 应该返回您的私人地址。如果不是,您有 DNS 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多