0

语境

  • 可从 Internet 访问的 Azure 函数(想想公共 API)。
  • Function 应用程序托管在Elastic Premium计划中。
  • Azure 管理的 PostgreSQL 实例(GP计划)。

目标

使 PostgreSQL 实例仅可供函数应用程序访问,同时保持函数应用程序可从 Internet 访问。

我试过的

  1. 创建 VNet 和启用服务终结点的子网。
  2. 将 VNet 规则添加到 PostgreSQL 实例,仅保护来自该子网的访问。
  3. 将函数应用与 VNet 集成。

这应该足以限制对数据库的访问,但它具有无法从 Internet 访问 Function App 的副作用。我相信 AppInsights 也无法访问 Function App(进入Unable to open a connection to your app. This may be due to any network security groups or IP restriction rules that you have placed on your app.监视器)。

在 AWS 世界中,我将 Lambda 和数据库实例放在私有子网中,并为 Lambda 的 Internet 访问添加一个 NAT 网关。经过广泛的研究,我无法弄清楚如何使用 Azure 实现这一目标。

如果有替代方法,请告诉我!

4

2 回答 2

0

由于 Microsoft 支持的帮助,该问题已得到解决。看来问题不在于函数应用程序和互联网之间的链接。正如 Nancy 在她的回答中正确提到的那样,将 Function App 集成到 VNet 不会限制对 FA 的公共访问。

就我而言,问题是函数应用程序与其存储帐户之间缺少链接——因此 FA 无法从存储中加载函数和配置。在子网上启用Microsoft.Storage服务端点解决了这个问题。奇怪的是官方教程没有提到这一点。

使用 Azure 门户,可以通过 VNet 页面->Subnets ->your subnet ->Service Endpoints ->Enable添加服务端点Microsoft.Storage

于 2020-11-10T17:45:10.803 回答
0

默认情况下, Azure 函数应用的集成 VNet不能限制公共访问。对于 AppInsights 无法访问 Function App 的错误信息,您可以Azure monitor在与集成子网关联的 NSG 的入站规则中添加服务标签。

于 2020-11-10T09:57:09.847 回答