google-app-engine - 无法为应用引擎设置特定的防火墙规则
问题描述
我们在为 GCP 上的不同应用引擎服务设置正确的防火墙规则时遇到问题,因为这似乎是不可能的。
我们的问题很简单:我们有一个默认的应用程序引擎服务,它应该可以公开访问并充当网关,而所有其他服务都只是内部的,并且托管在同一个 GCP 项目上。
我们尝试在 VPC 防火墙部分设置自定义网络标签和规则,但所有这些都被应用引擎防火墙否决。遗憾的是,最新版本不允许按服务配置。
你知道一个简单的方法来做到这一点吗?我们现在唯一的解决方案是将网关放在计算引擎或另一个 GCP 项目中。
解决方案
鉴于您使用的是 App Engine Flexible,您可以通过更改配置文件中的网络设置来设置app.yaml
运行服务的网络。在您的情况下,由于您有一组您不想访问的实例,以及一个将充当网关的实例,您可以执行以下操作:
创建两个不同的网络,并为您认为方便的区域中的每个网络创建一个子网。此外,请确保启用
Private Google access
,这样您就可以始终连接到 GCP API,而无需创建新的防火墙规则。您可以将子网 IP 地址范围设置为任何值,只要它尚未在您的项目中使用10.0.0.0/9
,例如我使用过的。确保两个网络的子网区域相同。在您不希望来自 GCP 外部的流量的网络中,创建防火墙规则以拒绝所有进入网络的流量。
app.yaml
通过添加以下内容在您的服务中配置文件:network: instance_tag: TAG_NAME name: NETWORK_NAME subnetwork_name: SUBNETWORK_NAME
您的网关实例应该具有允许入口流量的网络,而其余的服务是您创建先前防火墙规则的网络
NETWORK_NAME
。可以是你想给这台机器的任何标签,我建议你为两组服务中的每一个使用一个唯一的标签SUBNETWORK_NAME
。TAG_NAME
重新部署您的服务。
现在您应该能够仅发送充当网关的服务的流量,而网关能够连接到其余服务,因为您Private Google access
在第一点启用了。
推荐阅读
- javascript - 一个 Javascript 过滤器按钮,帮助完成它吗?
- vb.net - 如何在网络浏览器中收集和保存所有图像?VB.NET
- selenium-webdriver - 如何使用夜间构建配置 Selenium c#(SpecFlow、Nunit、DotnetProject)
- python - 最小化同一函数定义同步和异步之间的重复
- python-3.x - 为什么我的程序抛出异常'xyz'不是一个包?
- typescript - 使用打字稿获取字段类型而不创建实例
- c# - SpecFlow - StepArgumentTransformation System.InvalidCastException:“对象必须实现 IConvertible。”
- sql - SQL 查询——跨多列出现的 AVG
- python - 如何使两个 Python Tornado websocket 通道在不同的 URL 上可用
- javascript - 为什么 V8 和 spidermonkey 似乎都没有展开静态循环?