【问题标题】:Firewall access from Azure app service to blob storage using Virtual Network使用虚拟网络从 Azure 应用服务访问 Blob 存储的防火墙
【发布时间】:2019-09-30 12:28:06
【问题描述】:

最初我尝试使用 IP 地址限制从应用服务对 blob 存储的访问,但结果证明您只能使用虚拟网络执行此操作:Firewall access from Azure app service to blob storage

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

  • 已创建网络安全组“securitygroup-frontend”,添加自定义 名为 Web 的入站规则,源:服务标签,源服务标签: Internet,源端口范围:*,目标:任意,目标端口 范围:80、443,协议:任何,操作:允许,优先级:100
  • 创建虚拟网络,地址空间为 192.168.0.0/23,子网称为前端地址范围 192.168.0.0/26,网络安全组:securitygroup-frontend 和子网委派到 Microsoft.Web/serverFarms 和服务端点 Microsoft.Storage 李>
  • 转到应用服务 -> 网络 -> 配置 VNet 集成 -> 添加 VNet 预览并选择您创建的子网
  • 进入存储 -> 防火墙和虚拟网络 -> 配置 VNet 集成 -> 选择“选定网络”并添加刚刚创建的虚拟网络和子网。

我不得不将 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-account-only-from-an-app-service?forum=windowsazurewebsitespreview

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

【问题讨论】:

  • 你好@johnstaveley,看来我不能重复你的问题,我可以知道你如何访问你的文件吗?
  • 使用这个命名空间:Microsoft.WindowsAzure.Storage.Blob 和这些对象:CloudBlobClient、CloudBlockBlob、CloudStorageAccount、CloudBlobContainer
  • 我也在使用 .net storage .SDK,但它在我这边工作得很好,不太清楚原因……抱歉

标签: azure azure-web-app-service azure-storage


【解决方案1】:

是的,您可以使用 VNet 执行此操作,但您需要使用 App Service Environments 在 VNet 中部署 Web 应用程序。 VNet integration 无法做到这一点。 Integrating Azure services to an Azure virtual network 允许从虚拟机或虚拟网络中的计算资源对服务进行私有访问。但是,常规应用服务计划中的 Web 应用服务是多租户的。使用 ASE,您可以将其部署到您的 VNet 中。

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

更新

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

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-09-26
  • 2019-05-29
  • 2016-08-23
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
相关资源
最近更新 更多