如何使用 Google Cloud SQL 第二代按主机过滤 App Engine 连接? (第 2 次)

Posted

技术标签:

【中文标题】如何使用 Google Cloud SQL 第二代按主机过滤 App Engine 连接? (第 2 次)【英文标题】:How to filter App Engine connections by host with Google Cloud SQL Second Generation? (2nd) 【发布时间】:2016-12-19 07:44:59 【问题描述】:

Google App Engine 似乎通过 Cloud SQL 代理在内部自动通过隧道连接到 Cloud SQL 第二代。这是在尝试理清如何使用 TLS 时无意中发现的,未成功:"TLS requested but server does not support TLS" error with Google Cloud SQL (2nd generation) from Google App Engine?

我注意到这可以在不允许对 Cloud SQL 实例进行全局不安全访问的情况下工作......这很好。但是,我们只能过滤接受的主机名来连接到cloudsqlproxy~% 而不是localhost,这几乎允许任何“cloudsqlproxy”主机使用正确的凭据进行连接。

这样做是否安全且正确,并且比使用%... 显然会绕过任何类型的主机过滤更好?或者,这是否会打开任何 cloudsqlproxy 与我们的第二代实例的可能连接?

目标是将 SQL 实例上特定用户帐户的连接限制为仅来自我们的 App Engine 项目。没有其他东西可以连接这些凭据。

【问题讨论】:

【参考方案1】:

问得好,您说得对,使用 cloudsqlproxy-% 是您现在可以申请 App Engine 连接的最严格过滤,不幸的是,这意味着您不能有效地说“允许来自 App Engine 的连接,但不允许来自 Cloud SQL 代理的连接”。

由于 App Engine Flex 虚拟机存在于客户项目中,因此很难想出一种解决方案来保持 App Engine Standard 和 App Engine Flexible 之间的一致性。如果该限制仅适用于 App Engine Standard,而不适用于 App Engine flex,则可能会有些混乱。

您可以通过限制项目的编辑(和所有者)来限制谁可以使用 Cloud SQL 代理,从而在一定程度上限制曝光,因为使用 Cloud SQL 代理连接的帐户必须具有编辑权限或更高权限。未来,这将在 IAM 支持下变得更加精细。

【讨论】:

那么如果除了项目本身和我之外没有项目的编辑/所有者,那么没有其他人可以通过 Cloud SQL Proxy 连接? 没错。代理连接通过让客户端连接到 Cloud SQL API 并请求临时 SSL 证书来工作。除非调用者是项目的编辑者或所有者,否则 API 不会授予证书。

以上是关于如何使用 Google Cloud SQL 第二代按主机过滤 App Engine 连接? (第 2 次)的主要内容,如果未能解决你的问题,请参考以下文章

来自应用引擎的 google cloud sql 允许的最大并发连接数

Google Cloud SQL 很慢:10GB RAM 的 mysql 实例比配置 125MB ram 的 Macbook Pro 慢 20 倍

第二代微服务网关组件 - Spring Cloud Gateway

TensorFlow机器学习:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

在本地使用 cloud_sql_proxy 获取 notAuthorized 错误

如何从 Cloud Functions 连接 Google Cloud SQL?