Google App Engine 通过内部网络与 Compute Engine 通信
Posted
技术标签:
【中文标题】Google App Engine 通过内部网络与 Compute Engine 通信【英文标题】:Google App Engine communicate with Compute Engine over internal network 【发布时间】:2013-10-09 22:49:22 【问题描述】:我们正在谷歌云中构建一个应用程序。我们使用 App Engine 作为前端,使用 Compute Engine 作为后端。在这些 Compute Engine 实例上,我正在运行一个接受某些“命令”消息的 TCP 服务器。 Compute Engine 实例还通过防火墙和负载平衡器连接到 Internet,以处理传入的 https 流量。我想将 TCP 服务器绑定到本地 IP 地址,并且只允许 App Engine 实例(它们在同一个项目中)通过socket api 连接到 TCP“命令”端口。
目前我们将传入连接限制为Google Ip's only
Compute Engine documentation 如下:
每个实例都是单个网络的成员。网络执行与路由器在家庭网络中相同的功能:它描述网络范围和网关 IP 地址,处理实例之间的通信,并充当实例和网络外调用者之间的网关。网络仅限于单个项目;它不能跨越项目。即使在同一个项目中,不同网络中的实例之间的任何通信都必须通过外部 IP 地址进行。在 API 中,网络由 Network 对象表示。
是否有可能建立一个安全的通信设置?也许使用 App Engine 后端实例?
【问题讨论】:
【参考方案1】:借助 App Engine Flexible,您可以设置 instance_tags 并使用它来创建具有适当标记规则的防火墙规则。请参阅https://cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml 了解更多信息。
【讨论】:
我为 App Engine Flexible 应用添加了 instance_tag。我添加了一条防火墙规则。源标签是 instance_tag,我为 GCE 实例设置了目标标签。但是我无法访问 GCE 实例。有没有我错过的过程? GCE 实例位于内部负载均衡器下。 您不再局限于使用新 VPC 连接器功能的灵活环境。【参考方案2】:目前没有办法在 GCE 和 GAE 之间设置专用网络。限制谷歌的 IP 范围并不安全,因为 GAE 或 GCE 上的任何人都可以连接到您的服务器。因此,我建议您在 TCP 服务器上对传入连接进行身份验证,以验证该连接来自您的 GAE 实例。
【讨论】:
我确实计划添加它。我也在寻找网络层安全性。不仅仅是应用程序。但我认为你是对的,现在这是我唯一能做的。 我可以在访问托管虚拟机后立即执行此操作吗?因为据我了解,AE 和我的计算引擎应用程序位于同一台机器上。我现在可以通过 localhost 通话了吗? 这个答案今天仍然有效吗? '__')?我打算使用 GAE 和 CGE (aerospike) 这个答案对于新发布的 VPC 连接器不再准确。 @IMTheNachoMan: tornadoweb.org/en/stable 这是python中的异步网络服务器。从那时起,我们也从 tornado 转移到 asyncio 和 aiohttp【参考方案3】:截至目前2016年作为谷歌云已经推出谷歌云柔性环境appengine/docs/flexible/。所以是的,现在是可能的,因为现在应用引擎和计算引擎都存在于同一个网络中,因此使用应用引擎,您可以使用它们的内部 IP 访问计算引擎,如果您只删除计算引擎的所有外部防火墙规则,请记住想要允许从应用引擎访问。
【讨论】:
VPC 连接器现在是正确的方法,不受您在哪个环境中运行的限制。【参考方案4】:从April 9, 2019 开始,您可以使用serverless VPC connector 允许您的 App Engine 应用程序连接到 Google Cloud Platform 上的其他服务。我链接到 Python 标准环境文档,但这适用于任一运行时环境中 App Engine 上的任何语言。
【讨论】:
这可以用于 Google Apps 脚本项目吗?以上是关于Google App Engine 通过内部网络与 Compute Engine 通信的主要内容,如果未能解决你的问题,请参考以下文章
连接 Google App Engine 和 Google Compute Engine
有没有办法在 Google App Engine 中部署面向内部的应用程序?
将 Google 回合制多人游戏与 Google App Engine 集成
Google App Engine 静态文件服务与应用程序冲突