Google Cloud - 无法从一个 VPC 网络中访问另一个 VPC 网络中的私有 CloudSQL 数据库



我们的设置包括 - 一个主 VPC,其中我们有使用私有 IP 创建的计算引擎和 Postgres 数据库。让我们将其称为main-network, - 保管库部署在其自己的 VPC 中,可通过负载均衡器访问(根据最佳实践(。让我们将其称为vault-network.

main-network计算实例能够访问使用专用 IP 作为创建的数据库的数据库,其中在创建时以main-network作为父网络创建数据库。查看各种 VPC 详细信息,似乎创建过程会自动创建私有服务访问,如文档中所述。

问题 - 对于保管库数据库机密引擎,保管库需要能够访问数据库以动态生成密钥。 我尝试在main-networkvault-network之间创建 VPC 网络对等,并验证(通过 netcat(我是否可以从vault-network中的机器成功访问main-network中的机器。

但是,我无法从vault-network中的节点访问数据库实例。

是否可以与对等 VPC 网络共享对私有服务的访问权限?

我不想公开数据库,除非这是唯一的方法。

由于您的云 SQL 不在您的 VPC 中,但在云 SQL 和您的 VPC 之间执行 VPC 对等,因此您无法通过对等访问另一个 VPC 网络。正如 John 所说,它被命名为传递性,并在 VPC 对等限制中进行了描述

只有直接对等网络才能通信。不支持可传递对等互连。也就是说,如果VPC网络N1与N2和N3对等,但N2和N3未直接连接,则VPC网络N2无法通过VPC网络对等与VPC网络N3通信。

遗憾的是,您无法按照 John 的建议在 Cloud SQL 和另一个项目的 VPC 网络(您的保险库网络(之间创建对等互连。我只看到 2 种解决方案可以解决这个问题

  • 设置仅转发流量的传递槽 VM。微型虚拟机就足够了,但您必须维护它,照顾高可用性,(...
  • 在 2 个项目中设置共享 VPC。将云 SQL 私有 IP 设置到共享 VPC 子网中。

我联系了我们帐户的Google支持人员,并向他们询问了此问题,他们确认不可能具有可传递的VPC对等

互连

VPC 对等连接不是可传递的,在 VPC 网络之间使用 VPC 对等互连无法实现此方案:

Cloud SQL <[VPC Peering]> VPC">

主网络"<[VPC Peering]> VPC"vault-network"。

创建共享 VPC 首先违背了创建单独网络的目的,因为它会使保管库节点在共享 VPC 中直接访问。

谷歌的人建议创建一个VPN:

作为一种解决方法,您可以在 VPC 网络"主网络"和"保险库网络"之间创建 VPN:

Cloud SQL <[VPC Peering]> VPC">

主网络"<[Cloud VPN]> VPC"vault-network"。

我需要一些时间来思考我们是否要走这条路。

目前,我已在数据库实例的settings.ip_configuration.authorized_networks配置中将保管库群集的 NAT IP 列入白名单,以授予对保管库网络的访问权限。 这样做的缺点是数据库现在有一个公共IP,这不一定是坏的,因为防火墙会阻止对它的公共访问。

感谢大家的建议。

最新更新