我尝试从Datastream连接到我的Cloud SQL PostgreSQL数据库(以将数据获取到BigQuery)。我使用的是公共IP,由于它设置为需要可信客户端证书,因此我的理解是我需要使用Forward-SSH隧道作为Datastream的连接方法(如果我错了,请纠正我)。
根据本指南,应该可以使用数据库服务器来终止SSH隧道。它没有详细说明如何执行,只是“* 允许网络流量通过SSH到达隧道服务器或数据库主机,通常在TCP端口22* 上”。
我无法连接,并得到错误“* 我们无法连接到数据源。请验证连接配置文件中的Forward SSH tunnel配置是否正确,以及SSH tunnel服务器上的端口是否打开。*”
我在数据库上创建了一个连接测试,确认端口22不可访问。
我如何才能让它工作?是否需要在数据库端进行任何设置?我如何允许端口22上的流量?或者我应该使用不同的端口?
感谢任何帮助这一点!
1条答案
按热度按时间n3ipq98p1#
Cloud SQL Postgres最近(在过去的几周里)更新了其“需要SSL”设置,使其更具可配置性。在过去,指定“仅允许SSL连接”会强制成功的连接使用mTLS和客户端证书。现在的设置更加灵活和精细。
x1c 0d1x的数据
我建议大多数情况下用户选择
Allow only SSL connections
,这将强制成功的连接加密流量并使用SSL(但不强制mTLS +客户端证书)。此设置将允许用户使用IP Allowlist Connectivity Option进行数据流,并能够沿着使用Datastream Getting Started Quickstart,同时仍然强制加密连接。对于确实需要管理客户端证书和要求mTLS的额外开销的用户,他们可以通过在其Cloud SQL示例的管理SSL设置中选择
Require trusted client certificates
来添加此开销。在这种情况下,比是的,就像你提到的,你将需要使用SSH隧道数据流连接选项。
我的理解是,由于您的源数据库是具有公共IP的Cloud SQL Postgres示例,因此您必须配置隧道服务器(GCE VM),并且无法直接使用数据库服务器。原因是Cloud SQL是托管服务,数据库服务器位于受保护的“Cloud SQL”网络上。您需要创建一个计算引擎VM作为隧道/ssh服务器,您可以在更细粒度的级别上控制TCP防火墙和端口转发规则。使用数据库服务器作为主机来终止隧道对于源数据库是自托管Postgres数据库的用例来说更是如此。