Cloud Run 授权 IP 地址 Cloud SQL

问题描述 投票:0回答:1

哈啰!一方面,我在 GCP 中有一个 MySQL 数据库,它有一个公共和一个私有 IP 地址。它与我的默认网络联网,并包含授权网络列表(以防止黑客攻击)。 另一方面,我有一个相当简单的 Google Cloud Run,其中包含 Flask 脚本、Dockerfile 和requirements.txt。在其配置中,它与数据库位于同一 GCP 项目中,由具有“SQL 客户端”访问权限的服务帐户运行,与我的数据库位于同一区域,连接到我的 Google Cloud SQL 实例并连接到无服务器 VPC(其本身位于“默认”网络上)。 在我的 Flask 脚本中,在连接参数中,我定义使用数据库的公共地址。无论如何,这在本地都有效。但是部署完成后,当我启动应用程序时,我在启动时收到错误消息,提示无法连接(IP 地址权限问题)。顺便说一句,如果我尝试将 VPC 的 IP 地址 (10.8.0.16/28) 添加到我的授权数据库网络,我会收到以下消息: 在日志中,我有: 诚然,该日志没有多大意义,所以说实话我真的不知道该怎么办...感谢您的帮助!!

google-cloud-platform google-cloud-sql google-cloud-run
1个回答
0
投票

您面临的问题与使用私有 IP 地址连接到云 SQL 实例时的安全最佳实践有关。这是为什么与公共IP连接不理想以及如何解决它。

虽然通过公共 IP 地址进行连接在本地有效,但它会将您的数据库暴露给整个互联网,从而增加了攻击面,并使其容易受到未经授权的用户的访问。

推荐的无服务器VPC和私有IP方法:

最安全的方法是使用私有 IP 和无服务器虚拟私有云配置您的 Cloud SQL 实例。

确保您的 Cloud Run 服务和 Cloud SQL 实例部署在同一 Virtual Private Cloud (VPC) 网络中。这使它们能够使用秘密 IP 地址相互通信。再次验证是否存在任何 VPC 对等互连。

确认 Cloud Run 服务帐号具有在项目级别(而不仅仅是实例级别)指定的 Cloud SQL 客户端角色,这一点非常重要。

避免将您的 VPC 子网 IP 范围 (10.8.0.16/28) 直接添加到 Cloud SQL 中的授权网络列表中。此方法仅限制对 VPC 子网本身的访问,而不一定限制对您的云运行服务的访问。

验证您的 Flask 脚本是否使用私有 IP 地址而不是公共 IP 地址连接到您的 Cloud SQL 实例。此私有 IP 应在您的 VPC 网络内解析。

请参阅此官方文档了解如何使用私有 IP 了解更多信息。

替代方法(如果无法进行 VPC 对等互连):

按照 Guillaume 的建议,如果网络分段妨碍 VPC 实用,请使用 Cloud SQL 代理。此代理使用公共 IP 地址为您的云 SQL 实例提供安全隧道,同时与您的云运行服务共存。

但是,使用 Cloud SQL 代理会增加额外的复杂性,并且可能需要额外的配置。

© www.soinside.com 2019 - 2024. All rights reserved.