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



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

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

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

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

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

据我所知,两个防火墙都必须允许流量,请求才能到达应用程序引擎。如果任何人有充分的理由阻止该请求,那么该请求就会被阻止。

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

  • A 502->VPC防火墙
  • A 403->应用程序引擎防火墙

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

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

VPC网络上针对灵活应用引擎实例的规则似乎只有当优先级低于1000时才能工作。

最新更新