如何使用 Google Cloud SQL 第二代按主机过滤 App Engine 连接? (2)
How to filter App Engine connections by host with Google Cloud SQL Second Generation? (2nd)
Google App Engine 似乎通过 Cloud SQL 代理在内部自动将其连接隧道连接到 Cloud SQL 第二代。这是在整理如何使用TLS时无意中发现的,未成功:
我注意到这在不允许对云 SQL 实例进行全局不安全访问的情况下工作......这很好。但是,我们只能过滤连接到 cloudsqlproxy~%
而不是 localhost
的已接受主机名,这实际上允许任何 "cloudsqlproxy" 主机使用正确的凭据连接。
这样做是否安全且正确,并且比使用 %
... 更好,后者显然会绕过任何类型的主机过滤?或者,这会打开任何 cloudsqlproxy 与我们的第二代实例的可能连接吗?
目标是限制 SQL 实例上特定用户帐户的连接仅来自我们的 App Engine 项目。没有其他东西应该能够连接这些凭据。
好问题,你说得对,使用 cloudsqlproxy-% 是你现在可以申请 App Engine 连接的最严格的过滤,不幸的是,这意味着你不能有效地说 "allow connections from App Engine but not from Cloud SQL Proxy"。
很难想出一个解决方案来保持 App Engine 标准版和 App Engine 灵活版之间的一致性,因为 App Engine Flex VM 存在于客户项目中。如果限制仅适用于 App Engine Standard,而不适用于 App Engine flex,可能会有些混乱。
您可以通过限制谁可以使用 Cloud SQL Proxy 通过限制项目的编辑者(和所有者)来限制曝光,因为使用 Cloud SQL Proxy 连接的帐户必须有编辑器访问或以上。将来,随着 IAM 支持,这将变得更加精细。
Google App Engine 似乎通过 Cloud SQL 代理在内部自动将其连接隧道连接到 Cloud SQL 第二代。这是在整理如何使用TLS时无意中发现的,未成功:
我注意到这在不允许对云 SQL 实例进行全局不安全访问的情况下工作......这很好。但是,我们只能过滤连接到 cloudsqlproxy~%
而不是 localhost
的已接受主机名,这实际上允许任何 "cloudsqlproxy" 主机使用正确的凭据连接。
这样做是否安全且正确,并且比使用 %
... 更好,后者显然会绕过任何类型的主机过滤?或者,这会打开任何 cloudsqlproxy 与我们的第二代实例的可能连接吗?
目标是限制 SQL 实例上特定用户帐户的连接仅来自我们的 App Engine 项目。没有其他东西应该能够连接这些凭据。
好问题,你说得对,使用 cloudsqlproxy-% 是你现在可以申请 App Engine 连接的最严格的过滤,不幸的是,这意味着你不能有效地说 "allow connections from App Engine but not from Cloud SQL Proxy"。
很难想出一个解决方案来保持 App Engine 标准版和 App Engine 灵活版之间的一致性,因为 App Engine Flex VM 存在于客户项目中。如果限制仅适用于 App Engine Standard,而不适用于 App Engine flex,可能会有些混乱。
您可以通过限制谁可以使用 Cloud SQL Proxy 通过限制项目的编辑者(和所有者)来限制曝光,因为使用 Cloud SQL Proxy 连接的帐户必须有编辑器访问或以上。将来,随着 IAM 支持,这将变得更加精细。