Azure WebJob vNet集成

时间:2018-12-21 12:39:22

标签: azure azure-webjobs

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

  

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

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

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

我在App Service上尝试了“正常”(带有网关)和新的(预览)vNet集成版本,但都失败了。

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

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

Storage firewall exceptions

2 个答案:

答案 0 :(得分:0)

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

如果要将应用程序服务放在VNet中,则需要将其部署在App Service Environment中,那么该服务已经在VNet中。

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

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

答案 1 :(得分:0)

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

首先,如果您使用防火墙限制对存储的访问,则需要将 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 问题。