无法为应用程序引擎设置特定的防火墙规则

时间:2019-01-28 09:31:48

标签: google-app-engine google-cloud-platform firewall

我们似乎无法为GCP上的不同应用引擎服务设置正确的防火墙规则,因为这似乎是不可能的。

我们的问题非常简单:我们有一个默认的app-engine服务,该服务应可公开访问并充当网关,而所有其他服务都仅在内部且托管在同一GCP项目中。

我们试图在VPC防火墙部分设置自定义网络标记和规则,但所有这些均被应用引擎防火墙否决。遗憾的是,最新版本不允许按服务配置。

您知道这样做的简单方法吗?到目前为止,我们唯一的解决方案是将网关放在计算引擎或另一个GCP项目中。

1 个答案:

答案 0 :(得分:0)

鉴于您正在使用App Engine Flexible,您可以通过更改Network Settings in the app.yaml configuration file来设置您的服务将在其上运行的网络。对于您的情况,由于您有一组不希望到达的实例,而一个实例将充当网关,因此您可以执行以下操作:

  1. Create two different networks,以及您认为方便的区域中每个区域的子网。同样,请确保启用Private Google access,这样您将始终能够连接到GCP API,而无需创建新的防火墙规则。您可以将子网IP地址范围设置为任何项目,只要您的项目中尚未使用它即可,例如,我使用了10.0.0.0/9确保两个网络的子网区域都相同。

  2. 在您不希望来自GCP外部流量的网络中,create a firewall rule将对网络的所有 ingress 流量拒绝。 p>

  3. 通过添加以下内容来配置服务中的app.yaml文件:

    network:
      instance_tag: TAG_NAME
      name: NETWORK_NAME
      subnetwork_name: SUBNETWORK_NAME
    

    您的网关实例应该具有允许进入流量的网络NETWORK_NAMESUBNETWORK_NAME,而其余服务则是您在其中创建了先前防火墙规则的网络。 TAG_NAME可以是您要赋予此机器的任何标签,我建议您为两组服务中的每一个使用唯一的标签。

  4. 重新部署您的服务。

现在,您应该只可以发送充当网关的服务的流量,而网关却可以连接到其余服务,因为在第一点上启用了Private Google access