使用 Google Cloud SQL 数据库时,私有 IP + SSL 或云代理挎斗之间是否有区别?



当尝试评估如何从Google Kubernetes Engine pod连接到Cloud SQL数据库时,有几种方法可以做到这一点。一种是使用挎斗云代理。另一种是使用私有 IP 并在两者之间使用 SSL 连接。两者都有明确的理由吗?还是它们都具有相同的功能?有没有一个被认为是"最佳实践"?

云 SQL 代理挎斗

云 sql 代理挎斗与托管在 Google 基础架构上的代理服务建立 TCP 连接。然后,这会将您连接到 Google 网络上的云 SQL 实例。

优点

  • 建立安全连接,而无需管理应用程序中的加密材料
  • 连接到实例,您无需管理 DNS 记录或 IP 地址

缺点

  • 您必须创建存储服务帐户密钥的机密。
  • 您必须在 Pod 旁边管理一个 sidecar 实例,如果该实例失败,您将无法再连接到您的数据库
  • 由于代理层的层数而增加的延迟

私有 IP + SSL

使用私有 IP 并将实例连接到您的 VPC 允许您使用内部 IP 地址(未公开路由(,并将流量保留在您的 VPC 实例中。最重要的是,设置与数据库的仅SSL连接,以确保流量在点对点之间是安全的。

优点

  • 与数据库的低延迟连接,因为它是点对点连接
  • 管理服务之间的密钥
  • 无需外部依赖项或系统即可在两者之间连接

缺点

  • 您必须在连接内管理 SSL 证书
  • 您必须验证群集中的 IP 和 DNS 记录设置是否正确

我错过了什么吗?这两者确实提供了同样的东西吗?两者之间没有绝对明确的赢家,你可以选择你认为最适合你的风格的一个吗?

最佳做法是使用代理。从安全的角度来看,它们都是不错的选择,但我发现管理自己的SSL密钥的混乱只是我不需要的麻烦。此外,正如John在他的评论中提到的,如果你出于任何原因转移区域或更改IP,你必须改变容器内容,而不仅仅是代理启动上的标志。当然,您可以使用容器上的环境变量来缓解这种情况,但这是另一回事。

代理 IMO 上有一个轻微的安全边缘,因为如果您的密钥被泄露,代理连接生成的临时密钥的寿命比您自己生成的 SSL 密钥短(除非您在 API 中使用临时密钥调用(。因此,如果您的应用程序中发现漏洞,并且密钥遭到入侵,则有一个较小的窗口,任何人都可以对您的数据库执行恶意操作。但是,特别是如果您只使用一个不太重要的 VPC,但仍然大于零。

相关内容

  • 没有找到相关文章

最新更新