使用 terraform 应用时,GCP App Engine 防火墙未反映在 GCP 控制台上

GCP App Engine Firewall not reflected on GCP console when applied using terraform

我正在使用 terraform 导入现有 GCP App Engine Resource firewall rules 的状态,以便稍后可以使用 terraform 管理防火墙规则。还计划在 priority 999.

之上再添加一条规则

我使用以下命令导入

terraform import google_app_engine_firewall_rule.newrule <project>/1000

之后我执行了 terraform show 来识别现有资源的状态并从中创建了 main.tf。我现有的规则如下

 PRIORITY    ACTION     SOURCE_RANGE          DESCRIPTION
 1000        DENY     X.X.X.X/32
 2147483647  ALLOW           *                 The default action.

main.tf添加新防火墙信息后,文件如下

  # google_app_engine_firewall_rule.default:
  resource "google_app_engine_firewall_rule" "default" {
    action       = "ALLOW"
    description  = "The default action."
    priority     = 2147483647
    project      = "<<project>>"
    source_range = "*"

  timeouts {}
 }

 # google_app_engine_firewall_rule.newrule:
 resource "google_app_engine_firewall_rule" "newrule" {
     action       = "DENY"
     priority     = 1000
     project      = "<<project>>"
     source_range = "X.X.X.X/32"

      timeouts {}
    }

 resource "google_app_engine_firewall_rule" "newrule1" {
     action       = "DENY"
     priority     = 999
     project      = "<<project>>"
     source_range = "X.X.X.X/32"

     timeouts {}
   }

terraform plan 没有显示错误并且 terraform apply 执行成功。使用 gcloud 命令验证看起来规则已成功添加。下面输出的第一条规则 priority 999.

    $ gcloud app firewall-rules list
     PRIORITY    ACTION  SOURCE_RANGE           DESCRIPTION
     999         DENY    X.X.X.X/32
     1000        DENY    X.X.X.X/32
    2147483647   ALLOW       *                 The default action.

但是当我使用 GCP-console 从前端检查它时,我找不到规则。还是老规矩。

   PRIORITY     ACTION  SOURCE_RANGE           DESCRIPTION
     1000        DENY    X.X.X.X/32
    2147483647   ALLOW       *                 The default action.

请澄清此行为。

当我在云 Shell 中使用 terraform apply 应用您的 main.tf 文件时,它向我显示了以下错误

Error: Error creating FirewallRule: googleapi: Error 400: Cannot add rule at priority 2147483647. The priority for new rules must be less than the priority 2
147483647 for the Default Action.

当我将优先级更改为147483646时,它已成功应用。

这个问题似乎与 browser 刷新有关。我在 App Engine Dashboard 的不同菜单项之间浏览,认为它也会刷新 firewall 页面,但事实并非如此。当我从 browser 刷新它时,新的 firewall rules 被反映出来。

此外,当我使用 gcloud 命令添加新的防火墙规则时,如下所示,为了将其反映在 GUI Console 中,我需要执行 browser refresh

  gcloud app firewall-rules create 997 --action=allow --source-range=35.X.X.X/32

可能 GUI 中的刷新按钮会有帮助