【问题标题】:What are default VPC firewall rules for App Engine FlexApp Engine Flex 的默认 VPC 防火墙规则是什么
【发布时间】:2017-11-17 10:22:47
【问题描述】:

我在一个 App Engine 柔性环境项目中部署了一些服务。服务实例在其app.yaml 文件中指定的同一 VPC 网络(非默认)中运行,并从同一子网分配 IP 地址。默认情况下,这两个服务都可以从外部访问,我想配置防火墙规则,只保留允许传入流量的默认服务。

因此,作为第一步,我将配置一条规则以拒绝此 VPC 中所有实例的所有入口,其想法是创建另一个具有更高优先级的规则,以仅允许流量流向运行默认服务的一个实例。
问题是,当我创建优先级为 1001 的防火墙规则来阻止所有传入流量时,我的默认服务仍然会收到请求。但如果我指定优先级 1000 或以下,则流量被阻止,我得到 502 服务器错误。

问题当然是为什么? VPC 文档指出,所有手动创建的 VPC 网络只有两个默认防火墙规则:

  • 默认的“允许出口”规则。
    允许所有出口连接。规则的优先级为 65535。
  • 默认的“拒绝进入”规则。
    拒绝所有入口连接。规则的优先级为 65535

那么为什么我的 1001 优先级规则未能阻止入口,而具有 1000 级(或更低)优先级的完全相同的规则按预期工作? Flex 实例是否有任何其他默认防火墙规则,或者我在这里遗漏了什么?

【问题讨论】:

  • 有两种防火墙可以发挥作用:适用于 Compute Engine 实例的 GCP 防火墙(柔性环境实例属于其中),以及影响标准环境和柔性环境的 App Engine 防火墙。 HTTP(第 7 层)级别而不是第 3 层 TCP 级别。
  • 对。 App Engine 的默认防火墙规则允许所有入口并具有优先级 2147483647。那么这些防火墙是如何协同工作的呢?简单地说,我的主要问题是为什么优先级为 1001 的拒绝所有入口规则不会阻止 AE Flex 实例的传入 http,但优先级为 1000 及以下的相同规则会阻止。这种行为是无证的,看起来很奇怪。
  • 嗨,你解决了这个问题吗?我们正在尝试在我们的默认网络上执行相同的操作,但似乎所有流量都由应用引擎防火墙管理。
  • 谢谢,您的问题帮助我们解决了这个问题。如果你能找到这方面的文档,请告诉我

标签: google-app-engine app-engine-flexible


【解决方案1】:

据我了解,两个防火墙都必须允许流量才能让请求到达您的 App Engine。如果任何人有充分的理由阻止该请求,则该请求将被阻止。

您可以通过查看响应代码知道哪个防火墙正在阻止:

  • A 502 -> VPC 防火墙
  • A 403 -> App Engine 防火墙

如果启用了日志,您可以知道 VPC 防火墙上的哪个规则导致了拒绝。

关于“1000 对 1001 优先”规则,这是一种非常奇怪(且未记录)的行为。因此,让我们在这里为可能偶然发现它的人们记录一下:

VPC 网络上针对灵活 App Engine 实例的规则似乎 仅当优先级低于 1000 时才起作用。

【讨论】:

  • 您知道防火墙之间的交互方式吗?似乎我不能在 VPC 防火墙中“允许”特定 IP,因为在它通过 App Engine 防火墙后,它使用了一些负载平衡器,所以我无法区分请求来自哪个 IP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
相关资源
最近更新 更多