【发布时间】:2021-09-30 23:46:24
【问题描述】:
在 Google Cloud 中,我有一个应用程序部署在 Kubernetes 中的一个项目中(称为 Project-A),另一个部署在 App Engine 中(称为 Project-B)。 Project-A 有一个使用自动 IP 创建的云 NAT。 Project-B 使用 App Engine 标准。
Project-B 默认情况下允许来自互联网的入口流量。但是,我只希望 Project-A 与 Project-B 进行通信。需要阻止所有其他流量。
我目前没有配置任何共享 VPC。
在 Project-B 中,我使用以下拒绝规则配置 App Engine 防火墙规则(以下列表按 App Engine 防火墙中定义的防火墙规则优先级顺序显示):
0.0.0.1/32
0.0.0.2/31
0.0.0.4/30
0.0.0.8/29
0.0.0.16/28
0.0.0.32/27
0.0.0.64/26
0.0.0.128/25
0.0.1.0/24
0.0.2.0/23
0.0.4.0/22
0.0.8.0/21
0.0.16.0/20
0.0.32.0/19
0.0.64.0/18
0.0.128.0/17
0.1.0.0/16
0.2.0.0/15
0.4.0.0/14
0.8.0.0/13
0.16.0.0/12
0.32.0.0/11
0.64.0.0/10
0.128.0.0/9
1.0.0.0/8
2.0.0.0/7
4.0.0.0/6
8.0.0.0/5
16.0.0.0/4
32.0.0.0/3
64.0.0.0/2
128.0.0.0/1
default rule: allow *
(上面的 CIDR 块对应 0.0.0.1 - 255.255.255.255;我使用https://www.ipaddressguide.com/cidr 为我执行计算)。
从 Project-A,我仍然能够到达 Project-B。谷歌是否有某种绕过 App Engine 防火墙的内部网络路由?在这种情况下,Google 似乎正在使用默认规则并忽略我的所有其他规则。
然后我做了相反的事情。上面所有这些 CIDR 块的规则都更改为 ALLOW,而所有 IP 的最后一个默认规则更改为 DENY。然后我得到了相反的行为 - Project-A 无法到达 Project-B。同样,看起来只使用了默认规则。
如何实现只有 Project-A 可以与 Project-B 通信,不允许 Internet 入口流量到达 Project-B 的情况?我可以避免使用共享 VPC 吗?如果我确实使用了共享 VPC,那么 Project-B 的 App Engine 防火墙规则应该是什么?
【问题讨论】:
-
我做了更多的研究,似乎如果我删除了所有 App Engine 防火墙规则并且只有这个:1.允许 0.0.0.0,2.默认拒绝:*,那么我需要的行为工作中。因此,似乎 Project-A 和 Project-B 之间的路由使得 Project-A 似乎起源于 0.0.0.0(当然是 /32)。我认为更好的解决方案是在 Project-B 中使用面向外部的负载均衡器(以一些延迟为代价)。
-
您能否确认您是否正在继续使用负载均衡器解决方案,或者您对此还有其他顾虑吗?
-
我已经开始实施负载平衡器解决方案。效果很好。
-
您能否在答案部分发布解决方案,以便对社区有所帮助。
标签: google-app-engine google-cloud-platform google-kubernetes-engine