使用 VPC 限制对应用引擎灵活服务的访问时出现问题

使用 VPC 限制对应用引擎灵活服务的访问时出现问题

我正在尝试使用 VPC 防火墙规则限制对具有多项服务的项目中的特定 App Engine Flex 服务的访问。我使用自动子网创建和全局动态路由创建了一个名为“vpc”的 VPC 网络。接下来,我使用以下 yaml 文件(名称略有更改)部署了我的应用程序:

runtime: custom
env: flex
service: someservice
manual_scaling:
    instances: 1
resources:
    cpu: 1
    memory_gb: 4.0
    disk_size_gb: 10
beta_settings:
    cloud_sql_instances: cloud
network:
    name: vpc

如您所见,我在 yaml 文件中指定了一个网络以在 vpc 中运行应用程序。然后,我在 VPC 中创建了两个防火墙规则,以仅允许访问特定 IP。我首先创建了一个名为“deny”的防火墙规则,以拒绝所有 IP 范围访问 vpc 网络:

gcloud compute firewall-rules create deny \
    --network vpc \
    --action deny \
    --direction ingress \
    --rules tcp \
    --source-ranges 0.0.0.0/0 \
    --priority 5000

最后,我创建了另一条名为“允许”的规则,以允许单个 IP 地址(例如 192.00.00.11):

gcloud compute firewall-rules create allow \
    --network vpc \
    --action allow \
    --direction ingress \
    --rules tcp \
    --source-ranges 192.00.00.11 \
    --priority 1000

但是,执行上述操作后,我仍然能够从我测试的几乎任何 IP 访问应用引擎服务(使用我手机的数据,并请朋友进行健全性检查)。我做错了什么?任何帮助都非常感谢!

注:类似问题:https://stackoverflow.com/questions/49296666/google-app-engine-firewall-restrict-access-to-all-services-but-the-default-one

答案1

我怀疑已经有一个更宽松的防火墙规则,或者优先级比你手动创建的“全部拒绝”更高。默认情况下,任何创建的防火墙规则的优先级都是 1000,防火墙规则优先级是 0 到 65535 之间的整数(含)。整数越小,优先级越高。如果在创建规则时未指定优先级,则该规则的优先级为 1000。优先级 1000 比优先级为 5000 的“全部拒绝”规则的优先级更高。

您至少有几个选项可以测试这一点:

  • 一种方法是将“拒绝所有”规则设置为更高的优先级(例如 900),然后重新测试连接,根据需要增加“拒绝所有”优先级,这是一个容易实现但不是很好的选择。

  • 第二,从云平台控制台中选择 VPC 网络 -> VPC 网络。单击/选择您正在使用的 VPC 的名称,然后选择“防火墙规则”选项卡。这将列出此 VPC 当前活动的所有防火墙规则。浏览列表并查找优先级更高(整数值更低)的规则,该规则比“拒绝所有”规则更宽松(甚至允许所有)。然后删除该规则或将优先级更改为低于“拒绝所有”规则的优先级。

答案2

根据文档,您的源范围必须采用 CIDR 格式,否则隐含 0.0.0.0 - 您的源地址不是采用 CIDR 表示法 --source-ranges 192.00.00.11 不是范围

abcd/32

或 abcd/255.255.255.255 - 取决于 glcoud 如何实现

刚刚看了一下,它的实现方式如下 --source-ranges 192.0.0.11/32

相关内容