无法从Azure资源连接到Azure数据库的PostgreSQL服务器

10
我无法使用pgcli从Azure资源(AKS节点)连接到Azure postgres。我也尝试直接从节点连接,但是得到了同样的错误信息:
“致命错误:不允许来自Azure Virtual Networks的客户端访问服务器。 请确保您的Virtual Network已正确配置。”
资源中的防火墙规则已开启:
“允许访问Azure服务:开启”
在我的计算机和另一个Azure资源上运行相同的pgcli登录命令似乎可以正常工作。
向所有IP添加防火墙规则返回相同的错误。
从有问题的服务器(主机:5432)进行Curl操作会返回响应,因此这不是出站问题。
3个回答

6

这个错误是什么意思?

连接发起的VM部署在启用了Microsoft.Sql服务终结点的虚拟网络子网中。根据文档

如果在子网中启用了 Microsoft.Sql,则表示您只想使用 VNet 规则进行连接。该子网中资源的非 VNet 防火墙规则将无法工作。

要使连接成功,必须在PostgreSQL端添加一个VNet规则。当问题被提出时,Azure Database for PostgreSQL的VNet服务终结点刚刚进入公共预览阶段,因此我认为OP可能无法使用它。

解决方案

截至2020年11月,Postgres的服务终结点已经推出,并且可以向PostgreSQL服务器实例添加缺失的VNet规则并引用启用服务终结点的子网,而无需禁用服务终结点。这可以通过PortalAzure CLI完成。


在 Azure 门户 UI 中,我没有链接手册中显示的选项。我只能添加一个 IP 范围... - Roman Plášil

4

显然,虚拟机是VNet的一部分,该VNet启用了服务终结点标记Microsoft.sql。

我找到了答案。为了解决问题,我禁用了服务终结点,并将公共IP添加到连接安全性部分。


1
如果问题已经解决,请接受您自己的答案。这将把它从未回答的问题列表中移除。 - ewramner
这不是解决此问题的正确方法。相反,如此答案中所述,正确的方法是在“连接安全性”->“VNET规则”下添加一个VNet规则。服务终结点不应被禁用——使用它进行安全连接是最佳实践。通过公共互联网进行路由应该是最后的选择。诚然,文档可能需要更清晰明了。我已经向Azure提交了这个问题:https://github.com/MicrosoftDocs/azure-docs/issues/87056 - GuyPaddock

2

我遇到了同样的问题。 我所做的只是将允许访问 Azure 服务切换为 开启。

enter image description here


4
Azure门户中提到了这一点,但还值得重申。请注意,将“允许访问Azure服务”设置为“开启”会允许来自所有Azure订阅的网络访问,而不仅仅是您自己的订阅。 - Max Ivanov
问题中不是已经提到了“允许访问Azure服务”已经是“开启”的吗? - payne
1
不是解决此问题的正确方法。相反,如此答案中所述,正确的方法是在“连接安全性”->“VNET规则”下添加VNet规则。或者,OP可以关闭VNet中的服务端点,然后使用“允许访问Azure服务”选项,但这并不太安全。 - GuyPaddock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接