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

Ric*_*rdo 5 cloud google-app-engine google-cloud-platform google-cloud-armor google-cloud-run

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

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

我的理想平台是 Cloud Run,但 GAE 也能工作。

我想以敏捷的方式进行开发(比如用 2-3 行代码部署),是否可以秘密地运行我的服务,但又超级容易?我们不是在谈论一个巨大的生产项目,而是在谈论玩弄和编写一个 POC,你想通过互联网安全地分享给几个朋友,确保世界其他地方得到 403。

到目前为止我尝试过的。

唯一容易工作的想法是带有 docker-friendly 操作系统(如 cos)的 GCE vm,我可以在其中设置防火墙规则。这有效,但它是一次性 VM 上的一个蹩脚的 docker 应用程序。除非我在 cron/startup 上稳定它,否则机器将永远运行并在重新启动时死亡。看起来我在做别人的工作。

到目前为止我尝试过的其他一切都失败了:

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

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

[1]如何为 gke 服务添加防火墙规则?

Joh*_*ley 5

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

总之,如果您想使用 Google Cloud 安全组来控制基于 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 身份验证概述