App Engine Flex 的默认 VPC 防火墙规则是什么

dmi*_*ryb 5 google-app-engine app-engine-flexible

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

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

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

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

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

gvo*_*gvo 5

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

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

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

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

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

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