跨VNet(跨区域)连接Azure PostgreSQL弹性服务器最佳实践及权限问题
问题描述
已部署带身份验证的Azure Database for PostgreSQL 弹性服务器,可从本地环境连接该数据库;同时管理着另一VNet中的应用及VM,也能从本地正常连接。需遵循最佳实践连接这两个跨区域VNet,使其中一个VNet的应用能够访问另一VNet中的源数据库。
权限限制说明
尝试为托管远程数据库的VNet添加对等连接时,系统要求拥有该VNet的访问权限,但当前仅拥有PostgreSQL层面的数据库访问权限,不具备对应VNet的管理权限。
解决方案(无需跨VNet权限的最佳实践)
因为没有目标VNet的管理权限,没法直接配置VNet对等,推荐以下几种符合Azure最佳实践的方案:
1. 使用Azure Private Link(推荐)
- 为Azure PostgreSQL弹性服务器创建专用终结点,将其部署到你的应用所在的VNet中
- 应用VNet内的资源可直接通过专用终结点访问PostgreSQL,无需配置VNet对等,也不需要目标VNet的权限
- 注意:需确保PostgreSQL服务器所在订阅已启用专用链接,且你有PostgreSQL服务器的管理权限(你已具备)来创建专用终结点
2. 请求VNet管理员配置VPN网关
- 如果团队中有目标VNet的管理员,可请求他们配置跨区域VNet到VNet VPN网关,连接两个VNet
- 你仅需要在PostgreSQL服务器的防火墙规则中,添加应用VNet的地址范围即可
- 该方式适合多资源需要跨VNet访问的场景,无需你操作目标VNet
3. 临时方案:跳转VM中转
- 在应用VNet部署一台跳转VM,通过Azure Bastion连接到这台VM
- 在跳转VM上配置PostgreSQL客户端,让应用通过这台VM访问目标VNet的PostgreSQL服务器
- 此为临时应急方案,不推荐长期使用
连接验证
配置完成后,可在应用VNet的VM上执行以下命令测试连接:
psql "host=<PostgreSQL地址> port=5432 dbname=<数据库名> user=<用户名> password=<密码> sslmode=require"
内容的提问来源于stack exchange,提问作者itsavy
相关产品推荐
相关产品推荐

