azure-functions - 从公共 Azure 函数到 Azure PostgreSQL 的安全连接
问题描述
语境
- 可从 Internet 访问的 Azure 函数(想想公共 API)。
- Function 应用程序托管在
Elastic Premium
计划中。 - Azure 管理的 PostgreSQL 实例(
GP
计划)。
目标
使 PostgreSQL 实例仅可供函数应用程序访问,同时保持函数应用程序可从 Internet 访问。
我试过的
- 创建 VNet 和启用服务终结点的子网。
- 将 VNet 规则添加到 PostgreSQL 实例,仅保护来自该子网的访问。
- 将函数应用与 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 实现这一目标。
如果有替代方法,请告诉我!
解决方案
由于 Microsoft 支持的帮助,该问题已得到解决。看来问题不在于函数应用程序和互联网之间的链接。正如 Nancy 在她的回答中正确提到的那样,将 Function App 集成到 VNet 不会限制对 FA 的公共访问。
就我而言,问题是函数应用程序与其存储帐户之间缺少链接——因此 FA 无法从存储中加载函数和配置。在子网上启用Microsoft.Storage
服务端点解决了这个问题。奇怪的是官方教程没有提到这一点。
使用 Azure 门户,可以通过 VNet 页面->
Subnets ->
your subnet ->
Service Endpoints ->
Enable添加服务端点Microsoft.Storage
。
推荐阅读
- javascript - 如何过滤数组节点js中2个字段之间的日期
- dtype - 在谷歌 colab 上运行。ERROR = ValueError:张量转换请求 dtype float32_ref 用于 dtype float32 的张量
- html - 从jsp页面创建一个弹出窗口
- qt - 如何使用 C++ 或 Python 在 Qt3D 中创建纹理并将其应用于对象?
- angular - 在 Angular 10 中的 ngOnInit() 之后执行某些逻辑
- c++ - 在 C++ 中解析长字符串的好习惯是什么?
- oracle-apex - 使用 API 进行 PL/SQL 输入验证
- python - 无法将每日情绪评分与每日价格合并
- python - 单击没有使用 selenium 的 id 的提交按钮
- google-chrome - 谷歌浏览器屏幕共享历史