5

我目前正在与一个需要访问所有 Azure 资源的客户一起工作,该客户需要尽可能地锁定所有 Azure 资源,并且我在使用我们的 Azure Functions 使用的存储帐户时遇到了问题。

将门户中的防火墙和虚拟网络刀片设置为“所有网络”后,我可以部署到 Function App 并且它可以毫无问题地运行。

在此处输入图像描述

但是,一旦我通过选中“选定网络”启用访问限制,无论我输入什么虚拟网络子网或 IP 地址,我都无法使通信正常工作

在此处输入图像描述

我已经输入了基于消费的函数应用程序的出站 IP 地址,并检查了 Powershell 中的其他 IP 地址是否都已添加到白名单中。我还添加了本地 Azure 数据中心的所有 CIDR IP 范围,但它再次不起作用。

我们遇到的问题是,一旦设置了访问限制,我们就无法部署到 Function App 并且该应用程序不再运行。是否支持这种情况,以及限制对存储帐户的访问的机制是什么,以便只有功能应用程序可以使用它。

4

1 回答 1

6

据我所知,您有两个选项可以限制从函数应用或 Web 应用访问您的存储帐户。

  1. 在存储帐户的防火墙中将函数应用的outboundIpAddresses和列入白名单。但是,如果位于同一区域的 Azure 函数应用和 Azure 存储引用Sam 的答案possibleOutboundIpAddresses,则它不起作用。

当您从函数中点击存储帐户时,因为它们彼此位于同一区域,所有流量都通过内部 IP 上的内部 Azure 网络,而不是 Web 应用程序中列出的公共 IP,因此不允许通过防火墙。

  1. 如果您的资源位于不同的区域,您可以使用函数应用的网络部分来允许函数应用访问 VNet 中的资源,然后Microsoft.Storage在此应用集成子网中启用服务终结点。但是您需要参考本教程的 Azure Functions Premium 计划:将 Functions 与 Azure 虚拟网络集成。

有时,网络的部署顺序很重要。在这种情况下,您将部署以下内容:

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

请注意,新版本目前处于预览状态。您还可以检查这些特征并从此线程中获得更多参考。

于 2019-05-22T08:27:20.273 回答