首页 > 解决方案 > 使用虚拟网络从 Azure 应用服务访问 Blob 存储的防火墙

问题描述

最初我尝试使用 IP 地址限制从应用服务对 blob 存储的访问,但结果证明您只能使用虚拟网络执行此操作:从 Azure 应用服务到 blob 存储的防火墙访问

我希望能够在不设置点到站点 VPN 的情况下实现这一目标。我在 Azure 中设置虚拟网络的步骤如下:

我不得不将 Azure 诊断和日志(例如密钥保管库、服务总线和 sql azure)移动到它自己的 blob 存储中,因为这些需要在虚拟网络之外进行 blob 存储,并且无法在其中工作。该应用程序服务在标准计划中。应用服务、blob 存储和虚拟网络都在同一个区域中。

这个问题和答案没有提供任何见解:https ://social.msdn.microsoft.com/Forums/azure/en-US/9f4d8aeb-68a6-4ec1-9e11-bee2d1301792/allow-access-to-azure-storage-仅来自应用程序服务的帐户?forum=windowsazurewebsitespreview

上述步骤虽然阻止了应用服务对 blob 存储的访问,但其中的任何资产都会返回错误:(403) Forbidden。如果我从 blob 存储中删除虚拟网络,它工作正常。我究竟做错了什么?

标签: azureazure-web-app-serviceazure-storage

解决方案


是的,您可以使用 VNet 执行此操作,但您需要在具有App Service Environments的 VNet 中部署 Web 应用程序。您无法通过VNet 集成来做到这一点。将 Azure 服务集成到 Azure 虚拟网络可实现从虚拟机或虚拟网络中的计算资源对服务的专用访问。但是,常规应用服务计划中的 Web 应用服务是多租户的。使用 ASE,您可以将其部署到您的 VNet 中。

您可以从这个类似的线程中获得更多详细信息和解释。根据silent 的评论,您还可以考虑将您的Web 应用程序部署在一个容器中,该容器可以部署在有一些限制的VNet 中。

更新

有时,网络的部署顺序很重要。在您的情况下,您在 VNet 集成之前启用服务终结点。我建议删除集成应用程序子网 VNet 中的 NSG 限制以进行测试。然后您可以检查以下步骤。

首先,您可以使用未使用的子网部署新的 VNet 集成。完成 VNet 集成并重新启动 Web 应用程序后,您可以为此子网启用服务终结点和子网委派。最后,您可以在存储帐户的防火墙中添加子网。

新版本是预览版,目前不是 GA。可能并非所有功能都可用。您还可以检查以下特征。

  • 使用新的 VNet 集成功能不需要网关。</li>
  • 除了与 ExpressRoute 连接的 VNet 集成之外,您无需任何其他配置即可跨 ExpressRoute 连接访问资源。
  • 应用程序和 VNet 必须位于同一区域。
  • 新功能需要在您的资源管理器 VNet 中有一个未使用的子网
  • 你的应用必须位于能够扩展到高级 v2 的 Azure 应用服务部署中。
  • 您的应用服务计划必须是标准、高级或 PremiumV2 计划新功能不支持生产工作负载,而它处于预览状态
  • 新的 VNet 集成功能不适用于应用服务环境中的应用。
  • 您无法删除具有集成应用程序的 VNet。
  • 新的 VNet 集成尚不提供路由表和全局对等互连。
  • 每个应用服务计划实例使用一个地址。由于分配后无法更改子网大小,因此请使用可以超过最大规模大小的子网。建议使用具有 32 个地址的 /27 大小,因为它可以容纳扩展到 20 个实例的应用服务计划。
  • 您可以使用新的 VNet 集成功能使用受服务端点保护的资源。为此,请在用于 VNet 集成的子网上启用服务终结点。

推荐阅读