我们的设置包括 - 一个主 VPC,其中我们有使用私有 IP 创建的计算引擎和 Postgres 数据库。让我们将其称为main-network
, - 保管库部署在其自己的 VPC 中,可通过负载均衡器访问(根据最佳实践(。让我们将其称为vault-network
.
在main-network
计算实例能够访问使用专用 IP 作为创建的数据库的数据库,其中在创建时以main-network
作为父网络创建数据库。查看各种 VPC 详细信息,似乎创建过程会自动创建私有服务访问,如文档中所述。
问题 - 对于保管库数据库机密引擎,保管库需要能够访问数据库以动态生成密钥。 我尝试在main-network
和vault-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,这不一定是坏的,因为防火墙会阻止对它的公共访问。
感谢大家的建议。