我们正在谷歌云中构建应用程序。我们使用App Engine作为前端,使用Compute Engine作为后端。在这些Compute Engine实例上,我正在运行一个接受某些“命令”消息的TCP服务器。计算引擎实例还连接到防火墙后面的互联网和负载均衡器,用于传入https流量。我想将TCP服务器绑定到本地IP地址,并且只允许App Engine实例(它们在同一个项目中)通过socket api连接到TCP“命令”端口。
现在我们将传入的连接限制为Google Ip's only
Compute Engine documentation以下是:
每个实例都是单个网络的成员。网络执行的功能与路由器在家庭网络中执行的功能相同:它描述网络范围和网关IP地址,处理实例之间的通信,并充当网络外实例和呼叫者之间的网关。网络仅限于单个项目;它无法跨越项目。不同网络中的实例之间的任何通信,即使在同一项目中,也必须通过外部IP地址。在API中,网络由网络对象表示。
是否可以构建安全的通信设置?也许是App Engine后端实例?
答案 0 :(得分:7)
使用App Engine Flexible,您可以设置instance_tags并使用它来创建具有相应标记规则的防火墙规则。有关详细信息,请参阅https://cloud.google.com/appengine/docs/flexible/custom-runtimes/configuring-your-app-with-app-yaml。
答案 1 :(得分:6)
目前没有办法在GCE和GAE之间设置专用网络。限制到谷歌的IP范围是不安全的,因为GAE或GCE上的任何人都可以连接到您的服务器。因此,我建议您验证TCP服务器上的传入连接,以验证连接是否来自GAE实例。
答案 2 :(得分:4)
截至2016年,谷歌云推出了谷歌云灵活环境appengine/docs/flexible/。所以现在是可能的,因为现在app引擎和计算引擎都存在于同一个网络中,因此使用app引擎你可以使用它们的内部Ip访问计算引擎,还记得删除你的计算引擎的所有外部防火墙规则想要允许从应用引擎访问。
答案 3 :(得分:0)
从April 9, 2019开始,您可以使用serverless VPC connector来允许您的App Engine应用程序连接到Google Cloud Platform上的其他服务。我链接到Python标准环境文档,但这适用于任一运行时环境中App Engine上的任何语言。