You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在App Engine标准环境中配置防火墙,实现拒绝所有外部IP且允许项目内部服务互通

解决App Engine标准环境下阻断外部流量、允许内部服务互访的问题

我之前刚好处理过完全一样的需求,其实Google Cloud已经给我们准备好了便捷的配置方式,不用手动去收集复杂的内部IP段,具体操作步骤如下:

1. 先设置默认防火墙规则为拒绝所有外部入站流量

  • 登录Google Cloud控制台,进入VPC网络 > 防火墙页面
  • 找到默认的允许所有入站的规则(通常名称是default-allow-all),点击编辑,将动作改为拒绝后保存;或者你也可以创建一个优先级更高的新规则:动作设为拒绝,目标覆盖所有实例,源IP设为0.0.0.0/0,这样会自动覆盖更低优先级的允许规则。

2. 创建允许内部App Engine服务互访的防火墙规则

接下来要添加一个优先级更高的允许规则,专门放行内部服务之间的流量:

  • 在防火墙页面点击创建防火墙规则
  • 填写基础配置:
    • 名称:比如allow-gae-internal-communication
    • 网络:选择你的App Engine项目对应的VPC(一般选默认网络即可)
    • 优先级:设为比默认拒绝规则更高的等级(数值越小优先级越高,比如设为100)
  • 核心配置部分:
    • 方向入站动作允许
    • 目标:选择指定的目标标签,输入gae_app——这个标签是Google自动给所有App Engine标准环境实例打上的,能精准覆盖你的四个服务
    • 来源过滤条件:选择指定的来源标签,同样输入gae_app,这样所有来自App Engine内部实例的流量都会被放行;如果你想更精准,也可以选择指定的服务账号,逐个添加四个服务对应的服务账号(默认是[项目ID]@appspot.gserviceaccount.com,自定义服务账号则是[服务名]@[项目ID].iam.gserviceaccount.com
    • 协议和端口:如果服务没有特殊端口限制,选允许全部即可;如果只需要HTTPS通信,就指定tcp:443
  • 最后保存这个规则

3. 验证配置效果

配置完成后,你可以在其中一个服务内调用另一个服务的App Engine域名(比如https://[服务ID]-dot-[项目ID].appspot.com)测试,应该能正常访问;而从外部(比如本地浏览器)尝试访问任何服务,都会被防火墙直接阻断。

另外要注意:如果你的服务绑定了自定义域名,只要防火墙规则拒绝了外部IP流量,自定义域名的外部访问也会被拦截,无需额外配置。

内容的提问来源于stack exchange,提问作者user1511956

火山引擎 最新活动