是否可以在GCP中使用具有防火墙的完全托管服务(Cloud Run或App Engine)?

时间:2019-11-09 20:28:32

标签: google-app-engine google-cloud-platform cloud google-cloud-run google-cloud-armor

问题。我正在寻找一种敏捷的方式来将Docker容器(存储在GCR.IO上)拍摄到GCP上的托管服务:

  • 一个带有私有数据(例如Cloud SQL后端)的docker容器gcr.io/project/helloworld-无法面对现实世界。
  • 我想将其公开给一堆IP:说[“ 1.2.3.4”,“ 2.3.4.0/24”]。

我的理想平台是Cloud Run,但GAE也可以运行。

我想以敏捷的方式进行开发(例如使用2-3行代码进行部署),是否可以秘密地运行我的服务,而且超级容易?我们不是在谈论一个巨大的生产项目,我们是在谈论并编写您想通过互联网安全地与一些朋友共享的POC,以确保世界其他地区获得403。

到目前为止我已经尝试过。

唯一容易实现的想法是带有docker友好型OS(例如cos)的GCE vm,我可以在其中设置防火墙规则。这可行,但是在一次性VM上是一个la脚的docker应用。机器将永远运行并在重新启动时死亡,除非我将其稳定在cron / startup上。看起来我在做别人的工作。

到目前为止,我尝试过的所有其他操作都失败了:

  • 云运行。令人惊讶的是,但是无法在其上设置防火墙规则,或者Cloud Director,..似乎只能与设置起来很麻烦的IAP一起使用。
  • GAE 。可使用多个IP,并且不能分离公共IP或对其进行防火墙。我设法在应用程序内获得了 IP过滤,但似乎有点冒险。我[不想]相信我的编码技能:)
  • Cloud Armor 。仅支持我没有的HTTPS负载均衡器。我也没有要指出的MIG。我想要简单。
  • Traffic Director ,并且需要HTTP L7平衡器。但我在单个Pod上有一个Docker容器。为什么我需要LB?
  • GKE。实际上,这似乎可行:[1],但是没有完全管理(我需要创建集群,pod等)。

这是产品缺陷还是我看错了产品?实现我想要的最简单的方法是什么?

[1] how do I add a firewall rule to a gke service?

2 个答案:

答案 0 :(得分:3)

请将您的问题限制为一项服务。并非每个人都是所有Google Cloud服务的专家。如果每个服务都是单独的问题,您将更有可能获得良好的答案。

总而言之,如果您想使用Google Cloud Security组来控制基于IP的访问,则需要使用在Compute Engine上运行的服务,因为安全组是VPC功能集的一部分。 App Engine Standard和Cloud Run不在项目的VPC中运行。这样就可以使用App Engine Flex,Compute Engine和Kubernetes。

我会更改策略并使用通过身份验证管理的Google Cloud Run。访问由Google Cloud IAM通过OAuth令牌控制。

Cloud Run Authentication Overview

答案 1 :(得分:0)

我同意约翰·汉利(John Hanley)的答复,并且我对他的回答进行了投票。

此外,我了解到您正在寻找如何限制通过GCP访问服务的方式。

通过设置防火墙规则,可以通过将“源IP”范围限制为“允许的源”来限制对服务的访问,以便仅将此地址作为源IP。

请查看服务器故障[1]中的另一个线程,并说明如何“仅限制对单个IP的访问”。

https://serverfault.com/questions/901364/restrict-access-to-single-ip-only