当应用程序引擎服务具有拒绝 * 防火墙规则且仅允许通过 1 个计算引擎访问时的应用程序引擎/任务队列

问题描述 投票:0回答:2

我有一个 django 应用程序作为应用程序引擎运行,这是一项我只希望人们通过我的 VPN 访问的服务,所以我为我的应用程序制定了一些防火墙规则

否认* 允许 0.1.0.1 允许 0.1.0.2 允许0.1.0.2/32 允许(运行VPN服务的计算引擎的IP)

但现在我必须每天运行一些代码,我首先做的是,只需使用云调度程序来调用我的应用程序引擎的端点,效果很好!直到通话时间太长,10 分钟后超时。

然后我阅读了有关云任务的内容,并发现我必须创建一个推送队列,这样我就做到了。

我现在在云调度程序中有 1 个 cron 作业,每天调用一个端点,然后将内容(分成更小的部分)添加到推送队列中。

问题来了......

我的推送队列现在包含很多任务,每个任务都尝试前往应用程序引擎上的端点来完成其部分工作,但获得状态:“PERMISSION_DENIED”。

我尝试删除防火墙规则(拒绝*),它似乎是这样工作的。我似乎找不到任何方法来允许推送队列访问应用程序引擎,并且该服务不是我想要公开的

google-cloud-platform google-app-engine google-cloud-scheduler google-cloud-tasks google-cloud-task-queue
2个回答
0
投票

首先,我们需要允许 IP 范围

0.1.0.2/32
,因为它是 App Engine 用于请求的范围(您已经有规则)[1][2]。

您可以做的是为该 IP 设置较高的优先级,为

Deny *
[3] 设置较低的优先级。

防火墙规则优先级是 0 到 65535 之间的整数(含 0 和 65535)。较小的整数表示较高的优先级。如果您在创建规则时未指定优先级,则会为其分配优先级 1000。

[1]。 https://cloud.google.com/appengine/docs/standard/understanding-firewalls#allowing_incoming_requests_from_your_services

[2]。 https://cloud.google.com/tasks/docs/creating-appengine-tasks#firewall_rules

[3]。 https://cloud.google.com/firewall/docs/firewalls#priority_order_for_firewall_rules


0
投票

1)

如果您可以创建任务,App Engine 任务(这意味着它们由您的 App Engine 应用程序调用和运行),那么根据 文档,您只需要 2 个防火墙规则

  1. 允许(运行VPN服务的计算引擎的IP)

  2. 否认*

这是因为文档说

使用 App Engine HTTP 的 Cloud Scheduler 作业以及 Cloud Tasks(包括 App Engine 任务队列)0.1.0.2/32 中的 App Engine 任务,如果设置为拒绝,则绕过默认防火墙规则

粗体部分表示来自 Cloud Tasks 中 App Engine 任务的流量不会被

deny * default rule

阻止

您也可以在这里看到

这意味着,如果您将默认规则设置为拒绝,则发往 App Engine 标准环境的某些服务的请求不会被阻止。 这些都是应用程序自己的配置中请求的流量类型,或从同一应用程序发送的流量。以这种方式绕过防火墙规则的请求还包括 Cloud Tasks 中的 App Engine 任务(包括 App Engine 任务队列)。

2)

如果您的任务已经是 App Engine 任务,仍然尝试使用我提到的 2 个防火墙规则,看看是否可以解决问题

© www.soinside.com 2019 - 2024. All rights reserved.